Semáforo de coches con semáforo de peatones
Monta el circuito y programa un semáforo de coches con otro de peatones que pueden seguir la siguiente secuencia:
- Encender rojoPeatones
- Esperar 1000 ms (por si los peatones aún están cruzando la calle)
- Apagar rojoCoches y encender verdeCoches
- Esperar 6000 ms.
- Apagar verdeCoches y encender amarilloCoches
- Esperar 3000 ms
- Apagar amarilloCoches y encender rojoCoches.
- Esperar 1000 ms (por si hay coches aún cruzando en rojo)
- Apagar rojoPeatones y encender verdePeatones.
- Repetir 6 veces el sonido para que los ciegos sepan que pueden pasar:
- zumbador, tono La 4 (440Hz) durante 250 milisegundos
- esperar 250 milisegundos
- zumbador, tono Sol# 4 (415.31 Hz) durante 250 milisegundos
- esperar 1000 milisegundos
- Repetir 4 veces el parpadeo del verde de los peatones antes de pasar a rojo:
- Apagar verdePeatones y esperar 250 milisegundos
- Encender verdePeatones
- zumbador a 440Hz durante 250 ms
- esperar 750 ms
- Esperar 1 segundo
- Apagar verdePeatones
https://piensa3d.com/tutorial-programacion-arduino-semaforo-coches-peatones/
https://www.youtube.com/watch?v=oh-g4zOvbXc
// Semáforo para coches y peatones ARDUINO
int carRed = 12 ;
int carYellow = 11;
int carGreen = 10;
int peaRed = 9;
int peaGreen = 8;
int button = 2;
int TiempoCruce = 5000;
unsigned long TiempoCambio = 0;
void setup(){
pinMode(carRed, OUTPUT);
pinMode(carYellow, OUTPUT);
pinMode(carGreen, OUTPUT);
pinMode(peaRed, OUTPUT);
pinMode(peaGreen, OUTPUT);
pinMode(button, INPUT);
digitalWrite(carGreen, HIGH);
digitalWrite(peaRed, HIGH);
}
void loop() {
int estado = digitalRead(button);
if (estado == HIGH && (millis() - TiempoCambio) > 5000 ){
cambioLuz();
}
}
void cambioLuz() {
digitalWrite(carGreen,LOW);
digitalWrite(carYellow, HIGH);
delay(2000);
digitalWrite(carYellow, LOW);
digitalWrite(carRed, HIGH);
delay(1000);
digitalWrite(peaRed, LOW);
digitalWrite(peaGreen, HIGH);
delay(TiempoCruce);
for (int x=0; x<10; x++) {
digitalWrite(peaGreen, HIGH);
delay(250);
digitalWrite(peaGreen, LOW);
delay(250);
}
digitalWrite(peaRed, HIGH);
delay(500);
digitalWrite(carYellow, HIGH);
digitalWrite(carRed, LOW);
delay(1000);
digitalWrite(carGreen, HIGH);
digitalWrite(carYellow, LOW);
TiempoCambio = millis();
}
No hay comentarios:
Publicar un comentario