Vending machine


#1

Hey, i need help to make a vending machine and my idea is just simple I have 4 columns in my vending machine with 4 buttons and 4 servo motors but I don’t know how to connect it all I want is just that when I push button 1 first a small light blinks and the servo motor start moving for 1 sec and this applies to all 4 buttons. thanks


#2

Hi,

Here’s a link for the connection of the components you described above on circuito.io

https://www.circuito.io/app?components=97,97,97,97,9442,11021,2345678,2345678,2345678,2345678

If you are planning to build a vending machine you should consider using continues rotation servo like f.e the Continuous Rotation Micro Servo - FS90R

the code for the scenario above is quite simple and straight forward, it can be based on the example code on the link above

Here’s a starting point:

// Main logic of your circuit. It defines the interaction between the components you selected. After setup, it runs over and over again, in an eternal loop.
void loop() 
{
    
    if(pushButton_1.read()==HIGH) {               // if the button pressed do the following:
    servo9g_1.attach(SERVO9G_1_PIN_SIG);         // 1. attach the servo to correct pin to control it.
    servo9g_1.write(servo9g_1TargetPosition);  // 2. turns servo to target position. Modify target position by modifying the 'ServoTargetPosition' definition above.
    delay(500);                              // 3. waits 500 milliseconds (0.5 sec). change the value in the brackets (500) for a longer or shorter delay in milliseconds.
    servo9g_1.write(servo9g_1RestPosition);    // 4. turns servo back to rest position. Modify initial position by modifying the 'ServoRestPosition' definition above.
    delay(500);                              // 5. waits 500 milliseconds (0.5 sec). change the value in the brackets (500) for a longer or shorter delay in milliseconds.
    servo9g_1.detach();                    // 6. release the servo to conserve power. When detached the servo will NOT hold it's position under stress.

    }
    else if(pushButton_2.read()==HIGH) {               // if the button pressed do the following:
    servo9g_2.attach(SERVO9G_2_PIN_SIG);         // 1. attach the servo to correct pin to control it.
    servo9g_2.write(servo9g_2TargetPosition);  // 2. turns servo to target position. Modify target position by modifying the 'ServoTargetPosition' definition above.
    delay(500);                              // 3. waits 500 milliseconds (0.5 sec). change the value in the brackets (500) for a longer or shorter delay in milliseconds.
    servo9g_2.write(servo9g_2RestPosition);    // 4. turns servo back to rest position. Modify initial position by modifying the 'ServoRestPosition' definition above.
    delay(500);                              // 5. waits 500 milliseconds (0.5 sec). change the value in the brackets (500) for a longer or shorter delay in milliseconds.
    servo9g_2.detach();                    // 6. release the servo to conserve power. When detached the servo will NOT hold it's position under stress.

    }
    else if(pushButton_3.read()==HIGH) {               // if the button pressed do the following:
    servo9g_3.attach(SERVO9G_3_PIN_SIG);         // 1. attach the servo to correct pin to control it.
    servo9g_3.write(servo9g_3TargetPosition);  // 2. turns servo to target position. Modify target position by modifying the 'ServoTargetPosition' definition above.
    delay(500);                              // 3. waits 500 milliseconds (0.5 sec). change the value in the brackets (500) for a longer or shorter delay in milliseconds.
    servo9g_3.write(servo9g_3RestPosition);    // 4. turns servo back to rest position. Modify initial position by modifying the 'ServoRestPosition' definition above.
    delay(500);                              // 5. waits 500 milliseconds (0.5 sec). change the value in the brackets (500) for a longer or shorter delay in milliseconds.
    servo9g_3.detach();                    // 6. release the servo to conserve power. When detached the servo will NOT hold it's position under stress.

    }
    else if(pushButton_4.read()==HIGH) {               // if the button pressed do the following:
    servo9g_4.attach(SERVO9G_4_PIN_SIG);         // 1. attach the servo to correct pin to control it.
    servo9g_4.write(servo9g_4TargetPosition);  // 2. turns servo to target position. Modify target position by modifying the 'ServoTargetPosition' definition above.
    delay(500);                              // 3. waits 500 milliseconds (0.5 sec). change the value in the brackets (500) for a longer or shorter delay in milliseconds.
    servo9g_4.write(servo9g_4RestPosition);    // 4. turns servo back to rest position. Modify initial position by modifying the 'ServoRestPosition' definition above.
    delay(500);                              // 5. waits 500 milliseconds (0.5 sec). change the value in the brackets (500) for a longer or shorter delay in milliseconds.
    servo9g_4.detach();                    // 6. release the servo to conserve power. When detached the servo will NOT hold it's position under stress.
    }
}