//Escribe y prueba un programa para que el botón controle el LED RGB como se muestra en la siguiente animación:
//Carles Ribis 4A, 30-5-24
#include <Adafruit_GFX.h>
#include <Wire.h>
#include <Adafruit_SSD1306.h>
//Se incluyen las librerías
Adafruit_SSD1306 pantallaOLED(128, 64, &Wire, -1);
//Defino las características de la pantallaOLED
//Defino las variables constantes
const int pinPulsa = 6;
const int RGBRojo = 11;
const int RGBVerde = 10;
const int RGBAzul = 9;
int a = 0; //Defino el contador a 0
void setup() {
pantallaOLED.begin(SSD1306_SWITCHCAPVCC, 0x3C); //Inicio la pantalla
//Defino las entradas y salidas
pinMode(RGBRojo, OUTPUT);
pinMode(RGBVerde, OUTPUT);
pinMode(RGBAzul, OUTPUT);
pinMode(pinPulsa, INPUT_PULLUP);
}
void loop() {
int pulsa = digitalRead(pinPulsa); //Defino una variable que depende de una lectura digital
if (pulsa == 0){ //Si se pulsa el pulsador, al nº del contador se le suma 1
a = a+1;
delay(100);
}
if (a == 3){ //Si el contador llega a 3 vuelve a 0
a = 0;
}
if (a == 0){ //Si el contador esta en 0
//Se enciende el RGBRojo
digitalWrite(RGBRojo, LOW);
digitalWrite(RGBVerde, HIGH);
digitalWrite(RGBAzul, HIGH);
pantallaOLED.clearDisplay(); //Borro todo lo de la pantalla
//Defino caracterísiticas de escritura
pantallaOLED.setCursor(50, 30);
pantallaOLED.setTextColor(1);
pantallaOLED.setTextSize(2);
pantallaOLED.println("Rojo"); //Defino el texto a escribir
pantallaOLED.display(); //Dispongo el texto en la pantalla
}
if (a == 1){ //Si el contador esta en 1
//Se enciende el RGBVerde
digitalWrite(RGBRojo, HIGH);
digitalWrite(RGBVerde, LOW);
digitalWrite(RGBAzul, HIGH);
pantallaOLED.clearDisplay(); //Borro todo lo de la pantalla
//Defino caracterísiticas de escritura
pantallaOLED.setCursor(50, 30);
pantallaOLED.setTextColor(1);
pantallaOLED.setTextSize(2);
pantallaOLED.println("Verde"); //Defino el texto a escribir
pantallaOLED.display(); //Dispongo el texto en la pantalla
}
if (a == 2){ //Si el contador esta en 2
//Se enciende el RGBAzul
digitalWrite(RGBRojo, HIGH);
digitalWrite(RGBVerde, HIGH);
digitalWrite(RGBAzul, LOW);
pantallaOLED.clearDisplay(); //Borro todo lo de la pantalla
//Defino caracterísiticas de escritura
pantallaOLED.setCursor(50, 30);
pantallaOLED.setTextColor(1);
pantallaOLED.setTextSize(2);
pantallaOLED.println("Azul"); //Defino el texto a escribir
pantallaOLED.display(); //Dispongo el texto en la pantalla
}
}