#include #define END_STATE 3//max compression Servo tap_servo; Servo turn_servo; int sensor_pin = 2;//IR sensor at pin 2 int tap_servo_pin = 3;//tap servo at pin 3 int turn_servo_pin = 4;//turn servo at pn 4 int val = 0;//variable for IR sensor int count = 0;//variable for counting compression void setup() { pinMode(5, OUTPUT); pinMode(6, OUTPUT); digitalWrite(5,LOW); digitalWrite(6,LOW); pinMode(sensor_pin, INPUT); tap_servo.attach(tap_servo_pin); turn_servo.attach(turn_servo_pin); turn_servo.write(0); tap_servo.write(0); } void loop()//main code run repeatedly { val = digitalRead(sensor_pin);//read IR sensor if (val==0)//IR sensor detected object { delay(800);// wait for sensor to stabilize if (val==0)//check again for object detected { digitalWrite(5,HIGH);//red led turn on to indicate object is detected digitalWrite(6,LOW);//green led turn off to indicate tap servo is not ready to turn tap_servo.write(180);//tap servo is turning to 180 degree i.e. executing compression delay(800); tap_servo.write(0);//tap servo is turning to 0 degree i.e. release compression delay(800); count++;//counting compression executed by tap servo } } while(val==0)//no executing compression if object remain detected { tap_servo.write(0);//tap servo remain at 0 degree delay(200); val = digitalRead(sensor_pin);//read IR sensor } digitalWrite(5,LOW);//reset red led digitalWrite(6,HIGH);//reset green led if (count==END_STATE)//check counter for max compression on a bottle used, when max is reached than change bottle { delay(500); turn_servo.write(180);//tap servo turning to 180 degree for(int x = 0;x<=5;x++)//blink LEDs x times during tap servo turning to 180 degree { digitalWrite(5,HIGH); digitalWrite(6,LOW); delay(100); digitalWrite(5,LOW); digitalWrite(6,HIGH); delay(100); } turn_servo.write(0);//tap servo turn to 0 degree for(int x = 0;x<=5;x++)//blink LEDs x times during servo turn to 0 degree { digitalWrite(5,HIGH); digitalWrite(6,LOW); delay(100); digitalWrite(5,LOW); digitalWrite(6,HIGH); delay(100); } count=0;//reset counter after bottle changed } }