ARDUINO 017 SEMÁFORO PARA COCHES Y PEATONES



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