#include <LiquidCrystal.h>
// RS, E, D4, D5, D6, D7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int TRIG_PIN = 9;
const int ECHO_PIN = 10;
void setup() {
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
lcd.begin(16, 2);
lcd.print("AutoSort X Ready");
lcd.setCursor(0, 1);
lcd.print("Scanning Waste..");
delay(2000);
lcd.clear();
}
long readDistanceCM() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
return duration * 0.034 / 2;
}
void loop() {
long distance = readDistanceCM();
if (distance > 0 && distance <= 20) {
lcd.clear();
lcd.setCursor(0, 0);
// Classifying trash based on range / object position
if (distance <= 5) {
lcd.print("TYPE: PLASTIC");
lcd.setCursor(0, 1);
lcd.print("ROUTE -> FUEL");
} else if (distance > 5 && distance <= 10) {
lcd.print("TYPE: ORGANIC");
lcd.setCursor(0, 1);
lcd.print("ROUTE -> ELEC");
} else if (distance > 10 && distance <= 15) {
lcd.print("TYPE: PAPER/CARD");
lcd.setCursor(0, 1);
lcd.print("ROUTE -> WATER");
} else {
lcd.print("TYPE: METAL/GLASS");
lcd.setCursor(0, 1);
lcd.print("ROUTE -> RECYCLE");
}
delay(2000);
} else {
lcd.setCursor(0, 0);
lcd.print("AutoSort X: Ready");
lcd.setCursor(0, 1);
lcd.print("Insert waste... ");
delay(300);
}
}