I am trying to program a basic counter using 7segment display and a button. What I am trying to achieve is the following:
- Display 0 at the beginning.
- When the button is pressed: Start Loop 0-9
- Display 0 when the button is pressed the second time.
So basically the button should function as ON/OFF switch for the looping numbers function.
So far I have managed to change the mode from displaying 0 to looping 0-9, but can't seem to get changing the mode back to displaying 0:
int buttonPin = 10; // Button connected to digital pin 10.
// variable for reading the pushbutton status
boolean buttonPressed = false;
int mode;
void setup() {
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(13, OUTPUT);
}
void displayZero() {
//while (buttonState == true){
// Displays 0.
digitalWrite(11,1);
//button();
delay(1000);
//}
}
void displayCounter() {
// Displays 0.
digitalWrite(4,1);
digitalWrite(11,1);
delay(1000);
//Displays 1.
digitalWrite(2,1);
digitalWrite(3,1);
digitalWrite(4,1);
digitalWrite(8,1);
delay(1000);
//Displays 2.
digitalWrite(2,0);
digitalWrite(8,0);
digitalWrite(6,0);
digitalWrite(4,0);
digitalWrite(9,1);
digitalWrite(3,1);
digitalWrite(11,0);
delay(1000);
//Displays 3.
digitalWrite(4,1);
digitalWrite(9,0);
digitalWrite(11,0);
delay(1000);
//Displays 4.
digitalWrite(2,1);
digitalWrite(8,1);
digitalWrite(3,0);
delay(1000);
//Displays 5.
digitalWrite(6,1);
digitalWrite(2,0);
digitalWrite(8,0);
digitalWrite(11,0);
delay(1000);
//Displays 6.
digitalWrite(4,0);
delay(1000);
//Displays 7.
digitalWrite(3,1);
digitalWrite(4,1);
digitalWrite(6,0);
digitalWrite(8,1);
digitalWrite(11,1);
delay(1000);
//Displays 8.
digitalWrite(3,0);
digitalWrite(4,0);
digitalWrite(8,0);
digitalWrite(11,0);
delay(1000);
//Displays 9.
digitalWrite(4,1);
//button();
delay(1000);
}
void loop() {
// Check button status.
int buttonStatus = digitalRead(buttonPin);
if (buttonStatus == HIGH)
{
// Checks if button is pressed and changes buttonPressed from false to true.
buttonPressed = true;
// While button is pressed.
while(buttonPressed == true) {
// Calls displayCounter method 10 times.
for (int i=0; i<10; i++) {
displayCounter();
delay(30);
buttonPressed == false;
}
}
}
else if (buttonStatus == LOW)
displayZero();
}