#include <Servo.h>
#include <LiquidCrystal_I2C.h>
// Define LCD address and dimensions
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int capacitiveSensorPin = 2; // Capacitive sensor output pin
const int inductiveSensorPin = 3; // Inductive sensor output pin
const int servoPin1 = 4; // Servo pin for organic waste
const int servoPin2 = 5; // Servo pin for non-organic waste
const int greenLEDPin = 8; // Green LED pin
const int redLEDPin = 9; // Red LED pin
Servo servo1; // Servo object for organic waste
Servo servo2; // Servo object for non-organic waste
void setup() {
pinMode(capacitiveSensorPin, INPUT);
pinMode(inductiveSensorPin, INPUT);
pinMode(greenLEDPin, OUTPUT);
pinMode(redLEDPin, OUTPUT);
servo1.attach(servoPin1);
servo2.attach(servoPin2);
lcd.init();
lcd.backlight();
Serial.begin(9600);
}
void loop() {
int capacitiveSensorValue = digitalRead(capacitiveSensorPin);
int inductiveSensorValue = digitalRead(inductiveSensorPin);
// Check for organic waste (non-conducting materials)
if (capacitiveSensorValue == HIGH) {
lcd.clear();
lcd.print("Organic Waste");
digitalWrite(greenLEDPin, HIGH); // Turn on green LED
Serial.println("Organic waste detected");
servo1.write(90); // Rotate servo 90 degrees
delay(2000); // Wait 2 seconds
servo1.write(0); // Return to initial position
digitalWrite(greenLEDPin, LOW); // Turn off green LED
}
// Check for non-organic waste (conducting materials)
else if (inductiveSensorValue == HIGH) {
lcd.clear();
lcd.print("Non-Organic Waste");
digitalWrite(redLEDPin, HIGH); // Turn on red LED
Serial.println("Non-organic waste detected");
servo2.write(90); // Rotate servo 90 degrees
delay(2000); // Wait 2 seconds
servo2.write(0); // Return to initial position
digitalWrite(redLEDPin, LOW); // Turn off red LED
}
else {
lcd.clear();
lcd.print("No Waste Detected");
digitalWrite(greenLEDPin, LOW); // Turn off green LED
digitalWrite(redLEDPin, LOW); // Turn off red LED
delay(1000);
}
delay(100); // Debounce