// Ejemplo - Semaforo coches sencillo
#include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int ledPin_verde = 21; // GPIO del led verde
const int ledPin_amarillo = 22; // GPIO del led amarillo
const int ledPin_rojo = 23; // GPIO del led rojo
// se llama una única vez al inicio del programa antes de comenzar el bule "loop"
void setup()
{
lcd.init();
lcd.backlight();
lcd.setCursor(1,0);
lcd.print("Bienvenidos");
lcd.setCursor(1,1);
lcd.print("Semaforizacion");
pinMode(ledPin_verde, OUTPUT);
pinMode(ledPin_amarillo, OUTPUT);
pinMode(ledPin_rojo, OUTPUT);
//mode: INPUT, OUTPUT, or INPUT_PULLUP
pinMode(ledPin_verde, OUTPUT);
pinMode(ledPin_amarillo, OUTPUT);
pinMode(ledPin_rojo, OUTPUT);
Serial.begin(115200);
delay(1000);
Serial.println("Simulador de Semaforo");
}
// funcion de código que se repite indefinidamente
void loop()
{
Serial.println("Semáforo en verde... 5 segundos");
digitalWrite(ledPin_verde, LOW);
digitalWrite(ledPin_amarillo, LOW);
digitalWrite(ledPin_rojo, HIGH);
delay(5000);
Serial.println("Semáforo se va a poner en amarillo... ");
digitalWrite(ledPin_verde, LOW);
digitalWrite(ledPin_amarillo, HIGH);
digitalWrite(ledPin_rojo, HIGH);
delay(2000);
Serial.println("Semáforo en rojo... ");
digitalWrite(ledPin_verde, HIGH);
digitalWrite(ledPin_amarillo,LOW);
digitalWrite(ledPin_rojo, LOW);
delay(5000);
Serial.println("Semáforo se va a poner en amarillo... ");
digitalWrite(ledPin_verde, HIGH);
digitalWrite(ledPin_amarillo, HIGH);
digitalWrite(ledPin_rojo, LOW);
delay(2000);
// se vuelve a llamar a loop => arriba de la función
lcd.noDisplay();
delay(1000);
lcd.display();
delay(1000);
digitalWrite(ledPin_verde, HIGH);
lcd.clear();
lcd.setCursor(1,0);
digitalWrite('led', HIGH);
lcd.print("Avance");
digitalWrite(ledPin_amarillo, LOW);
digitalWrite(ledPin_rojo, LOW);
delay(5000);
digitalWrite(ledPin_rojo, LOW);
digitalWrite(ledPin_amarillo, HIGH);
lcd.clear();
lcd.setCursor(1,0);
digitalWrite('led', HIGH);
lcd.print("Espere");
digitalWrite(ledPin_verde, HIGH);
delay(1500);
digitalWrite(ledPin_verde, LOW);
digitalWrite(ledPin_amarillo, LOW);
digitalWrite(ledPin_rojo, HIGH);
lcd.clear();
lcd.setCursor(1,0);
digitalWrite('led', HIGH);
lcd.print("Pare");
delay(10000);
}