The circuit is designed to interface with various sensors and actuators using an Arduino UNO microcontroller. It includes metal detection sensors, a capacitive sensor, RGB LEDs, resistors, and servo motors. The circuit is likely intended for a sorting system where different types of sensors detect specific materials or objects, and the servos actuate to sort or direct these materials accordingly. The RGB LEDs may serve as indicators for system status or sorting results.
/// include library
#include <Servo.h> // servo motor library
// Pin Definitions
// plastic bin pin
#define redpin 5
#define bluepin 6
#define greenpin 7
#define plasticsensor A0
#define metalsensor A1
#define IR_plastic A3
// metal bin pin definitions
#define redpin_M 8
#define bluepin_M 9
#define greenpin_M 10
#define metalsensor_M A2
#define IR_metal A3
Servo myservo; // create servo object to control a servo on plastic bin
Servo myservo_M; // create servo object to control a servo on metal bin
int pos = 165; // default servo position of plastic bin
int pos_M = 158; // default servo position of metal bin
void setup() {
myservo.attach(11); // attaches the plastic bin servo on pin 11 to the servo object
myservo_M.attach(12); // attaches the metal bin servo on pin 12 to the servo object
// RGB LED on plastic bin
pinMode(redpin, OUTPUT);
pinMode(bluepin, OUTPUT);
pinMode(greenpin, OUTPUT);
// RGB LED on metal bin
pinMode(redpin_M, OUTPUT);
pinMode(bluepin_M, OUTPUT);
pinMode(greenpin_M, OUTPUT);
// Create sensor values in pull up condition
pinMode(plasticsensor, INPUT_PULLUP);
pinMode(metalsensor, INPUT_PULLUP);
pinMode(metalsensor_M, INPUT_PULLUP);
// start serial monitor
Serial.begin(9600);
// Set RGB LED on default values (white)
analogWrite(redpin, 255);
analogWrite(bluepin, 255);
analogWrite(greenpin, 255);
analogWrite(redpin_M, 255);
analogWrite(bluepin_M, 255);
analogWrite(greenpin_M, 255);
}
void loop() {
int sensor_read_plastic = digitalRead(plasticsensor);
int sensor_read_metal = digitalRead(metalsensor);
int sensor_read_metal2 = digitalRead(metalsensor_M);
Serial.println("plastic sensor");
Serial.println(sensor_read_plastic);
Serial.println("metal sensor");
Serial.println(sensor_read_metal);
Serial.println(sensor_read_metal2);
// Check if the trash bin is full
// Plastic bin
if ((sensor_read_plastic == 0) && (sensor_read_metal != 1)) {
for (pos = 160; pos >= 90; pos -= 1) { // goes from 160 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(1); // waits 1ms for the servo to reach the position
}
analogWrite(redpin, 255);
analogWrite(bluepin, 0);
analogWrite(greenpin, 255);
delay(2500);
for (pos = 90; pos <= 160; pos += 1) { // goes from 90 degrees to 160 degrees
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(1); // waits 1ms for the servo to reach the position
}
analogWrite(redpin, 0);
analogWrite(bluepin, 0);
analogWrite(greenpin, 0);
} else {
// keep the door closed
myservo.write(pos);
analogWrite(redpin, 255);
analogWrite(bluepin, 255);
analogWrite(greenpin, 255);
}
// Metal bin
if (sensor_read_metal2 == 1) {
for (pos_M = 160; pos_M >= 90; pos_M -= 1) { // goes from 160 degrees to 90 degrees
myservo_M.write(pos_M); // tell servo to go to position in variable 'pos'
delay(1); // waits 1ms for the servo to reach the position
}
analogWrite(redpin_M, 255);
analogWrite(bluepin_M, 0);
analogWrite(greenpin_M, 255);
delay(2500);
for (pos_M = 90; pos_M <= 160; pos_M += 1) { // goes from 90 degrees to 160 degrees
myservo_M.write(pos_M); // tell servo to go to position in variable 'pos'
delay(1); // wait 1ms for the servo to reach the position
}
analogWrite(redpin_M, 0);
analogWrite(bluepin_M, 0);
analogWrite(greenpin_M, 0);
} else {
// keep the door closed
myservo_M.write(pos_M);
analogWrite(redpin_M, 255);
analogWrite(bluepin_M, 255);
analogWrite(greenpin_M, 255);
}
}
Note: The code provided has some syntax errors and inconsistencies with the pin definitions and the actual wiring of the circuit. These issues need to be addressed for the code to function correctly with the given hardware configuration.