#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
esp32-s2-devkitm-1