Boa noite a todos, estou fazendo um projeto com arduino e um receptor infravermelho. A idéia do projeto é fazer com que um motor gire quando o botão especifico no controle for pressionado.
Só que tem um problema: o objetivo seria que o motor girasse apenas quando o botão for pressionado. Tipo assim: Enquanto eu estiver segurando o botão, o motor gira, e quando não aperto o botão, o motor desligar. O que está acontecendo é o seguinte: O botão é pressionado, e o valor é lido pelo receptor, e o motor liga, porém ele permanece LIGADO após a leitura. Como fazer para que ele só fique ligado enquanto o botão for pressionado?
O código que estou usando é o seguinte :
#include <IRremote.h>
#include <IRremoteInt.h>
int RECV_PIN = 2;
IRrecv irrecv(RECV_PIN);
decode_results results;
int motorPin = 3;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn();
pinMode(motorPin,OUTPUT);
}
void loop()
{
if (irrecv.decode(&results))
{
long int decCode = results.value;
switch (results.value)
{
case 691090:
digitalWrite(motorPin,HIGH);
break;
case 2704:
digitalWrite(motorPin,LOW);
break;
}
irrecv.resume();
}
}
Tags:
Tenta colocar um laço "while"
Exemplo:
while(value == 691090) {
digitalWrite(motorPin, HIGH);
break;
}
while(value == 2704) {
digitalWrite(motorPin,LOW);
break;
}
Estou com uma dúvida: Quando receber o sinal = 691090, coloca o pino do motor em High e,quando receber o sinal = 2704, coloca o pino em low. E quando não recebe nenhum deles ou outro sinal diferente?
Não Pude testar aqui no trabalho. Testa ai e diz se funciona.
Pecklauros, obrigado pela resposta. Esclarecendo sua dúvida: Quando o valor lido for diferente de 691090, ou quando não estiver sendo lido nenhum valor, o motor deve estar em LOW. Estando em HIGH apenas enquanto recebe o sinal 691090.
Assim que chegar em casa testarei o seu exemplo.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por