Kód arduina:
Kód: Vybrat vše
int tempo = 4;
void changeColor() {
int sec = dt.second;
analogWrite(green, map(sec, 0, 59, 0, 255));
analogWrite(red, map(sec, 0, 59, 255, 0));
}
TimedAction color = TimedAction(1, changeColor);
void loop() {
color.check();
dt = clock.getDateTime();
hour1 = dt.hour / 10;
hour2 = dt.hour % 10;
minute1 = dt.minute / 10;
minute2 = dt.minute % 10;
digit(1);
segments(hour1);
delay(tempo);
digit(2);
segments(hour2);
delay(tempo);
digit(3);
segments(minute1);
delay(tempo);
digit(4);
segments(minute2);
delay(tempo);
}
void digit(int digit) {
switch (digit) {
case 0:
PORTB = B00000000;
break;
case 1:
PORTB = B00001000;
break;
case 2:
PORTB = B00000100;
break;
case 3:
PORTB = B00000010;
break;
case 4:
PORTB = B00000001;
break;
}
}
void segments(int number) {
switch (number) {
case 0:
PORTL = B01111110;
break;
case 1:
PORTL = B00110000;
break;
case 2:
PORTL = B01101101;
break;
case 3:
PORTL = B01111001;
break;
case 4:
PORTL = B00110011;
break;
case 5:
PORTL = B01011011;
break;
case 6:
PORTL = B01011111;
break;
case 7:
PORTL = B01110000;
break;
case 8:
PORTL = B01111111;
break;
case 9:
PORTL = B01111011;
break;
}
}
Vynechal jsem deklaraci proměnných a definování jednotlivých pinů. Nezáleží na tom jaké tempo (delay) nastavím, jestli 400ms nebo 5ms, číslice se stále zobrazují kde nemají.
Obrázky jsou při napájení UDN cca 9,6V, pokud snížím na 8V tak se to tolik neprojevuje. Kde může být problém v programu, nebo v elektronice, je možné že je chyba v UDN2981?