Neste exemplo, faremos um teclado virtual. As teclas do computador emitirão comandos para que o alto-falante reproduza as notas musicais. É possÃvel realizar essa comunicação utilizando o monitor serial. Esquema de Montagem Programação //Teclado Musical Virtual //www.professorakeila.com.br #define NOTA_DO 262 /*262 Hz e a frequencia da nota musical*/ #define NOTA_RE 294 #define NOTA_MI 330 #define NOTA_FA 349 #define NOTA_SOL 392 #define NOTA_LA 440 #define NOTA_SI 494 int pinoAudio = 10; int nota; void setup() { Serial.begin(9600); /*Comunicacao entre o teclado e o circuito 9600 ms*/ Serial.flush(); /*esvaziar o buffer*/ pinMode(pinoAudio, OUTPUT); } void loop() { if (Serial.available()>0){ /*O codigo funciona apenas caso o usuario digite algo*/ nota=Serial.read(); Serial.println(nota); /*A variavel nota para receber qual tecla foi pressionada*/ if (nota==49){ /* nota sera emitida quando a tecla 1 for apertada */ tone(pinoAudio, NOTA_DO); delay(500); noTone(pinoAudio); } if (nota==50){ /* nota sera emitida quando a tecla 2 for apertada */ tone(pinoAudio, NOTA_RE); delay(500); noTone(pinoAudio); } if (nota==51){ /* nota sera emitida quando a tecla 3 for apertada */ tone(pinoAudio, NOTA_MI); delay(500); /*Um atraso de 500 ms*/ noTone(pinoAudio); } if (nota==52){ /* nota sera emitida quando a tecla 4 for apertada */ tone(pinoAudio, NOTA_FA); delay(500); noTone(pinoAudio); } if (nota==53){ /* nota sera emitida quando a tecla 5 for apertada */ tone(pinoAudio, NOTA_SOL); delay(500); noTone(pinoAudio); } if (nota==54){ /* nota sera emitida quando a tecla 6 for apertada */ tone(pinoAudio, NOTA_LA); delay(500); noTone(pinoAudio); } if (nota==55){ /* nota sera emitida quando a tecla 7 for apertada */ tone(pinoAudio, NOTA_SI); delay(500); noTone(pinoAudio); } Serial.flush(); } }
Faça um comentário!