#include <Arduino.h>
#define VELM 5
#define PWM1_Ch 0
#define PWM1_Res 12
#define PWM1_Freq 1000
#define MOIN1 4
#define MOIN2 21
#define S 14
#define ST 27
#define Izq 12
#define Dec 13
#define Potenciometro 35
int PWM1_Dutycycle = 0;
float VP;
float speed_motor = 0;
void setup() {
analogReadResolution(12);
Serial.begin(115200);
ledcAttachPin(VELM, PWM1_Ch);
ledcSetup(PWM1_Ch, PWM1_Freq, PWM1_Res);
pinMode(MOIN1, OUTPUT);
pinMode(MOIN2, OUTPUT);
pinMode(Potenciometro, INPUT);
pinMode(S, INPUT);
pinMode(Izq, INPUT);
pinMode(Dec, INPUT);
pinMode(ST, INPUT);
Serial.println("CONTROL DE MOTOR DE CORRIENTE DIRECTA");
Serial.println("Estado del motor: ");
}
void loop() {
VP = analogRead(Potenciometro);
speed_motor = (VP/4095)*100 ;
if(digitalRead(S) == 1 && digitalRead(ST) == 0 ){
PWM1_Dutycycle = VP;
// **** GIRA A LA IZQUIERDA **** //
if(digitalRead(Izq) == 1 && digitalRead(Dec) == 0){
Serial.println("Girando a la izquierda");
digitalWrite(MOIN1, HIGH);
digitalWrite(MOIN2, LOW);
Serial.print(speed_motor);
Serial.println("%");
ledcWrite(PWM1_Ch, PWM1_Dutycycle);
delay(500);
}
// **** GIRA A LA DERECHA **** //
if(digitalRead(Dec) == 1 && digitalRead(Izq) == 0){
Serial.println("Girando a la Derecha");
digitalWrite(MOIN1, LOW);
digitalWrite(MOIN2, HIGH);
Serial.print(speed_motor);
Serial.println("%");
ledcWrite(PWM1_Ch, PWM1_Dutycycle);
delay(500);
}
// **** SE DETIENE **** //
if(digitalRead(Dec) == 1 && digitalRead(Izq) == 1 || digitalRead(Dec) == 0 && digitalRead(Izq) == 0){
Serial.println("Detenido");
digitalWrite(MOIN1, LOW);
digitalWrite(MOIN2, LOW);
delay(500);
}
}
}