Sou iniciante e realizei a união de alguns programas para montar uma esteira contadora de peças, utilizando Laser e LDR como sensores, LCD para amostragem do valor, botão de reset da contagem, e botão on/off para acionamento do motor através de relé.
A contagem funciona normalmente.Porem estou tendo problemas com o comando de reset de contagem, e o comando de liga e desliga do relé do motor DC, ou seja, eles não funcionam se o laser ou qualquer outra fonte de luz estiver incidindo sobre o LDR, assim tendo de cobrir para funcionar.
Acredito que seja algum erro na estrura do programa, pois não consegue realizar as verificações (if) independentemente
Podem me ajudar ?
Segue código, o qual já alterei por diversas vezes:
#include <LiquidCrystal.h>
#define rele1 8
#define chPin 7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int contador = 0;
int valorCalibrado = 236;
int pino_botao_reset = A1;
int estadobotao = 0;
boolean chVal = 1;
boolean releVal = 1;
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Esteira");
lcd.setCursor(0, 1);
pinMode(pino_botao_reset, INPUT);
lcd.print("Num Pecas: ");
pinMode(rele1, OUTPUT);
digitalWrite(rele1, LOW);
pinMode(chPin, INPUT);
digitalWrite(chPin, HIGH);
}
void loop() {
if (analogRead(A0) > 236) {
contador++;
Serial.println(contador);
while (analogRead(A0) > 236);
delay(250);
lcd.setCursor(11, 1);
lcd.print(contador);
}
estadobotao = digitalRead(pino_botao_reset);
if (estadobotao != 1) {
contador = 0;
lcd.setCursor(11, 1);
lcd.print(" ");
}
chVal = digitalRead(chPin);
if (chVal == 0) {
releVal = !releVal;
digitalWrite(rele1, releVal);
delay(500); {
delay(100);
}
}
}