0
Offline
Newbie
Karma: 0
Posts: 18
Arduino rocks
|
 |
« on: January 29, 2011, 03:04:23 pm » |
Buenas tardes:
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?.
En espera de vuestros comentarios.
Saludos Albert
|
|
|
|
« Last Edit: April 29, 2012, 06:13:20 pm by coleoptero »
|
Logged
|
|
|
|
|
0
Offline
Jr. Member
Karma: 0
Posts: 52
Enginyeria Geek
|
 |
« Reply #1 on: January 29, 2011, 04:10:14 pm » |
Hola Albert.
Cuelga el codigo para ayudarte. Si no es dificil de imaginar.
Salut!
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Newbie
Karma: 0
Posts: 18
Arduino rocks
|
 |
« Reply #2 on: January 29, 2011, 04:15:15 pm » |
Aqui lo tienes:
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 } }
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Jr. Member
Karma: 1
Posts: 80
Arduino rocks
|
 |
« Reply #3 on: January 29, 2011, 06:24:34 pm » |
ojo con las mayúsculas: no es lo mismo noTOne(speaker); noTone(speaker); a ver si el fallo es ese.
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Newbie
Karma: 0
Posts: 18
Arduino rocks
|
 |
« Reply #4 on: January 30, 2011, 05:14:51 am » |
No, el problema no es la "O", fue un error al copiar. Deber ser otro. Agradecería si alguien pudiese darme alguna solución.
Saludos Albert
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Edison Member
Karma: 8
Posts: 1040
Arduino rocks
|
 |
« Reply #5 on: January 30, 2011, 08:56:16 am » |
Si solamente quieres usarlo 9 segundos puedes definirlo en el tone, quitando el noTone tone (speaker, 5000, 9000);
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Newbie
Karma: 0
Posts: 18
Arduino rocks
|
 |
« Reply #6 on: January 30, 2011, 12:41:11 pm » |
Buenas tardes:
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".
En espera de vuestros comentarios".
Saludos Albert
|
|
|
|
|
Logged
|
|
|
|
|
Donostia - Spain
Offline
Newbie
Karma: 0
Posts: 14
|
 |
« Reply #7 on: January 30, 2011, 06:06:34 pm » |
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
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Newbie
Karma: 0
Posts: 18
Arduino rocks
|
 |
« Reply #8 on: January 31, 2011, 01:49:19 am » |
Buenos dias:
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
}
|
|
|
|
|
Logged
|
|
|
|
|
|