Hello, i am pretty new to Arduino programming and i was programming a 1 digit, 7 Segment counter that counts up from 0-9 (Repeat) when "BUTTON" is pressed and counts down from current count to 0 when "BUTTON2" is pushed, i've been trying for days now to make it so when i push the first button a second time, the count pauses at current count, i've tried bouncing, INPUT_PULLUP and none has worked.
Could anyone please help me or give me some advice? it would be very much appreciated.
Code:
#define A 3
#define B 4
#define C 6
#define D 7
#define E 8
#define F 9
#define G 10
#define BUTTON2 12
#define BUTTON 2
const int Wait = 500;
// Common catode;
// on when pin is low
// and off when pin is high
#define ON HIGH
#define OFF LOW
int count = 0; // current display count
int val = LOW; // digital input from button
int val2 = LOW;
bool Last_State = false;
bool Last_State2 = false;
void setup()
{
pinMode(BUTTON,INPUT); // Attach the debouncer to a pin with INPUT_PULLUP mode
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(BUTTON2, INPUT);
zero();
}
void loop()
{
val = digitalRead(12);
val2 = digitalRead(2);
// Turn on the LED if either button is pressed :
if (val == HIGH && Last_State == true)
{
Last_State = false;
Last_State2= false;
}
if (val == HIGH && Last_State == false || val == HIGH && Last_State2 == true)
{
Last_State = true;
Last_State2 = false;
count++;
delay(Wait);
Casey();
}
if (val2 == HIGH || Last_State2 == true || val2 == HIGH && Last_State == true)
{
Last_State = false;
Last_State2 = true;
delay(Wait);
count--;
Casey();
}
else if (count < 0)
{
count = 0;
}
else if (count > 9)
{
count = 0;
zero();
}
}
void Casey()
{
switch (count) {
case 0:
zero();
break;
case 1:
one();
break;
case 2:
two();
break;
case 3:
three();
break;
case 4:
four();
break;
case 5:
five();
break;
case 6:
six();
break;
case 7:
seven();
break;
case 8:
eight();
break;
case 9:
nine();
break;
}
}
// 0 => ABCDEF
void zero() {
digitalWrite(A, ON);
digitalWrite(B, ON);
digitalWrite(C, ON);
digitalWrite(D, ON);
digitalWrite(E, ON);
digitalWrite(F, ON);
digitalWrite(G, OFF);
}
// 1 => BC
void one() {
digitalWrite(A, OFF);
digitalWrite(B, ON);
digitalWrite(C, ON);
digitalWrite(D, OFF);
digitalWrite(E, OFF);
digitalWrite(F, OFF);
digitalWrite(G, OFF);
}
// 2 => ABDEG
void two() {
digitalWrite(A, ON);
digitalWrite(B, ON);
digitalWrite(C, OFF);
digitalWrite(D, ON);
digitalWrite(E, ON);
digitalWrite(F, OFF);
digitalWrite(G, ON);
}
// 3 => ABCDG
void three() {
digitalWrite(A, ON);
digitalWrite(B, ON);
digitalWrite(C, ON);
digitalWrite(D, ON);
digitalWrite(E, OFF);
digitalWrite(F, OFF);
digitalWrite(G, ON);
}
// 4 => BCFG
void four() {
digitalWrite(A, OFF);
digitalWrite(B, ON);
digitalWrite(C, ON);
digitalWrite(D, OFF);
digitalWrite(E, OFF);
digitalWrite(F, ON);
digitalWrite(G, ON);
}
// 5 => ACDFG
void five() {
digitalWrite(A, ON);
digitalWrite(B, OFF);
digitalWrite(C, ON);
digitalWrite(D, ON);
digitalWrite(E, OFF);
digitalWrite(F, ON);
digitalWrite(G, ON);
}
// 6 => ACDEFG
void six() {
digitalWrite(A, ON);
digitalWrite(B, OFF);
digitalWrite(C, ON);
digitalWrite(D, ON);
digitalWrite(E, ON);
digitalWrite(F, ON);
digitalWrite(G, ON);
}
// 7 => ABC
void seven() {
digitalWrite(A, ON);
digitalWrite(B, ON);
digitalWrite(C, ON);
digitalWrite(D, OFF);
digitalWrite(E, OFF);
digitalWrite(F, OFF);
digitalWrite(G, OFF);
}
// 8 => ABCDEFG
void eight() {
digitalWrite(A, ON);
digitalWrite(B, ON);
digitalWrite(C, ON);
digitalWrite(D, ON);
digitalWrite(E, ON);
digitalWrite(F, ON);
digitalWrite(G, ON);
}
// 9 => ABCDFG
void nine() {
digitalWrite(A, ON);
digitalWrite(B, ON);
digitalWrite(C, ON);
digitalWrite(D, ON);
digitalWrite(E, OFF);
digitalWrite(F, ON);
digitalWrite(G, ON);
}
