#include <Arduino.h>
// Pin numbers for the buttons
uint8_t button1Pin = 42;
uint8_t button2Pin = 41;
uint8_t button3Pin = 40;

// Initial value for the counter
int counter = 0;

// Pin yang terhubung ke sensor LDR
uint8_t LDR_PIN = 3;

// Nilai ambang batas untuk mendeteksi kehadiran barang
uint8_t THRESHOLD = 500;

// Variabel untuk menyimpan status pembacaan
bool isObjectDetected = false;
unsigned long lastDetectionTime = 0;
unsigned long detectionInterval = 500; // Waktu minimum antara dua deteksi (dalam milidetik)
unsigned long objectCount = 0;

void setup() {
  Serial.begin(9600);
  pinMode(LDR_PIN, INPUT);

  // Set button pins as input
  pinMode(button1Pin, INPUT);
  pinMode(button2Pin, INPUT);
  pinMode(button3Pin, INPUT);

}

void loop() {
  LDRRead();
  buttonPress();
}


void LDRRead() {

  // Baca nilai dari sensor LDR
  int ldrValue = digitalRead(LDR_PIN);

  // Jika nilai LDR di bawah ambang batas dan belum terdeteksi sebelumnya
  if (ldrValue == 1 && !isObjectDetected) {
    isObjectDetected = true;
    lastDetectionTime = millis();
    Serial.println("Barang terdeteksi!");
  }

  // Jika nilai LDR di atas ambang batas dan sudah terdeteksi sebelumnya
  if (ldrValue == 0 && isObjectDetected) {
    unsigned long currentTime = millis();
    if (currentTime - lastDetectionTime >= detectionInterval) {
      isObjectDetected = false;
      objectCount++;
      Serial.print("Barang telah lewat. Total barang: ");
      Serial.println(objectCount);
    }
  }

  // Tambahkan delay untuk memperlambat pembacaan
  delay(100);

}

void buttonPress() {
// Read button states
  int button1State = digitalRead(button1Pin);
  int button2State = digitalRead(button2Pin);
  int button3State = digitalRead(button3Pin);

  // Check if button 1 is pressed
  if (button1State == HIGH) {
    counter++;
    Serial.print("Button 1 pressed. Reject: ");
    Serial.println(counter);
  }

  // Check if button 2 is pressed
  if (button2State == HIGH) {
    if (counter > 0) {
      counter--;
      Serial.print("Button 2 pressed. Reject: ");
      Serial.println(counter);
    } else {
      Serial.println("Counter cannot go below 0.");
    }
  }

  // Check if button 3 is pressed
  if (button3State == HIGH) {
    counter = 0;
    Serial.println("Button 3 pressed. Counter reset to 0.");
  }

  // Add a small delay to avoid button bouncing
  delay(50);
}
Loading
esp32-s2-devkitm-1