// Číselné hodnoty pre 7-segmentový displej (spoločná katóda)
byte cisla[10] = {
0b00111111, // 0
0b00000110, // 1
0b01011011, // 2
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111101, // 6
0b00000111, // 7
0b01111111, // 8
0b01101111 // 9
};
void setup() {
Serial.begin(9600);
// Nastavenie pinov D2-D8 ako výstupy
DDRD |= 0b11111100; // D2 až D7 ako výstupy
DDRB |= 0b00000001; // D8 ako výstup (PB0)
Serial.println("Zadaj cislo (0-9)");
}
void loop() {
if (Serial.available()) {
char vstup = Serial.read();
if (vstup >= '0' && vstup <= '9') {
int cislo = vstup - '0'; // Konverzia znaku na číslo
zobrazCislo(cislo);
Serial.print("Zobrazene cislo: ");
Serial.println(cislo);
} else {
Serial.println("Zle");
}
}
}
// Funkcia na zobrazenie čísla
void zobrazCislo(int cislo) {
byte hodnota = cisla[cislo];
// Najprv vymažeme všetky segmenty na PORTD a PORTB
PORTD &= ~(0b11111100); // Reset D2-D7
PORTB &= ~(0b00000001); // Reset D8 (PB0)
// Nastavíme segmenty D2-D7 podľa hodnota (prvých 6 bitov)
PORTD |= (hodnota & 0b00111111) << 2; // Posunieme o 2 doprava, aby sedelo na D2-D7
// Nastavíme segment pripojený na D8 (bit 6 vstupu ide na PB0)
if (hodnota & 0b01000000) {
PORTB |= (1 << 0); // Zapni PB0
}
}