Sinal Low através de dois disparadores

Olá amigos, estou fazendo uma programa para controlar um motor CC, e funciona da seguinte forma:

  • Há 1 botão que gira o motor no sentido horário e 1 botão que gira no sentido anti-horário
  • 1 Click contínuo = motor gira, mas para quando solta
  • 2 Clicks rápidos = motor gira e só para de girar quando o sensor atuar


Essas condições já atingi, no entanto, preciso fazer uma espécie de "intertravamento", afinal, caso o sentido horário e anti-horário sejam acionados ao mesmo tempo, ocorrerá um curto.

Eu já tentei fazer da seguinte forma:

if ( (digitalRead(sensorHORARIO) ) || ( (digitalRead(botaofecha)) ) {
digitalWrite(HORARIO, LOW);

No entanto, não funcionou. Há alguma outra forma de fazer isso?

Boa noite @nicolasmmp,
é possível sim, mas para isto preciso ver o seu sketch, para então entender onde deve ser colocado este "inter-travamento"
Ao anexar seu scketch o coloque-o entre tags </>

RV mineirin

1 Like

Olá amigo, agradeço a atenção!

Por incrível que pareça, o erro foi solucionado somente repetindo o "if", retirando da lógica OU ( || ).

 if (digitalRead(sensorANTIHORARIO)) {
    digitalWrite(antihorario, LOW);
 
  }
 if ((digitalRead(botaoHORARIO))){      
    digitalWrite(antihorario, LOW);

Como estou utilizando contadores para detectar o duplo clique, coloquei as [!SAÍDAS HORÁRIO] em lógica AND no if que incrementa o contador.

 if (digitalRead(botaoANTIHORARIO) == HIGH && (!digitalRead(sensorHORARIO)) && (!digitalRead(botaoHORARIO)) && (!digitalRead(sinalHORARIO)) ) {

    if ((millis() - lastDebounceTime3) > debounceDelay3) {
      contadorANTIHORARIO++;
       }
    lastDebounceTime3 = millis();
  }

Agradeço a atenção @ruilviana.