#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH110X.h>
#define i2c_Address 0x3c // Dirección I2C de la pantalla OLED
#define SCREEN_WIDTH 128 // Ancho de la pantalla OLED
#define SCREEN_HEIGHT 64 // Alto de la pantalla OLED
#define OLED_RESET -1
#define B_Peaton 2 // Botón de configuración
#define LED_BPP 11 // LED PASO PEATONAL
#define LED_verdeP 10
#define LED_rojoP 9
#define LED_verdeVs 8
#define LED_amaVs 7
#define LED_rojoVs 6
#define LED_verdeVp 5
#define LED_amaVp 4
#define LED_rojoVp 3
Adafruit_SH1106G display = Adafruit_SH1106G(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// Variables para los botones
bool last_state = HIGH;
bool current_state = HIGH;
int tRESET=3;
int tVERDE1=18;
int tAMAR1=4;
int tVERDE2=10;
int tAMAR2=3;
int tVERDE3=5;
int tROJO=2;
int casos=0;
void setup() {
Wire.begin(); // Inicializa la comunicación I2C
Serial.begin(9600);
display.begin(i2c_Address, true);
pinMode(B_Peaton, INPUT_PULLUP);
pinMode(LED_verdeP, OUTPUT);
digitalWrite(LED_BPP, LOW);
pinMode(LED_verdeP, OUTPUT);
digitalWrite(LED_verdeP, LOW);
pinMode(LED_verdeP, OUTPUT);
digitalWrite(LED_verdeP, LOW);
pinMode(LED_verdeP, OUTPUT);
digitalWrite(LED_verdeP, LOW);
}
void loop() {
display.clearDisplay();
unsigned long currentMillis = millis();
Serial.print( "Time:" );
Serial.print( currentMillis );
if(currentMillis>3000){
casos=0;
}
switch(casos)
{
case 0:
digitalWrite(LED_verdeVp, HIGH);
digitalWrite(LED_verdeVp, LOW);
digitalWrite(LED_verdeVp, LOW);
digitalWrite(LED_verdeVp, LOW);
digitalWrite(LED_verdeVp, LOW);
digitalWrite(LED_verdeVp, HIGH);
digitalWrite(LED_verdeVp, HIGH);
break;
}
display.display();
delay(20); // Retardo para evitar múltiples lecturas
}