#include <stdint.h>
#include <Arduino.h>
#include "driver/ledc.h"
void configurarPWM(void); // Declaración anticipada de la función configurarPWM
//DEFINICIÓN DE BOTONES
const int pulsador_b3 = 14; // Pin 14
const int pulsador_b4 = 4; // Pin 4
// Paso 1: selección de parámetros de la señal PWM
#define pwmChannel 0 // 16 canales 0-15
#define ledRChannel 1
#define ledGChannel 2
#define ledBChannel 3
#define freqPWM 5000 // Frecuencia en Hz
#define freqPWM1 5000 // Frecuencia en Hz
#define freqPWM2 5000 // Frecuencia en Hz
#define resolution 8 // 1-16 bits de resolución
const int pinLedR = 18;
const int pinLedG = 19;
const int pinLedB = 21;
#define pinPWM 15 // GPIO 2 para tener la salida del PWM
//VARIABLES DEL CONTADOR DE BOTÓN QUE SELECCIONA EL COLOR DE LED
int contador = 0;
//VARIABLE DEL CONTADOR PARA EL BRILLO DE LAS LEDS
int dutycycle = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pinMode(pulsador_b3, INPUT_PULLUP); // Configurar botón B3 como entrada con pull-up
pinMode(pulsador_b4, INPUT_PULLUP); // Configurar botón B4 como entrada con pull-up
configurarPWM();
}
void loop() {
// Limitar el contador para que esté entre 0 y 4
contador = (contador + 4) % 4;
dutycycle = (dutycycle + 255) % 255;
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
if(digitalRead(pulsador_b3)== LOW){
contador++;
printf("+\n");
printf("Número de veces presionado: %d\n", contador);
}
if (contador == 1) {
if(digitalRead(pulsador_b4)== LOW){
dutycycle = dutycycle + 10;
printf("+\n");
printf("BRILLO: %d\n", dutycycle);
}
delay(300);
ledcWrite(ledRChannel, dutycycle); // Encender LED rojo
ledcWrite(ledGChannel, 0); // Apagar LED verde
ledcWrite(ledBChannel, 0); // Apagar LED azul
} else if (contador == 2) {
if(digitalRead(pulsador_b4)== LOW){
dutycycle = dutycycle + 10;
printf("+\n");
printf("BRILLO: %d\n", dutycycle);
}
delay(300);
ledcWrite(ledRChannel, 0); // Apagar LED rojo
ledcWrite(ledGChannel, dutycycle); // Encender LED verde
ledcWrite(ledBChannel, 0); // Apagar LED azul
} else if (contador == 3) {
if(digitalRead(pulsador_b4)== LOW){
dutycycle = dutycycle + 10;
printf("+\n");
printf("BRILLO: %d\n", dutycycle);
}
delay(300);
ledcWrite(ledRChannel, 0); // Apagar LED rojo
ledcWrite(ledGChannel, 0); // Apagar LED verde
ledcWrite(ledBChannel, dutycycle); // Encender LED azul
}
else {
// Si el contador no está en ninguno de los valores deseados, todas las LEDs están apagadas.
ledcWrite(ledRChannel, 0); // Apagar LED rojo
ledcWrite(ledGChannel, 0); // Apagar LED verde
ledcWrite(ledBChannel, 0); // Apagar LED azul
}
}
void configurarPWM(void)
{
// Paso 1: Configurar el módulo PWM
ledcSetup(pwmChannel, freqPWM, resolution);
ledcSetup(ledRChannel, freqPWM1, resolution);
ledcSetup(ledGChannel, freqPWM2, resolution);
ledcSetup(ledBChannel, freqPWM, resolution);
// Paso 2: seleccionar en que GPIO tendremos nuestra señal PWM
ledcAttachPin(pinPWM, pwmChannel);
ledcAttachPin(pinLedR, ledRChannel);
ledcAttachPin(pinLedG, ledGChannel);
ledcAttachPin(pinLedB, ledBChannel);
}