#define PIN_DIS_SEGMENTY PORTD
#define PIN_DIS_KATODY PORTB
#define PIN_TLACITKO_T1 2
#define PIN_TLACITKO_T2 3
char znak [] = {0b11111100,0b01100000,0b11011010,0b11110010,
0b01100110,0b10110110,0b10111110,0b11100000,0b11111110,0b11110110};
int cislo = 0;
int j, d, s, t = 0;
volatile uint8_t regT1 = PORTB; // Register pre tlačidlo T1
volatile uint8_t bitT1 = 2; // Bit v registri pre tlačidlo T1
volatile uint8_t regT2 = PORTB; // Register pre tlačidlo T2
volatile uint8_t bitT2 = 3; // Bit v registri pre tlačidlo T2
void setup() {
// Serial.begin(9600); // Odkomentujte ak potrebujete Serial
DDRD |= 0b11111111;
PORTD &= 0b00000000;
DDRB |= 0b00001111;
setupButtons();
}
void setupButtons() {
// Nastavenie pinov tlačidiel
pinMode(PIN_TLACITKO_T1, INPUT_PULLUP);
pinMode(PIN_TLACITKO_T2, INPUT_PULLUP);
}
void loop() {
j = (cislo / 1) % 10; // jednotky - zvysok po deleni 10timi
d = (cislo / 10) % 10; // desiatky - zvysok po deleni 10timi
s = (cislo / 100) % 10; // stovky - zvysok po deleni 10timi
t = (cislo / 1000) % 10; // tisicky - zvysok po deleni 10timi
// Kontrola tlačidiel
if ((regT1 & (1 << bitT1)) == 0) {
// Tlačidlo T1 stlačené
cislo++;
}
if ((regT2 & (1 << bitT2)) == 0) {
// Tlačidlo T2 stlačené
cislo--;
}
// Zobrazenie čísla
PIN_DIS_SEGMENTY = znak[t];
PIN_DIS_KATODY |= 0b00001111; // vsetky katody na 1
PIN_DIS_KATODY &= 0b11111110; // 1 katoda na nulu -tisicky
delay(500);
PIN_DIS_SEGMENTY = znak[s];
PIN_DIS_KATODY |= 0b00001111;
PIN_DIS_KATODY &= 0b11111101; // 2 katoda na nulu -stovky
delay(500);
// ... (zvyšok kódu)
}