(från en kabelvision dekoder)
Den har gemensamma kopplingar för segmenten och jag har 5 VCC kopplade på PWM så jag kan dimma dem vid behov.
Det funkar att tex räkna 0-9 mm men jag tänkte försöka programmera så den kan räkna från 9999 och neråt.
Hur kan man gå tillväga för tal som skall visas (9999) och då tända resp segment och visa rätt siffra?
en funktion som tänder rätt segment vid 0-9 har jag redan och den anropar jag så här
Kod: Markera allt
showDigit(9);
Jag funderade på om jag inte skulle använda modulo för att få reda på om talet har 4 siffror
Kod: Markera allt
void displayNumber(int myNumber){
//testa först om talet är 1000 eller högre
if(myNumber % 1000) {
// nu vet vi att talet har fyra siffror, tänd 1a siffran och visa rätt nummer
}
//sedan vidare till hundratal
if(myNumber % 100) {
// nu vet vi att talet har tre siffror, tänd 2a siffran och visa rätt nummer
}
//sedan vidare till tiotal
if(myNumber % 10) {
// nu vet vi att talet har 2 siffror, tänd 2a siffran och visa rätt nummer
}
//sedan vidare till ental
// nu vet vi att talet bara har 1 siffra, tänd 1a siffran och visa rätt nummer
showDigit(9);
}
eller skall man testa talet så här
Kod: Markera allt
if(myNumber > 999){
//talet är större än 999 - då skall vi tända 1a siffran
digitalWrite(gnd_4, 1); //sätter GND HIGH (tänder displayen)
int myCalculatedNumber = myNumber-999;
showdigit(myCalculatedNumber)
}
Tacksam för svar...
pst - jag vet att man kan / borde använda shift register - men jag tror det går/borde gå att lösa så här med...
/N