//Escribe y prueba un programa para controlar el LED RGB con tres potenciómetro mostrando la información en pantalla
//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 pinPoten1 = A1;
const int pinPoten2 = A2;
const int pinPoten3 = A3;
const int RGBRojo = 11;
const int RGBVerde = 10;
const int RGBAzul = 9;
void setup() {
pantallaOLED.begin(SSD1306_SWITCHCAPVCC, 0x3C); //Inicio la pantalla
//Defino las entradas y salidas
pinMode(RGBRojo, OUTPUT);
pinMode(RGBVerde, OUTPUT);
pinMode(RGBAzul, OUTPUT);
//Empiezan todos apagados
digitalWrite(RGBRojo, HIGH);
digitalWrite(RGBVerde, HIGH);
digitalWrite(RGBAzul, HIGH);
}
void loop() {
int poten1 = analogRead(pinPoten1); //Defino una variable que depende de una lectura analogica
poten1 = map(poten1, 0, 1023, 0, 100); //Redefino los valores max y min
int poten2 = analogRead(pinPoten2); //Defino una variable que depende de una lectura analogica
poten2 = map(poten2, 0, 1023, 0, 100); //Redefino los valores max y min
int poten3 = analogRead(pinPoten3); //Defino una variable que depende de una lectura analogica
poten3 = map(poten3, 0, 1023, 0, 100); //Redefino los valores max y min
int val1 = analogRead(pinPoten1); //Defino una variable que depende de una lectura analogica
val1 = map(val1, 0, 1023, 0, 255); //Redefino los valores max y min
int val2 = analogRead(pinPoten2); //Defino una variable que depende de una lectura analogica
val2 = map(val2, 0, 1023, 0, 255); //Redefino los valores max y min
int val3 = analogRead(pinPoten3); //Defino una variable que depende de una lectura analogica
val3 = map(val3, 0, 1023, 0, 255); //Redefino los valores max y min
int luzRoja = analogRead(pinPoten1); //Defino una variable que depende de una lectura analogica
luzRoja = map(luzRoja, 0, 1023, 255, 0); //Redefino los valores max y min
int luzVerde = analogRead(pinPoten2); //Defino una variable que depende de una lectura analogica
luzVerde = map(luzVerde, 0, 1023, 255, 0); //Redefino los valores max y min
int luzAzul = analogRead(pinPoten3); //Defino una variable que depende de una lectura analogica
luzAzul = map(luzAzul, 0, 1023, 255, 0); //Redefino los valores max y min
//Cada RGB toma el valor de su lectura analogica
analogWrite(RGBRojo, luzRoja);
analogWrite(RGBVerde, luzVerde);
analogWrite(RGBAzul, luzAzul);
pantallaOLED.clearDisplay(); //Borro todo lo de la pantalla
//Defino las figuras
pantallaOLED.drawRect(25, 10, 100, 10, 1);
pantallaOLED.fillRect(25, 10, poten1, 10, 1);
pantallaOLED.drawRect(25, 30, 100, 10, 1);
pantallaOLED.fillRect(25, 30, poten2, 10, 1);
pantallaOLED.drawRect(25, 50, 100, 10, 1);
pantallaOLED.fillRect(25, 50, poten3, 10, 1);
//Defino caracterísiticas de escritura
pantallaOLED.setCursor(0, 10);
pantallaOLED.setTextColor(1);
pantallaOLED.setTextSize(1);
pantallaOLED.println("R"); //Defino el texto a escribir
//Defino caracterísiticas de escritura
pantallaOLED.setCursor(7, 10);
pantallaOLED.setTextColor(1);
pantallaOLED.setTextSize(1);
pantallaOLED.println(val1); //Defino el valor a escribir
//Igual para el verde
pantallaOLED.setCursor(0, 30);
pantallaOLED.setTextColor(1);
pantallaOLED.setTextSize(1);
pantallaOLED.println("G");
pantallaOLED.setCursor(7, 30);
pantallaOLED.setTextColor(1);
pantallaOLED.setTextSize(1);
pantallaOLED.println(val2);
//Igual para el azul
pantallaOLED.setCursor(0, 50);
pantallaOLED.setTextColor(1);
pantallaOLED.setTextSize(1);
pantallaOLED.println("B");
pantallaOLED.setCursor(7, 50);
pantallaOLED.setTextColor(1);
pantallaOLED.setTextSize(1);
pantallaOLED.println(val3);
pantallaOLED.display(); //Dispongo el texto en la pantalla
}