/********* Pleasedontcode.com ********** Pleasedontcode thanks you for automatic code generation! Enjoy your code! - Terms and Conditions: You have a non-exclusive, revocable, worldwide, royalty-free license for personal and commercial use. Attribution is optional; modifications are allowed, but you're responsible for code maintenance. We're not liable for any loss or damage. For full terms, please visit pleasedontcode.com/termsandconditions. - Project: Waste Management - Source Code NOT compiled for: Arduino Uno - Source Code created on: 2025-11-06 13:18:22 ********* Pleasedontcode.com **********/ /****** SYSTEM REQUIREMENTS *****/ /****** SYSTEM REQUIREMENT 1 *****/ /* This Smart Waste Segregation Bin uses an Arduino */ /* Uno, IR sensor, ultrasonic sensors,servo motors */ /* and detacts waste based on relection */ /****** END SYSTEM REQUIREMENTS *****/ /* START CODE */ // System Requirements: Control waste sorting system using IR sensor and ultrasonic sensors with servo motors #include // Include servo library for controlling servo motors // Define PWM output pin for servo const uint8_t kie_Servomotor_PWMSignal_PIN_D3 = 3; // Define pins for IR sensor and ultrasonic sensors #define IR_SENSOR A0 #define SERVO_1 3 #define SERVO_2 5 #define SERVO_3 6 #define ORGANIC_TRIG 8 #define ORGANIC_ECHO 9 #define RECYCLABLE_TRIG 10 #define RECYCLABLE_ECHO 11 #define OTHER_TRIG 12 #define OTHER_ECHO 13 // Create servo objects Servo servo1; Servo servo2; Servo servo3; // Variables to hold ultrasonic sensor readings int organicDistance; int recyclableDistance; int otherDistance; // Threshold distance to determine if bin is full (in cm) int threshold = 5; void setup() { Serial.begin(9600); // Initialize serial communication // Attach servo objects to PWM pins servo1.attach(SERVO_1); servo2.attach(SERVO_2); servo3.attach(SERVO_3); // Initialize ultrasonic sensor pins pinMode(ORGANIC_TRIG, OUTPUT); pinMode(ORGANIC_ECHO, INPUT); pinMode(RECYCLABLE_TRIG, OUTPUT); pinMode(RECYCLABLE_ECHO, INPUT); pinMode(OTHER_TRIG, OUTPUT); pinMode(OTHER_ECHO, INPUT); } void loop() { // Read IR sensor value int reflectivity = analogRead(IR_SENSOR); // Determine waste category based on reflectivity String wasteCategory; if (reflectivity > 800) { wasteCategory = "Organic"; } else if (reflectivity > 400) { wasteCategory = "Recyclable"; } else { wasteCategory = "Other"; } // Print waste category Serial.print("Waste Category: "); Serial.println(wasteCategory); // Process waste based on category if (wasteCategory == "Organic") { organicDistance = getDistance(ORGANIC_TRIG, ORGANIC_ECHO); if (organicDistance > threshold) { servo1.write(90); // Open lid delay(2000); // Wait servo1.write(0); // Close lid } else { Serial.println("Bin Full"); } } else if (wasteCategory == "Recyclable") { recyclableDistance = getDistance(RECYCLABLE_TRIG, RECYCLABLE_ECHO); if (recyclableDistance > threshold) { servo2.write(90); delay(2000); servo2.write(0); } else { Serial.println("Bin Full"); } } else { otherDistance = getDistance(OTHER_TRIG, OTHER_ECHO); if (otherDistance > threshold) { servo3.write(90); delay(2000); servo3.write(0); } else { Serial.println("Bin Full"); } } delay(100); // Small delay } // Function to get distance from ultrasonic sensor int getDistance(int trigPin, int echoPin) { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); long duration = pulseIn(echoPin, HIGH); int distance = duration * 0.034 / 2; return distance; } /* END CODE */