Hey. I got a project with a 7 segment leds and 3 buttons to do a counter. Up button, adds 1 number and displays it with LEDs; Down Button susbstracts 1 number, if number is 9 and click up, it should go to 0, if number is 0 and click down, it should go to nine, finally A Button resets to 0.
I ve been coding all afternoon and finally got it to compile, I upload it to my Arduino but it won't work. It just displays the 0 and nothing happens when I click up or down button, I know they work because I ve used them for other programs
Could some one take a look on my code and tell me whats wrong, ill be very thankful since its my final project !!!1
Thanks in advance
int switchUpPin = 5;
int switchDownPin = 7;
int counter = 0;
int buttonUpState = 0;
int lastButtonUpState = 0;
int buttonDownState = 0;
int lastButtonDownState = 0;
void displayZero() {
Serial.println("zero");
digitalWrite (11, true);
digitalWrite (13, true);
digitalWrite (8, true);
digitalWrite (9, true);
digitalWrite (12, true);
digitalWrite (A0, true);
}
void setup()
{
Serial.begin(9600);
Serial.begin(9600);
pinMode(A0, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(switchUpPin, INPUT_PULLUP);
pinMode(switchDownPin, INPUT_PULLUP);
}
void loop() {
displayZero();
buttonUpState = digitalRead(switchUpPin);
buttonDownState = digitalRead(switchDownPin);
//Detecting button press and getting the button status
//Do this for the button up
if (buttonUpState != lastButtonUpState)
{
if (buttonUpState == HIGH)
{
//Reset the counter to -1
if (counter == 9)
{
counter = +1;
}
//Increase the counter by 1
counter++;
//Print the counter to the console and calling the function
Serial.println(counter);
changeNumber(counter);
//Delaying by 250 ms
delay(250);
}
else
{
Serial.println("OFF");
}
//Delay to avoid button bouncing
delay(50);
}
//Do this for the button down
if (buttonDownState != lastButtonDownState)
{
if (buttonDownState == HIGH)
{
//Set the counter to 10
if (counter == 0)
{
counter = 10;
}
//Decreases the counter by 1
counter--;
////Print the counter to the console and calling the function
Serial.println(counter);
changeNumber(counter);
//Delaying by 250 ms
delay(250);
}
else
{
Serial.println("OFF");
}
//Delay to avoid button bouncing
delay(50);
}
//Calling the function changeNumber with the arg counter
changeNumber(counter);
}
//The function to display the numbers
void changeNumber(int buttonPress)
{
switch (buttonPress)
{
//number 0
case 0:
displayZero();
break;
//number 1
case 1:
Serial.println("one");
digitalWrite (8, true);
digitalWrite (11, true);
case 2:
Serial.println("two");
digitalWrite (8, true);
digitalWrite (10, true);
digitalWrite (12, true);
digitalWrite (A0, true);
digitalWrite (13, true);
break;
case 3:
Serial.println("three");
digitalWrite (8, true);
digitalWrite (12, true);
digitalWrite (13, true);
digitalWrite (A0, true);
digitalWrite (10, true);
break;
case 4:
Serial.println("four");
digitalWrite (9, true);
digitalWrite (8, true);
digitalWrite (10, true);
digitalWrite (11, true);
break;
case 5:
Serial.println("five");
digitalWrite (A0, true);
digitalWrite (9, true);
digitalWrite (10, true);
digitalWrite (11, true);
digitalWrite (13, true);
break;
case 6:
Serial.println("six");
digitalWrite (A0, true);
digitalWrite (9, true);
digitalWrite (10, true);
digitalWrite (11, true);
digitalWrite (12, true);
digitalWrite (12, true);
break;
case 7:
Serial.println("seven");
digitalWrite (A0, true);
digitalWrite (8, true);
digitalWrite (10, true);
digitalWrite (11, true);
break;
case 8:
Serial.println("eight");
digitalWrite (8, true);
digitalWrite (9, true);
digitalWrite (11, true);
digitalWrite (10, true);
digitalWrite (12, true);
digitalWrite (A0, true);
digitalWrite (13, true);
break;
case 9:
Serial.println("nine");
digitalWrite (A0, true);
digitalWrite (9, true);
digitalWrite (8, true);
digitalWrite (10, true);
digitalWrite (11, true);
break;
}
}