Hi, I've been trying to get two 7 segments to count up to 99 when I have an digital switch input. Currently I have adapted a 0-9 counter to include a second LED 7 segment. I thought if I could delay the second 7 segment turning on, then it would appear as if they were both on at the same time, however at the moment, one turns on and automatically turns off. So instead of getting the number 10, the left LED flashes '1' then the right turns on 0....any suggestions? I'm relatively new to this.....
// Seven-segment LED Display
// Common Cathode pins 3 and 8
// G F + A B
// | | | | | -> pins and segments they control
// ---------
// F| A |B
// |---G---| -> segments
// E| D |C
// ---------
// | | | | | -> pins and segments they control
// E D + C DP
// Segments that make each number when lit:
// 0 => ABCDEF
// 1 => BC
// 2 => ABDEG
// 3 => ABCDG
// 4 => BCFG
// 5 => ACDFG
// 6 => ACDEFG
// 7 => ABC
// 8 => ABCDEFG
// 9 => ABCDFG
// Arduino digital pins used to light up
// corresponding segments on the LED display
#define A 7
#define B 8
#define C 4
#define D 3
#define E 2
#define F 6
#define G 5
#define gnd2 9
#define gnd1 10
// Pushbutton connected to pin 13
#define BUTTON 13
// Common cathode;
// on when pin is high
// and off when pin is low
#define OFF LOW
#define ON HIGH
int count = 0; // current display count
int val = 0; // digital input from button
void setup() {
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(BUTTON, INPUT);
pinMode(gnd1,OUTPUT);
pinMode(gnd2, OUTPUT);
zero();
}
void loop() {
val = digitalRead(BUTTON);
if (val == HIGH) {
count++;
delay(400);
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;
case 10: {
ten();
count = -1;
break;
}
}
}
}
// 0 => ABCGEF
void zero() {
digitalWrite(A, ON);
digitalWrite(B, ON);
digitalWrite(C, ON);
digitalWrite(D, ON);
digitalWrite(E, ON);
digitalWrite(F, ON);
digitalWrite(G, OFF);
digitalWrite(gnd2,ON);
}
// 1 => CG
void one() {
digitalWrite(A, OFF);
digitalWrite(B, ON);
digitalWrite(C, ON);
digitalWrite(D, OFF);
digitalWrite(E, OFF);
digitalWrite(F, OFF);
digitalWrite(G, OFF);
digitalWrite(gnd2,ON);
}
// 2 => ABDFG
void two() {
digitalWrite(A, ON);
digitalWrite(B, ON);
digitalWrite(C, OFF);
digitalWrite(D, ON);
digitalWrite(E, ON);
digitalWrite(F, OFF);
digitalWrite(G, ON);
digitalWrite(gnd2,ON);
}
// 3 => BCDFG
void three() {
digitalWrite(A, ON);
digitalWrite(B, ON);
digitalWrite(C, ON);
digitalWrite(D, ON);
digitalWrite(E, OFF);
digitalWrite(F, OFF);
digitalWrite(G, ON);
digitalWrite(gnd2,ON);
}
// 4 => CDEG
void four() {
digitalWrite(A, OFF);
digitalWrite(B, ON);
digitalWrite(C, ON);
digitalWrite(D, OFF);
digitalWrite(E, OFF);
digitalWrite(F, ON);
digitalWrite(G, ON);
digitalWrite(gnd2,ON);
}
// 5 => BCDEF
void five() {
digitalWrite(A, ON);
digitalWrite(B, OFF);
digitalWrite(C, ON);
digitalWrite(D, ON);
digitalWrite(E, OFF);
digitalWrite(F, ON);
digitalWrite(G, ON);
digitalWrite(gnd2,ON);
}
// 6 => ABCDEF
void six() {
digitalWrite(A, ON);
digitalWrite(B, OFF);
digitalWrite(C, ON);
digitalWrite(D, ON);
digitalWrite(E, ON);
digitalWrite(F, ON);
digitalWrite(G, ON);
digitalWrite(gnd2,ON);
}
// 7 => CFG
void seven() {
digitalWrite(A, ON);
digitalWrite(B, ON);
digitalWrite(C, ON);
digitalWrite(D, OFF);
digitalWrite(E, OFF);
digitalWrite(F, OFF);
digitalWrite(G, OFF);
digitalWrite(gnd2,ON);
}
// 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);
digitalWrite(gnd2,ON);
}
// 9 => BCDEFG
void nine() {
digitalWrite(A, ON);
digitalWrite(B, ON);
digitalWrite(C, ON);
digitalWrite(D, ON);
digitalWrite(E, OFF);
digitalWrite(F, ON);
digitalWrite(G, ON);
digitalWrite(gnd2,ON);
}
void ten() {
digitalWrite(A, OFF);
digitalWrite(B, ON);
digitalWrite(C, ON);
digitalWrite(D, OFF);
digitalWrite(E, OFF);
digitalWrite(F, OFF);
digitalWrite(G, OFF);
digitalWrite(gnd2,ON);
digitalWrite(gnd1,OFF);
delay(300);
digitalWrite(A, ON);
digitalWrite(B, ON);
digitalWrite(C, ON);
digitalWrite(D, ON);
digitalWrite(E, ON);
digitalWrite(F, ON);
digitalWrite(G, OFF);
digitalWrite(gnd2,OFF);
digitalWrite(gnd1,ON );
}
Thanks