dahngeek
2/25/2017 - 2:33 AM

Disquetera musical sin java y sin plugins extras.

Disquetera musical sin java y sin plugins extras.

//Este codigo es solo para simplificar el uso de disqueteras para producir tonos, no es la mejor manera pero se simplifica
//Pin 11 & 12 de la disquetera. unidos ambos juntos.
//Pin 17 disquetera > Tierra del Arduino (Gnd)
//Pin 18 disquetera > Pin 9 del Arduino (Este controla la dirección)
//Pin 19 disquetera > Tierra del Arduino
//Pin 20 disquetera > Pin 8 del Arduino (Este pin recibe los pulsos.)

// Ojo: Todas las notas están en ingles, excepto la "A" que esta escritacon el nombre italiano "LA" esto
// debido a que los pines A0 y A1 son pines analogicos de alrduino
// (Abemol se llama Ab y no LAb)
#define	C0 16.35
#define	Db0	17.32
#define	D0	18.35
#define	Eb0	19.45
#define	E0	20.60
#define	F0	21.83
#define	Gb0	23.12
#define	G0	24.50
#define	Ab0	25.96
#define	LA0	27.50
#define	Bb0	29.14
#define	B0	30.87
#define	C1	32.70
#define	Db1	34.65
#define	D1	36.71
#define	Eb1	38.89
#define	E1	41.20
#define	F1	43.65
#define	Gb1	46.25
#define	G1	49.00
#define	Ab1	51.91
#define	LA1	55.00
#define	Bb1	58.27
#define	B1	61.74
#define	C2	65.41
#define	Db2	69.30
#define	D2	73.42
#define	Eb2	77.78
#define	E2	82.41
#define	F2	87.31
#define	Gb2	92.50
#define	G2	98.00
#define	Ab2	103.83
#define	LA2	110.00
#define	Bb2	116.54
#define	B2	123.47
#define	C3	130.81
#define	Db3	138.59
#define	D3	146.83
#define	Eb3	155.56
#define	E3	164.81
#define	F3	174.61
#define	Gb3	185.00
#define	G3	196.00
#define	Ab3	207.65
#define	LA3	220.00
#define	Bb3	233.08
#define	B3	246.94
#define	C4	261.63
#define	Db4	277.18
#define	D4	293.66
#define	Eb4	311.13
#define	E4	329.63
#define	F4	349.23
#define	Gb4	369.99
#define	G4	392.00
#define	Ab4	415.30
#define	LA4	440.00
#define	Bb4	466.16
#define	B4	493.88
#define	C5	523.25
#define	Db5	554.37
#define	D5	587.33
#define	Eb5	622.25
#define	E5	659.26
#define	F5	698.46
#define	Gb5	739.99
#define	G5	783.99
#define	Ab5	830.61
#define	LA5	880.00
#define	Bb5	932.33
#define	B5	987.77
#define	C6	1046.50
#define	Db6	1108.73
#define	D6	1174.66
#define	Eb6	1244.51
#define	E6	1318.51
#define	F6	1396.91
#define	Gb6	1479.98
#define	G6	1567.98
#define	Ab6	1661.22
#define	LA6	1760.00
#define	Bb6	1864.66
#define	B6	1975.53
#define	C7	2093.00
#define	Db7	2217.46
#define	D7	2349.32
#define	Eb7	2489.02
#define	E7	2637.02
#define	F7	2793.83
#define	Gb7	2959.96
#define	G7	3135.96
#define	Ab7	3322.44
#define	LA7	3520.01
#define	Bb7	3729.31
#define	B7	3951.07
#define	C8	4186.01
#define	Db8	4434.92
#define	D8	4698.64
#define	Eb8	4978.03
// DURATION OF THE NOTES 
#define BPM 120    //  you can change this value changing all the others
#define H 2*Q //half 2/4
#define Q 60000/BPM //quarter 1/4 
#define E Q/2   //eighth 1/8
#define S Q/4 // sixteenth 1/16
#define W 4*Q // whole 4/4
int i;
int t;
bool estadopin = false;

void setup() {    
//Configuramos los pines
pinMode(8, OUTPUT);   
pinMode(9, OUTPUT);       
digitalWrite(9,LOW);

}

