Basicamente estou fazendo um programa que interpreta se o nível da água está alto ou baixo e manda a bomba ligar ou desligar a partir dessa informação, porem, como ela é controlada remotamente por um controle remoto de portão funciona mandando apenas um sinal que liga e desliga bomba. A minha principal dúvida é porque o meu código não está funcionando perfeitamente, sou iniciante na programação, mas estou a horas tentando fazer esse código funcionar e ele não funciona. Alguém pelo amor de Deus me ajuda.
Ola @rehehh
primeiramente leia a diretrizes que recomendam como você deve usar o fórum.
Uma das regras recomendadas é que códigos e impressões devem ser postados usando as tags </>.
Recomendo você refazer o seu poste inicial colocando o seu código entre as tags.
Sobre o seu código.
Além de uns erros de formatação e de definição de escopo de variais parece que ele tem algumas incompatibilidades com o seu descritivo inicial.
Estou anexando o seu código com as correções que consegui identificar.
Você fala de uso de controle remoto :
mas não consegui identificar esta parte no código que você postou.
unsigned long agora = 0;
int bomba = 0; // Variavel global
//----------------------------------------------------------
void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(3, OUTPUT);
//int bomba = 0; // Variavel local
Serial.begin(9600);
}
//----------------------------------------------------------
void loop() {
while (digitalRead(2) == HIGH ) {
delay(200);
//if (int bomba = 1); // Tem e erros nesta linha
if ( bomba == 1)
{
digitalWrite(3, HIGH); // pressiona butão. ???? Liga motor?
delay(200);
digitalWrite(3, LOW); // despressiona butão.???? Desliga motor?
//int bomba = 0; // Nova variavel local
bomba = 0;
}
}
if (digitalRead(2) == LOW)
{
digitalWrite(3, HIGH); // pressiona butão. ???? Liga motor?
//int bomba = 1; // +1 variavel local
bomba = 1;
delay(2000);
digitalWrite(3, LOW); // despressiona butão.???? Desliga motor?
agora = millis();
while (millis() < agora + 3000) {}
}
/* else (digitalRead(2) == HIGH);
{
digitalWrite(3, HIGH);
delay(200);
digitalWrite(3, LOW);
}
*/
}
A parte do controle remoto seria o pinMode(3, OUTPUT); pois a ligação do arduino com o controle remoto será feita através de um cabo, que sairá do pin 3 e se conectará diretamente ao botão do controle remoto da bomba. Então no caso, o comando digitalWrite funciona como alguém mecanicamente apertando o botão do controle remoto, a parte HIGH seria o botão apertado e a parte LOW seria o botão solto, explicando melhor a lógica, oque eu tentei fazer foi um código que interpretasse o nível de água da caixa d'água através da boia (pin2), funcionando com um pushbutton que ligaria/desligaria a bomba apertando o botão no controle remoto da mesma(pin3).
Tenho apenas 15 anos e comecei a estudar o arduino a pouco tempo, mas já estou tentando fazer esse projeto dar certo, kk, desde já agradeço muito a sua ajuda.
Obrigado, mas não adiantou , o seu código funcionou sim, mas eu não consegui explicar direito o objetivo do meu código kk, acabei de explicar melhor oque eu queria fazer na resposta acima, se você pode-se dar uma olhada ficaria muito grato.
Ah sim. Como sou iniciante, esse foi o meio que eu achei de apertar o botão por um tempo e soltar, no caso, 200ms. E os 2000ms foi um erro kkk, era pra ser 200 tbm.