Quantcast
Channel: Arduino Forum - Latest topics
Viewing all articles
Browse latest Browse all 15265

Help me with my 1st project

$
0
0

good day. im currently working on my 1st project, it is a vendo machine. and i am having a hard time on it because my && operator is being skipped and also when inserting coins to the coinslot it gives different value it is much less from the value it should be for example i inserted 10pesos the only value that it gives is 5 or 6

#include <Servo.h>

#define coinSlot 11  // coin slot pin
#define button1 3    // button 1 pin
#define button2 4    // button 2 pin
#define button3 5    // button 3 pin
#define button4 7    // button 6 pin
#define servoPin1 8  // servo 1 pin
#define servoPin2 9  // servo 2 pin

Servo servo1;       // create servo 1 object
Servo servo2;       // create servo 2 object
int coinCount = 0;  // variable to store coin count

void setup() {
  Serial.begin(9600);
  servo1.attach(servoPin1);         // attaches the servo 1 on pin 6
  servo2.attach(servoPin2);         // attaches the servo 2 on pin 7
  pinMode(coinSlot, INPUT_PULLUP);  // coin slot as input
  pinMode(button1, INPUT_PULLUP);          // button 1 as input
  pinMode(button2, INPUT_PULLUP);          // button 2 as input
  pinMode(button3, INPUT_PULLUP);          // button 3 as input
  pinMode(button4, INPUT_PULLUP);          // button 4 as input
}

void loop() {
  if (digitalRead(coinSlot) < 1) {  // if a coin is inserted
    delay(30);
    coinCount++;                    // increment coinCount
    Serial.println(coinCount);
  }

  if ((digitalRead(button1) ==  HIGH) && (coinCount == 10)) {  // if 10 coins are inserted and button 1 is pressed
    delay(500);
    servo1.write(180);                                 // turn servo 1 to 90 degrees
    coinCount = 0;                                    // reset coinCount
  }

  if (coinCount == 20 && digitalRead(button2) < HIGH) {  // if 20 coins are inserted and button 2 is pressed
    servo2.write(180);                                 // turn servo 2 to 90 degrees
    coinCount = 0;                                    // reset coinCount
  }

  if (coinCount == 50 && digitalRead(button3) < HIGH) {  // if 50 coins are inserted and button 3 is pressed
    servo1.write(90);                                 // turn servo 1 to 90 degrees
    servo2.write(90);                                 // turn servo 2 to 90 degrees
    delay(500);                                       // wait for a second
    servo2.write(90);                                 // turn servo 2 to 90 degrees again
    coinCount = 0;                                    // reset coinCount
  }

  if (coinCount == 100 && digitalRead(button4) < HIGH) {  // if 100 coins are inserted and button 2 is pressed
    for (int i = 0; i < 5; i++) {                      // loop 5 times
      servo2.write(90);                                // turn servo 2 to 90 degrees
      delay(500);                                      // wait for a second
    }
    coinCount = 0;  // reset coinCount
  }
}

12 posts - 4 participants

Read full topic


Viewing all articles
Browse latest Browse all 15265

Trending Articles