Estoy haciendo un xilófono que funcione desde una app, mi problema es que las notas quedan sonando y no he logrado hacer que al presionar una nota suene solo una vez como en un piano, me seria de gran ayuda alguna opinión.
PD: Ya he usado la función noTone y aun así persiste mi inconveniente.
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // pin 11 con RX de bt, pin10 con TX bt
char valor;
//Notas musicales
//const float c = 261.63; // Do (Octava 0)
// const float d = 293.66; // Re (Octava 0)
// const float e = 329.63; // Mi (Octava 0)
// const float f = 349.23; // Fa (Octava 0)
// const float g = 392.00; // Sol (Octava 0)
void setup() {
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
mySerial.begin(9600);
pinMode(8, OUTPUT);
}
void loop() {
if (mySerial.available()) {
//Serial.write(mySerial.read());
valor=mySerial.read();
}
if (valor=='0'){
tone(8,261,500);
delay(1000);
}
if(valor=='1'){
tone(8,293,500);
delay(1000);
}
if (valor=='2'){
tone(8,311,500);
delay(1000);
}
if(valor=='3'){
tone(8,349,500);
delay(1000);
}
if (valor=='4'){
tone(8,392,500);
delay(1000);
}
if(valor=='5'){
tone(8,440,500);
delay(1000);
}
if (valor=='6'){
tone(8,493,500);
delay(1000);
}
if(valor=='7'){
tone(8,261,500);
delay(1000);
tone(8,293,500);
delay(1000);
tone(8,311,500);
delay(1000);
}
}//fin void