Hey guys,
I'm developing an alarm clock by building the circuit and code step by step. Now im stuck with a little problem:
In this stage of the project, I want to have an arduino uno controlling a one-digit-seven-segment-display with common anode . It has two buttons. When you start the Arduino, the display displays '0'. When you click the one button, it will count up and vice versa.
Somehow sometimes some digits (and thus cases in the code) are skipped. I don't understand, how this happens. Do You have any idea or hint?
Thanks in advance!
here goes the build:
and here goes the code:
int button0 = 0;
int button1 = 0;
int previous0 = 0;
int previous1 = 0;
int currentState = 0;
long time = 0;
long debounce = 10;
void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(10, INPUT);
pinMode(11, INPUT);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
}
void loop() {
switch (currentState) {
case 0:
//0
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
break;
case 1:
//1
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
case 2:
//2
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
break;
case 3:
//3
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
break;
case 4:
//4
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
break;
case 5:
//5
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
break;
case 6:
//6
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
break;
case 7:
//7
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
case 8:
//8
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
break;
case 9:
//9
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
break;
}
button0 = digitalRead(10);
button1 = digitalRead(11);
if (button0 == HIGH && previous0 == LOW && millis() - time > debounce) {
if (currentState == 9) {
currentState = 0;
}
else {
currentState = currentState + 1;
}
}
if (button1 == HIGH && previous1 == LOW && millis() - time > debounce) {
if (currentState == 0) {
currentState = 9;
}
else {
currentState = currentState - 1;
}
}
previous0 = button0;
previous1 = button1;
}
btw: this is my first post and my first project with arduino