Как перезапустить счетчик в программе с помощью кнопки в настройке LDR Tripwire

Итак, я пытаюсь настроить этот код так, чтобы, когда я нажимаю кнопку, счетчик людей обнулялся, и при этом счетчик увеличивался, когда LDR отключался, и снова, когда кнопка была нажата, счетчик обнулится.

#include <LiquidCrystal.h>

int laser=8;
int pushbutton=12;
int flag=0; 
int myCounter = 0; 
LiquidCrystal lcd(7,6,5,4,3); 

void setup() 
{ 
    pinMode(laser,OUTPUT); pinMode(pushbutton,INPUT); 
    lcd.begin(16, 2); 
    lcd.print("Person Counter:"); lcd.setCursor(0,1); 
    lcd.print(0); 
} 

void loop() 
{
    lcd.setCursor(0, 1);
    digitalWrite(laser,HIGH); 

    if(analogRead(A0) < 600) //A0= LDR
    {
        flag = 1;
    } 

    if(analogRead(A0) > 600 && flag == 1) 
    {
        myCounter++; 
        delay(200); 
        lcd.print(myCounter); 
        delay(20); 
        flag=0;
    } 
}

, 👍1


1 ответ


1

Попробуйте этот код. Я внес некоторые изменения и закомментировал это.

#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 6, 5, 4, 3);

int laser = 8;
int pushbutton = 12;
int flag = 0; 
int myCounter = 0; 

void setup() 
{ 
  pinMode(laser,OUTPUT);
  pinMode(pushbutton,INPUT_PULLUP); // Обеспечиваем подтягивание

  lcd.begin(16, 2); 
  lcd.print("Person Counter:");
  lcd.setCursor(0,1); 
  lcd.print(0); 
} 

void loop() 
{
  lcd.setCursor(0, 1);
  digitalWrite(laser,HIGH); 

  if(analogRead(A0) < 600) //A0= LDR
  {
    flag = 1;
  } 

  if(analogRead(A0) > 600 && flag == 1) 
  {
    myCounter++; 
    delay(200); 
    lcd.print(myCounter); 
    delay(20); 
    flag = 0;
  }

  if(digitalRead(pushbutton) == LOW) // При нажатии кнопки
  {
    myCounter = 0; // Устанавливаем счетчик на 0
  }
}
,

Рад помочь вам., @Help2Engg