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, na hora de realizar as comparações (if). 

Podem me ajudar ?

Segue o código abaixo:

#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)// objeto passando entre o LDR e o LED
  {
    contador++;//Incrementa o contador em 1

    Serial.println(contador);
    while (analogRead(A0) > 236);
    {
    }
    delay(500);//Aguarda 500 ms.
    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);
  }
}

Exibições: 265

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço