const int sensorPin = A0;
const int buzzerPin = 9;
const int buttonPin = 2;
const int digitPins[] = {22, 24, 26};
const int segmentPins[] = {30, 32, 34, 36, 38, 40, 42};
volatile int count = 0; // Variabel untuk menyimpan jumlah benda yang terdeteksi
void setup() {
pinMode(sensorPin, INPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
for (int i = 0; i < 3; i++) {
pinMode(digitPins[i], OUTPUT);
}
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
}
attachInterrupt(digitalPinToInterrupt(buttonPin), resetCount, FALLING);
}
void loop() {
int sensorValue = digitalRead(sensorPin);
if (sensorValue == HIGH) {
count++; // Menambah jumlah benda yang terdeteksi
delay(250); // delay untuk menghindari deteksi ganda
}
displayCount(); // Menampilkan jumlah product di seven segment
if (count >= 57) {
digitalWrite(buzzerPin, HIGH);
} else {
digitalWrite(buzzerPin, LOW);
}
}
void resetCount() {
count = 0;
}
void displayCount() {
int digits[3];
digits[0] = count % 10;
digits[1] = (count / 10) % 10;
digits[2] = (count / 100) % 10;
for (int i = 0; i < 3; i++) {
digitalWrite(digitPins[i], LOW);
for (int j = 0; j < 7; j++) {
digitalWrite(segmentPins[j], (displayDigits[digits[i]] >> j) & 1);
}
delay(5);
digitalWrite(digitPins[i], HIGH);
}
}