Simplificar Código, paso peatonal

El problema es el siguiente: Crear un paso peatonal en Arduino, habrá 3 semáforos acomodados de la siguiente forma

Cuando el led rojo del semáforo 3 se encienda el led verde del semáforo 1 y 2 se pondrá en verde, los tres semáforos deberán de pasar a amarillo al mismo tiempo.

El código que llevo hasta ahora es el siguiente:

int rojo1 = 9;
int amarillo1 = 8;
int verde1 = 7;

int rojo2 = 13;
int amarillo2 = 12;
int verde2 = 11;

int rojo3 = 5;
int amarillo3 = 4;
int verde3 = 3;

void setup () {
  pinMode(rojo1, OUTPUT);
  pinMode(amarillo1, OUTPUT);
  pinMode(verde1, OUTPUT);
  
  pinMode(rojo2, OUTPUT);
  pinMode(amarillo2, OUTPUT);
  pinMode(verde2, OUTPUT);
  
  pinMode(rojo3, OUTPUT);
  pinMode(amarillo3, OUTPUT);
  pinMode(verde3, OUTPUT);
}

void loop () {

  digitalWrite(rojo1, LOW);
  digitalWrite(verde1, HIGH);
  digitalWrite(rojo2, HIGH);
  digitalWrite(rojo3, HIGH);
  
  delay(3000);
  
  digitalWrite(rojo2, LOW);
  digitalWrite(rojo3, LOW);
  digitalWrite(verde1, LOW);
  digitalWrite(amarillo1, HIGH);
  digitalWrite(amarillo2, HIGH);
  digitalWrite(amarillo3, HIGH);
  
  delay(1000);
  
  digitalWrite(amarillo1, LOW);
  digitalWrite(amarillo2, LOW);
  digitalWrite(amarillo3, LOW);
  
  digitalWrite(rojo1, HIGH);
  digitalWrite(verde2, HIGH);
  digitalWrite(verde3, HIGH);
 
  delay(3000);
  
  digitalWrite(rojo1, LOW);
  digitalWrite(verde2, LOW);
  digitalWrite(verde3, LOW);
  
}

Lo que busco es poder simplificarlo lo mas posi9ble

Crea algunas funciones

void loop () { 
  v_r_r (1);
  delay(3000);
  v_r_r (0);
  Amarillos (1);
  delay(1000);
  Amarillos (0);
  r_v_v (1);
  delay(3000);
  r_v_v (0);
}

void Amarillos ( int valor) {
  digitalWrite(amarillo1, valor);
  digitalWrite(amarillo2, valor);
  digitalWrite(amarillo3, valor);
}

void r_v_v ( int valor) {
  digitalWrite(rojo1, valor);
  digitalWrite(verde2, valor);
  digitalWrite(verde3, valor);
}

void v_r_r ( int valor) {
  digitalWrite(verde1, valor);
  digitalWrite(rojo2, valor);
  digitalWrite(rojo3, valor);
}

Un paso peatonal requiere consultar el pulsador, con delay() como lo van a conseguir?

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.