// El loop se repite infinitamente.
void loop() {

//OJO ====== ESTA ES LA CANCION POR DEFAULT, TU PUEDES ARMAR LA TUYA CON LA FUNCION tono
//tono(pin, note, duration)
    tono(8,LA3,Q); 
    delay(1+Q); //Separar cada nota.
    tono(8,LA3,Q);
    delay(1+Q);
    tono(8,LA3,Q);
    delay(1+Q);
    tono(8,F3,E+S);
    delay(1+E+S);
    tono(8,C4,S);
    delay(1+S);
    
    tono(8,LA3,Q);
    delay(1+Q);
    tono(8,F3,E+S);
    delay(1+E+S);
    tono(8,C4,S);
    delay(1+S);
    tono(8,LA3,H);
    delay(1+H);
    
    tono(8,E4,Q); 
    delay(1+Q); 
    tono(8,E4,Q);
    delay(1+Q);
    tono(8,E4,Q);
    delay(1+Q);
    tono(8,F4,E+S);
    delay(1+E+S);
    tono(8,C4,S);
    delay(1+S);
    
    tono(8,Ab3,Q);
    delay(1+Q);
    tono(8,F3,E+S);
    delay(1+E+S);
    tono(8,C4,S);
    delay(1+S);
    tono(8,LA3,H);
    delay(1+H);
    
    tono(8,LA4,Q);
    delay(1+Q);
    tono(8,LA3,E+S);
    delay(1+E+S);
    tono(8,LA3,S);
    delay(1+S);
    tono(8,LA4,Q);
    delay(1+Q);
    tono(8,Ab4,E+S);
    delay(1+E+S);
    tono(8,G4,S);
    delay(1+S);
    
    tono(8,Gb4,S);
    delay(1+S);
    tono(8,E4,S);
    delay(1+S);
    tono(8,F4,E);
    delay(1+E);
    delay(1+E);//PAUSE
    tono(8,Bb3,E);
    delay(1+E);
    tono(8,Eb4,Q);
    delay(1+Q);
    tono(8,D4,E+S);
    delay(1+E+S);
    tono(8,Db4,S);
    delay(1+S);
    
    tono(8,C4,S);
    delay(1+S);
    tono(8,B3,S);
    delay(1+S);
    tono(8,C4,E);
    delay(1+E);
    delay(1+E);//PAUSE QUASI FINE RIGA
    tono(8,F3,E);
    delay(1+E);
    tono(8,Ab3,Q);
    delay(1+Q);
    tono(8,F3,E+S);
    delay(1+E+S);
    tono(8,LA3,S);
    delay(1+S);
    
    tono(8,C4,Q);
    delay(1+Q);
     tono(8,LA3,E+S);
    delay(1+E+S);
    tono(8,C4,S);
    delay(1+S);
    tono(8,E4,H);
    delay(1+H);
    
     tono(8,LA4,Q);
    delay(1+Q);
    tono(8,LA3,E+S);
    delay(1+E+S);
    tono(8,LA3,S);
    delay(1+S);
    tono(8,LA4,Q);
    delay(1+Q);
    tono(8,Ab4,E+S);
    delay(1+E+S);
    tono(8,G4,S);
    delay(1+S);
    
    tono(8,Gb4,S);
    delay(1+S);
    tono(8,E4,S);
    delay(1+S);
    tono(8,F4,E);
    delay(1+E);
    delay(1+E);//PAUSE
    tono(8,Bb3,E);
    delay(1+E);
    tono(8,Eb4,Q);
    delay(1+Q);
    tono(8,D4,E+S);
    delay(1+E+S);
    tono(8,Db4,S);
    delay(1+S);
    
    tono(8,C4,S);
    delay(1+S);
    tono(8,B3,S);
    delay(1+S);
    tono(8,C4,E);
    delay(1+E);
    delay(1+E);//PAUSE QUASI FINE RIGA
    tono(8,F3,E);
    delay(1+E);
    tono(8,Ab3,Q);
    delay(1+Q);
    tono(8,F3,E+S);
    delay(1+E+S);
    tono(8,C4,S);
    
    tono(8,LA3,Q);
     tono(8,F3,E+S);
    tono(8,C4,S);
    tono(8,LA3,H);

    
    delay(2*H);
    
}


//Funcion tono.
void tono(byte pin,byte hertz, byte tiempo){
 
    t = 0;
    while(t < tiempo) {
      t++;
      tone(pin,hertz,tiempo);
        if (i < 158){
            i++;
        } else {
            if (estadopin) {
                digitalWrite(9,LOW);
                estadopin = false;
            } else {
                digitalWrite(9, HIGH);
                estadopin = true;
            }
            i=0;
        }
    }
}