Olá pessoal, tudo bem?
Eu tinha em casa uma lixeira automática com sensor de presença que queimou as placas e enferrujou os motores, e como tinha alguns componentes de Arduino em casa, decidi trocar o sistema e fazer eu mesmo o projeto.
Vi pela internet inúmeros projetos com esse intuito, mas todos utilizam um sensor de proximidade ultrassônico e não possuem botões para auxiliar no processo. O que gostaria de fazer é o seguinte:
- Possuir 2 botões, 1 abrir e um fechar;
- Ao invés de usar um sensor de proximidade ultrassônico, quero usar um sensor de proximidade IR;
- Quando pressionar o botão abrir, a lixeira deve permanecer aberta indefinidamente, quando pressionar o botão fechar, ela fecha e aguarda o comando para abrir novamente ou abre com o sensor de proximidade, aguarda 10 segundos e fecha novamente;
Aí vem meu problema, escrevi o seguinte código:
#include <Servo.h> // Incluir Biblioteca do Servo
#define SensorIR 7 // Definir variável para Pino 7 (Sensor IR)
#define pinServo 9 // Definir variável para Pino 9 (Servo)
#define pinButt1 4 // Definir variável para Botão 1 (Abrir)
#define pinButt2 3 // Definir variável para Botão 2 (Fechar)
int tempo;
int SensorLigado; // Definir Tipo Integer para variável SensorLigado
Servo myservo; // Definir Variável com o nome myservo
void setup() {
// put your setup code here, to run once:
pinMode (pinButt1,INPUT); // Definir Botão 1 como Entrada;
pinMode (pinButt2,INPUT); // Definir Botão 2 como Entrada;
pinMode (SensorIR,INPUT); // Definir Sensor IR como Entrada;
myservo.attach(pinServo); // Ligar o Servo e atribuir ao Pino referente a variável pinServo
myservo.write(0); // Colocar o Servo em 0º para iniciar
SensorLigado == 0;
tempo == 0;
}
void loop() {
if (digitalRead(pinButt1) == 1 ) // Lê o Botão 1 para Abrir
{
do myservo.write(90);
while (digitalRead(pinButt2) !=1 );{
delay(100);
myservo.write(0);
}
}
else{
SensorLigado = digitalRead(SensorIR);
if (SensorLigado == 1){
myservo.write(90);
if (tempo < 10000 || digitalRead(pinButt2 !=1)){
delay (500);
tempo = tempo + 1000;
}
if (pinButt2 !=1){
myservo.write(0);
}
}
}
}
Situação:
Quando utilizo apenas o primeiro bloco, os botões funcionam normalmente, quando utilizo o código inteiro, os botões só funcionam com o sensor detectando obstáculo. E quando utilizo apenas o segundo bloco, ignorando os botões, a tampa abre quando identifica obstáculo, porém fecha assim que tiro a mão, ela não aguarda o tempo que deveria.
Poderiam me ajudar a ver o motivo meu código não funcionar quando está completo?
Muito obrigado