const int EUR_010 = 2; const int EUR_020 = 3; const int EUR_050 = 4; const int EUR_100 = 5; const int EUR_200 = 6; float i = 0; const int NEW_LINE = 10; void setup() { Serial.begin(9600); pinMode(EUR_010, OUTPUT); pinMode(EUR_020, OUTPUT); pinMode(EUR_050, OUTPUT); pinMode(EUR_100, OUTPUT); pinMode(EUR_200, OUTPUT); } void loop() { Serial.println("loops"); delay(1000); if (Serial.available() > 0) { String command = Serial.readStringUntil(NEW_LINE); parsePcCommand(command); } } void parsePcCommand(String command){ if(command.equals("EJECT 010")){ ejectCoin(EUR_010); }else if(command.equals("EJECT 020")){ ejectCoin(EUR_020); }else if(command.equals("EJECT 050")){ ejectCoin(EUR_050); }else if(command.equals("EJECT 100")){ ejectCoin(EUR_100); }else if(command.equals("EJECT 200")){ ejectCoin(EUR_200); }else if(command.equals("EJECT EACH")){ Serial.println("ejecting all coins, 1 at a time..."); parsePcCommand("EJECT 200"); parsePcCommand("EJECT 100"); parsePcCommand("EJECT 050"); parsePcCommand("EJECT 020"); parsePcCommand("EJECT 010"); Serial.println("all coins ejected!"); }else{ Serial.print("Unknown command:"); Serial.println(command); } } void ejectCoin(int pin){ servo_pwm(pin, 500); servo_pwm(pin, 2000); delay(100); } void servo_pwm(int pin, int dur){ int LoopCount = 35; for(i = 0; i < LoopCount; ++i){ digitalWrite(pin, HIGH); delayMicroseconds(dur); digitalWrite(pin, LOW); delayMicroseconds(20000 - dur); } }