#define rev 26
#define forw 27
const byte pinPotenciometro = 34; // Pin ADC para el potenciómetro
const byte pinLED = 21; // Pin PWM para el LED
const byte frecuencia = 5000; // Frecuencia de la señal PWM
const byte resolucion = 8; // Resolución de 8 bits (0-255)
const byte Reversa = 23; //Reversa del motor
const byte Delante = 22; //Hacia adelante
void setup() {
Serial.begin(115200);
pinMode(pinLED, OUTPUT);
pinMode(Reversa, OUTPUT);
pinMode(Delante, OUTPUT);
// Configurar los pines rev y forw como entradas con resistencia pull-up interna
pinMode(rev, INPUT_PULLDOWN);
pinMode(forw, INPUT_PULLDOWN);
ledcAttach(pinLED, frecuencia, resolucion);
}
void loop() {
// Leer el valor del potenciómetro
int lecturaPot = analogRead(pinPotenciometro);
// Leer los estados de los botones (rev y forw)
int lecturaRev = digitalRead(rev);
int lecturaforw = digitalRead(forw);
// Mapear el valor de 0-4095 a 0-255 (resolución de 8 bits)
int valorPWM = map(lecturaPot, 0, 4095, 0, 255);
// Escribir el valor PWM en el pin LED
ledcWrite(pinLED, valorPWM);
// Mostrar valores en el monitor serial
Serial.print("Lectura del Potenciómetro: ");
Serial.print(lecturaPot);
Serial.print(" - Valor PWM: ");
Serial.println(valorPWM);
Serial.print("forw: ");
Serial.print(lecturaforw);
Serial.print(" - rev: ");
Serial.println(lecturaRev);
// Control del motor
if (lecturaforw == LOW && lecturaRev == HIGH) { // Si forw está presionado y rev no
digitalWrite(Delante, HIGH);
digitalWrite(Reversa, LOW);
Serial.println("MOTOR HACIA DERECHA");
} else if (lecturaforw == HIGH && lecturaRev == LOW) { // Si rev está presionado y forw no
digitalWrite(Delante, LOW);
digitalWrite(Reversa, HIGH);
Serial.println("MOTOR HACIA IZQUIERDA");
}
else{
digitalWrite(Delante, LOW);
digitalWrite(Reversa, LOW);
Serial.println("Motor detenido");
}
delay(1000); // Pequeño retardo
}