Estoy haciendo un sketch para arduino que se trata del control de un semáforo, tanto el de vehículos como el de peatones, este punto lo tengo resuelto, pero le quiero añadir sonido para invidentes, para generarlo, no tengo problema , lo hago con tone (speaker), pero no consigo pararlo. "noTone" no funciona. ¿Que hago mal?.
class Button extends com.muvium.compatibility.arduino.Arduino{//Automatically Added VBB Framework Code - do not remove
int ledPin1 = 1; // LED en el pin digital 1
int ledPin2 = 2; // LED en el pin digital 2
int ledPin3 = 3; // LED en el pin digital 3
int ledPin4 = 4; // LED en el pin digital 4
int ledPin5 = 5; // LED en el pin digital 5
int speaker = 8;
void setup() // configura los pines de salida
{
pinMode(ledPin1, OUTPUT); // configura el pin 1 como salida
pinMode(ledPin2, OUTPUT); // configura el pin 2 como salida
pinMode(ledPin3, OUTPUT); // configura el pin 3 como salida
pinMode(ledPin4, OUTPUT); // configura el pin 4 como salida
pinMode(ledPin5, OUTPUT); // configura el pin 5 como salida
pinMode(speaker, OUTPUT);
}
void loop() // inicia el bucle del programa
{
digitalWrite(ledPin3, LOW); // desactiva el LED ROJO
digitalWrite(ledPin1, HIGH); // activa el LED VERDE
digitalWrite(ledPin5, HIGH); // activa el LED ROJO PEATONES
delay(9000); // espera 9 segundos
digitalWrite(ledPin1, LOW); // desactiva el LED VERDE
digitalWrite(ledPin2, HIGH); // activa el LED AMBAR
delay(3000); // espera 3 segundos
digitalWrite(ledPin2, LOW); // desactiva el LED AMBAR
digitalWrite(ledPin3,HIGH); // activa el LED ROJO
delay(1000); // espera 1 segundo
digitalWrite(ledPin5, LOW); // desactiva el LED ROJO PEATONES
delay(250); // espera 1/4 degundo
digitalWrite(ledPin4, HIGH); // activa el LED VERDE PEATONES
**tone (speaker, 5000); **
delay(9000); // espera 9 segundos noTOne(speaker);
for (int i = 0; i<=5; i++) // repetir bucle 5 veces
{
digitalWrite(ledPin4, LOW); //parpadeo LUZ VERDE peatones
delay(500); // espera 1/2 segundo
digitalWrite(ledPin4, HIGH); // parpadeo LUZ VERDE peatones
delay(250); // espera 1/2 segundo
}
digitalWrite(ledPin3, LOW); // desactiva el LED ROJO
digitalWrite(ledPin4, LOW); // desactiva LUZ VERDE peatones
digitalWrite(ledPin5, HIGH); // activa el LED ROJO PEATONES
digitalWrite(ledPin3, HIGH); // activa el LED ROJO
delay(1000); // espera 1 segundo
}
En primer lugar, gracias por la respuesta. En segúndo lugar, no quiero usar el tone solo los 9 segundos, esta allí, como prueba, en realidad lo que necesito es que allí donde está, haga sonido intermitente durante esos nueve segundos, después, en otra parte del sketch el ritmo del "pitido" cambia, pero primero debo solucionar el como detener esa instrucción "tone".
Si quieres que luego haga otro pitido porque no lo defines después?¿ esto es en programación si estas ejecutando un comando a través de un pin y le reasignas otro comando a ese pin se sobrescribe y se ejecuta el segundo comando.
y al segundo si quieres ya le defines un tiempo como te sugirió flico
Mas o menos lo entiendo, y a mi modo, entiendo que no estoy reasignando otro sonido a ese mismo pin. Lo que pretendo es que dentro de un for me genere ese pitido. Se trata de que el pitido vaya al mismo tiempo que el parpadeo de la luz verde de peatones, y lo que me ocurre es que solo suena una vez, en lugar de repetir cinco veces.
for (int i = 0; i<=5; i++) // repetir bucle 5 veces
{
digitalWrite(ledPin4, LOW); //parpadeo LUZ VERDE peatones
delay(500); // espera 1/2 segundo
tone (speaker, 1000, 500);
digitalWrite(ledPin4, HIGH); // parpadeo LUZ VERDE peatones
delay(250); // espera 1/2 segundo