hi guys!
i have tried coding a 7 seg 4 digit CA display but shadowing of digits occurs
so inresing refresh rates solves it but digits start blinking
i will be reallu obliged if someone points out my mistake.
here is the code :
// 74hc595 pn Q7,Q6,Q5,Q4,Q3,Q2,Q1,Q0
// mapping to DP, G, F, E, D, C, B, A
// 595 ip as per 595.xls spreadsheet
// 595 op fed to uln 2003 ip therefore CC bit format.
// digit shadowing occurs at 5ms refresh rate
int refresh=5;
byte dig[4]= {B00111111,
B00000110,
B01011011,
B01001111, //o
};
int latchpin=2;
int clockpin=3;
int datapin=4;
int dig1=5;
int dig2=6;
int dig3=7;
int dig4=8;
void setup() {
// put your setup code here, to run once:
for (int i=2;i<9;i++)
pinMode(i,OUTPUT);
}
void displaydigit(byte digit)
{
digitalWrite(latchpin, LOW);
shiftOut(datapin,clockpin,MSBFIRST,digit);
digitalWrite(latchpin,HIGH);
}
void digit_pos()
{
{
digitalWrite(dig1, LOW); // digit 1 on for CC type display
digitalWrite(dig2, HIGH); // digit 2 off
digitalWrite(dig3, HIGH); // digit 3 off
digitalWrite(dig4, HIGH); // digit 4 off
displaydigit(dig[0]);
delay(refresh); // display hold
digitalWrite(dig1, HIGH);
digitalWrite(dig2, LOW);
digitalWrite(dig3, HIGH);
digitalWrite(dig4, HIGH);
displaydigit(dig[1]);
delay(refresh);
digitalWrite(dig1, HIGH);
digitalWrite(dig2, HIGH);
digitalWrite(dig3, LOW);
digitalWrite(dig4, HIGH);
displaydigit(dig[2]);
delay(refresh);
digitalWrite(dig1, HIGH);
digitalWrite(dig2, HIGH);
digitalWrite(dig3, HIGH);
digitalWrite(dig4, LOW);
displaydigit(dig[3]);
delay(refresh);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
}
}
void loop() {
// put your main code here, to run repeatedly:
digit_pos();
}
cheers,
marrc