#include <Keypad.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const uint8_t ROWS = 4;
const uint8_t COLS = 4;
char keys[ROWS][COLS] = {
{'1', '2' , '3' , 'A'},
{'4', '5' , '6' , 'B'},
{'7', '8' , '9' , 'C'},
{'*', '0' , '#' , 'D'}
};
uint8_t colPins[COLS] = { 4 , 0 , 2, 15};
uint8_t rowPins[ROWS] = { 18 , 5 , 17 , 16};
Keypad keypad = Keypad(makeKeymap(keys), rowPins , colPins , ROWS , COLS);
char speed1[4];
char on[2] = "A";
char off[2] = "B";
char aumentar[2];
char disminuir[2];
char segundos[3];
byte i = 0;
const int pwm = 0;
int frequency = 2000;
int led1 = 13;
volatile int speed = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
lcd.init();
lcd.backlight();
ledcSetup(pwm,frequency,8);
ledcAttachPin(led1,pwm);
}
void loop() {
char key = keypad.getKey();
int trabajo = map(frequency, 0, 2000 , 0 , 255);
aumentar[i] = key;
disminuir[i] = key;
if (strcmp(on,aumentar)==0) {
frequency += 100;
if (frequency > 2000) { // Limita la frecuencia máxima a 10 kHz
frequency = 2000;
}
// Actualiza la configuración de frecuencia del canal PWM
ledcWrite(pwm, trabajo);
delay(20); // Evita el rebote del botón
}
if (strcmp(off,disminuir)==0) {
frequency -= 100; // Decrementa la frecuencia en 100 Hz
if (frequency < 0) { // Limita la frecuencia mínima a 100 Hz
frequency = 0;
}
// Actualiza la configuración de frecuencia del canal PWM
ledcWrite(pwm, trabajo);
delay(20); // Evita el rebote del botón
}
Serial.println(trabajo);
delay(20);
}