/* Hello Wokwi! */
#define PIN_TRIG 3
#define PIN_ECHO 2
#define SPEAKER_PIN 11
#include "pitches.h"
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
int LED_red = 7;
int LED_green = 6;
int i = 0;
void setup() {
Serial.begin(115200);
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);
pinMode(LED_red, OUTPUT);
pinMode(LED_green, OUTPUT);
pinMode(SPEAKER_PIN, OUTPUT);
lcd.init();
lcd.backlight();
}
void playSound() {
tone(SPEAKER_PIN, NOTE_E4);
delay(150);
tone(SPEAKER_PIN, NOTE_G4);
delay(150);
tone(SPEAKER_PIN, NOTE_E5);
delay(150);
tone(SPEAKER_PIN, NOTE_C5);
delay(150);
tone(SPEAKER_PIN, NOTE_D5);
delay(150);
tone(SPEAKER_PIN, NOTE_G5);
delay(150);
noTone(SPEAKER_PIN);
}
void reset(){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HAPPY HALLOWEEN!");
delay(3000);
}
void loop() {
// Start a new measurement:
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
// Read the result:
int duration = pulseIn(PIN_ECHO, HIGH);
int distanceCM = duration / 58;
lcd.setCursor(1, 0);
lcd.print("Item in the box");
if (distanceCM <= 100){
digitalWrite(LED_red, LOW);
digitalWrite(LED_green, HIGH);
Serial.println();
Serial.println("distanceCM <= 100");
Serial.print("Item in box: ");
Serial.println(i);
i += 1;
delay(1000);
}
if (i == 6){
digitalWrite(LED_red, HIGH);
digitalWrite(LED_green, LOW);
lcd.setCursor(6, 1);
lcd.print("Full");
playSound();
reset();
i = 0;
lcd.clear();
}
if (distanceCM >= 100){
Serial.println();
Serial.println("distanceCM >= 100");
digitalWrite(LED_red, LOW);
digitalWrite(LED_green, HIGH);
}
Serial.print("Item in box: ");
Serial.println(i);
lcd.setCursor(7, 1);
lcd.print(i);
}