# Preciso controlar um motor com botões

**URL:** <https://forum.fazedores.com/t/preciso-controlar-um-motor-com-botoes/6939>\
**Category:** Arduino\
**Created:** [Dezembro 1, 2019, 3:09am UTC](https://forum.fazedores.com/t/preciso-controlar-um-motor-com-botoes/6939 "2019-12-01T03:09:07Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![FelipeMLK](https://avatars.discourse-cdn.com/v4/letter/f/74df32/32.png) [@FelipeMLK](https://forum.fazedores.com/u/FelipeMLK)\
**Post date:** [Dezembro 1, 2019, 3:09am UTC](https://forum.fazedores.com/t/preciso-controlar-um-motor-com-botoes/6939/1 "2019-12-01T03:09:07Z")

</div>

Estou fazendo um projeto, mas ao decorrer deste encontrei diversas dificuldades, que me impossibilitaram de continuar. Como deu pra perceber sou iniciante nisso, e nessa programação abaixo, queria fazer o controle de um motor, a partir de dois botoes, que alem de fazê-lo girar em direções diferentes, estes teriam condições de existência, por exemplo se o botão 1 foi o ultimo ativado, não poderia ser ativado novamente, só se o botao 2 fosse apertado. Porem não consegui executar dessa forma, e acabei deixando de lado o fim de curso, que também seria implementado. Alguém conseguiria corrigir ou me dizer o que posso fazer para arrumar isso ?

//Definicoes pinos Arduino ligados a entrada da Ponte H  
int IN1 = 3;  
int IN2 = 5;

int botao\_A = 2;  
int botao\_B = 6;  
bool last; //Guarda o ultimo estado do botão (sentido horário)  
bool last2; //Guarda o ultimo estado do botão (sentido anti-horário)

void setup()  
{  
pinMode(IN1, OUTPUT);  
pinMode(IN2, OUTPUT);  
pinMode(botao\_A, INPUT\_PULLUP);  
pinMode(botao\_B, INPUT\_PULLUP);  
last = 0;  
last2 = 0;  
}

void loop()  
{

if ( digitalRead(2) == HIGH && last == 0){  
bool last = 1; //Guarda o ultimo estado do botao (ativo)  
bool last2 = 0;

//Gira o Motor A no sentido horario  
digitalWrite(IN1, LOW);  
digitalWrite(IN2, HIGH);  
delay(1000);

//Para o motor A  
digitalWrite(IN1, HIGH);  
digitalWrite(IN2, HIGH);

```
                                      }

```

if (digitalRead(6) == HIGH && last2 == 0) {  
bool last2 = 1;  
bool last = 0;

//Gira o Motor A no sentido anti-horario  
digitalWrite(IN1, HIGH);  
digitalWrite(IN2, LOW);  
delay(1000);

//Para o motor A  
digitalWrite(IN1, HIGH);  
digitalWrite(IN2, HIGH);  
}  
}
