#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define led1 25 //Led Rojo
#define led2 26 //Led Amarillo
#define led3 19 //Led Naranja
#define led4 18 //Led Verde
#define led5 5 // Led Azul
#define button1 12 //Pulsador Rojo
#define button2 4 //Pulsador Azul
int animacion=1;
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
Serial.begin(115200);
// initialize OLED display with I2C address 0x3C
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("failed to start SSD1306 OLED"));
while (1);
}
//Definir terminales (Entradas/Salidas)
pinMode(25, OUTPUT);
pinMode(26, OUTPUT);
pinMode(19, OUTPUT);
pinMode(18, OUTPUT);
pinMode(5, OUTPUT);
pinMode(12, INPUT);
pinMode(4, INPUT);
}
void loop() {
//Lectura de terminales de entrada
int button1State=digitalRead(button1);
int button2State=digitalRead(button2);
//Cambio de animacion (Pulsador azul)
if (animacion==3 && button2State== LOW){
animacion=0;
delay(200);
}
if (animacion<3 && button2State== LOW){
animacion=animacion+1;
delay(200);
}
//Patrones de encendido de los leds
//Primera animacion
if (animacion==1 && button1State==LOW){
digitalWrite(led1, HIGH);
delay(500);
digitalWrite(led1,LOW);
delay(100);
digitalWrite(led2, HIGH);
delay(500);
digitalWrite(led2,LOW);
delay(100);
digitalWrite(led3, HIGH);
delay(500);
digitalWrite(led3,LOW);
delay(100);
digitalWrite(led4, HIGH);
delay(500);
digitalWrite(led4,LOW);
delay(100);
digitalWrite(led5, HIGH);
delay(500);
digitalWrite(led5,LOW);
delay(100);
}
//Segunda animcion
if (animacion==2 && button1State==LOW){
digitalWrite(led5, HIGH);
delay(200);
digitalWrite(led5,LOW);
delay(100);
digitalWrite(led4, HIGH);
delay(200);
digitalWrite(led4,LOW);
delay(100);
digitalWrite(led3, HIGH);
delay(200);
digitalWrite(led3,LOW);
delay(100);
digitalWrite(led2, HIGH);
delay(200);
digitalWrite(led2,LOW);
delay(100);
digitalWrite(led1, HIGH);
delay(200);
digitalWrite(led1,LOW);
delay(100);
digitalWrite(led5, HIGH);
delay(200);
digitalWrite(led5,LOW);
delay(100);
digitalWrite(led4, HIGH);
delay(200);
digitalWrite(led4,LOW);
delay(100);
digitalWrite(led3, HIGH);
delay(200);
digitalWrite(led3,LOW);
delay(100);
digitalWrite(led2, HIGH);
delay(200);
digitalWrite(led2,LOW);
delay(100);
digitalWrite(led1, HIGH);
delay(200);
digitalWrite(led1,LOW);
delay(100);
}
//Tercera animacion
if (animacion==3 && button1State==LOW){
digitalWrite(led1, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led5, HIGH);
delay(200);
digitalWrite(led1, LOW);
digitalWrite(led3, LOW);
digitalWrite(led5, LOW);
delay(100);
digitalWrite(led2, HIGH);
digitalWrite(led4, HIGH);
delay(200);
digitalWrite(led2,LOW);
digitalWrite(led4,LOW);
delay(100);
digitalWrite(led1, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led5, HIGH);
delay(200);
digitalWrite(led1, LOW);
digitalWrite(led3, LOW);
digitalWrite(led5, LOW);
delay(100);
digitalWrite(led2, HIGH);
digitalWrite(led4, HIGH);
delay(200);
digitalWrite(led2,LOW);
digitalWrite(led4,LOW);
delay(100);
digitalWrite(led1, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led5, HIGH);
delay(200);
digitalWrite(led1, LOW);
digitalWrite(led3, LOW);
digitalWrite(led5, LOW);
delay(100);
digitalWrite(led2, HIGH);
digitalWrite(led4, HIGH);
delay(200);
digitalWrite(led2,LOW);
digitalWrite(led4,LOW);
delay(100);
}
//Impresion de pantalla
oled.clearDisplay(); // clear display
oled.setTextSize(2); // set text size
oled.setTextColor(WHITE); // set text color
oled.setCursor(0, 2); // set position to display (x,y)
oled.println("Animacion:"); // set text
oled.println(animacion); // set text
oled.display();
}