#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Definiciones para pines
#define ledRojo 45
#define ledAzul 40
#define potent 6
#define I2C_SDA 1
#define I2C_SCL 2
#define pinSwitch 7
// Declaramos variables y objetos
int counter =1;
int led255;
int antled;
int dutyled;
LiquidCrystal_I2C miLCD(0x27, 16, 2);
bool lastStateSwitch;
void setup() {
// Reconfiguramos pines para I2C
Wire.begin(I2C_SDA, I2C_SCL);
// Configuramos pines para led RGB
pinMode(ledRojo, OUTPUT);
pinMode(ledAzul, OUTPUT);
pinMode(pinSwitch, INPUT_PULLUP);
// Inicializamos la pantalla LCD
miLCD.init();
miLCD.backlight();
miLCD.setCursor(1, 0);
miLCD.print("P: ");
miLCD.setCursor(6, 0);
miLCD.print("%");
// Inicializamos variables
antled = 256;
lastStateSwitch = digitalRead(pinSwitch);
}
void loop() {
if(lastStateSwitch == HIGH && digitalRead(pinSwitch)==LOW){
counter++;
delay(20);
if(counter==3){
counter=1;
}
}
lastStateSwitch = digitalRead(pinSwitch);
led255 = map(analogRead(potent), 0, 4095, 0, 255);
if(led255 != antled){
if(counter==2){
analogWrite(ledRojo, led255);
analogWrite(ledAzul, 0); // actualizamos ciclo de trabajo
}
else{
analogWrite(ledAzul, led255);
analogWrite(ledRojo, 0);
}
dutyled = led255*100/255; // calculamos ciclo de trabajo en porcentaje
miLCD.setCursor(3, 0); // mostramos en pantalla
miLCD.printf("%03d", dutyled);
}
antled = led255;
delay(100); // this speeds up the simulation
}