//drinky0211 int wait=0;//wait=1 means delivery has been made int snack=1;//no snack detected int astro=1;//no astro request detected const int pwmA=3; const int pwmB=11; const int brakeA=9; const int brakeB=8; const int dirA=12; const int dirB=13; void setup() { pinMode(12,OUTPUT);//Motor channel A pinMode(9,OUTPUT);//Brake channel A pinMode(13,OUTPUT);//Motor channel B pinMode(8,OUTPUT);//Brake channel B pinMode(2,INPUT_PULLUP);//snack detector pinMode(6,INPUT_PULLUP);//astro request detector digitalWrite(dirA,HIGH);//raise can stoppers digitalWrite(dirB,HIGH); analogWrite(pwmA,200); analogWrite(pwmB,200); delay(3000); analogWrite(pwmA,0);//stop can stoppers analogWrite(pwmB,0); astro=digitalRead(6); if (astro==0) { wait=1; } } void loop() { while (wait==0) { astro=digitalRead(6); if (astro==0) {//snack request initiated) delay(2000); astro=digitalRead(6);//read again if (astro==0) {//time to dispense digitalWrite(12,LOW);//lower can release digitalWrite(9,LOW);//disengage brake analogWrite(3,200);//turn on motor delay(3000); analogWrite(3,0);//stop motor power digitalWrite(12,HIGH);//raise can release analogWrite(3,200); delay(3000); analogWrite(3,0); delay(500); digitalWrite(13,LOW);//lower can divider digitalWrite(8,LOW);//disengage brake analogWrite(11,200); delay(3000); digitalWrite(11,0); delay(500); digitalWrite(13,HIGH);//raise can divider analogWrite(11,200); delay(3000); analogWrite(11,0); wait=1; } } } astro=digitalRead(6); if (astro==1) {//left the charger delay(45000); astro=digitalRead(6); if (astro==1) {//reset and wait wait=0; } } }