int motor1Pin1 = 27;
int motor1Pin2 = 26;
int enable1Pin = 14;
int botao = 15; //botão sentido horario
int botao2 = 2; // botao sentido antihorario
int botao3 = 4; //botao desliga
const int freq = 30000;
const int pwmChannel = 0;
const int resolution = 8;
int dutyCycle = 200;
bool flag = 0;
bool flag2 = 0;
bool est = 0;
bool est2 = 0;
bool est3 = 0;
void setup() {
// sets the pins as outputs:
pinMode(botao, INPUT); //input botão sentido horario
pinMode(botao2, INPUT); //input botão sentido anti horario
pinMode(botao3, INPUT); //input botao desliga
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(enable1Pin, OUTPUT);
// configure LED PWM functionalitites
ledcSetup(pwmChannel, freq, resolution);
// attach the channel to the GPIO to be controlled
ledcAttachPin(enable1Pin, pwmChannel);
Serial.begin(115200);
// testing
Serial.print("Testing DC Motor...");
}
void loop() {
est = digitalRead(botao); //
est2= digitalRead(botao2); //estado dos botoes
est3= digitalRead(botao3); //
if((est == 0)&&(flag2 == 0)) //se o botao 1 nao estiver pressionado,e a flag2 destivada,a flag1 é ativada
flag = 1;
delay(300);
}
if((est2 == 0)&&(flag == 0)) //se o botao 2 nao estiver pressionado,e a flag1 destivada,a flag2 é ativada
{
flag2 = 1;
delay(300);
}
if(est3 == 0) //se o terceiro botão for acionado,ambas as flags são desativadas e o motor desliga
{
flag2 = 0;
flag = 0;
delay(300);
}
if( flag == 1) //se a flag1 for ativada o motor gira em sentido horario
{
Serial.println("Horário");
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
}
if( flag2 == 1) //se a flag2 for ativada o motor gira em sentido antihorario
{
Serial.println("Anti-horario");
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
}
if((flag == 0)&&(flag2 == 0)) //se ambas as flags forem destivadas ,o motor para
{
Serial.println("Motor parado");
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
}
}