char volba = ' ';
void setup() {
Serial.begin(9600);
DDRB = 0b00001111; //ako vystup stlpce 1 2 3
// PORTB =0b00000xxx; // bity xxx ovladame tak, ze vzdy len jeden bit na log 0, ostatne na log 1
DDRD &= 0b00001111; //ako vstup riadky A B C D
PORTD |= 0b11110000; // pullup rezistor
}
void getKey() { //funkcia vracia znak, len ked bol stalcene tlacidlo
volba = ' ';
PORTB = 0b00001110; // stlpec 1 - 0 bit reg B je na log 0, ostatne na log 1
if ((PIND & (1 << 7)) == 0) { //ak je stlacene tlacidlo, dany bit je na log 0
volba = '1';
} else if ((PIND & (1 << 6)) == 0) {
volba = '4';
} else if ((PIND & (1 << 5)) == 0) {
volba = '7';
} else if ((PIND & (1 << 4)) == 0) {
volba = '*';
}
PORTB = 0b00001101;
if ((PIND & (1 << 7)) == 0) {
volba = '2';
} else if ((PIND & (1 << 6)) == 0) {
volba = '5';
} else if ((PIND & (1 << 5)) == 0) {
volba = '8';
} else if ((PIND & (1 << 4)) == 0) {
volba = '0';
}
PORTB = 0b00001011;
if ((PIND & (1 << 7)) == 0) {
volba = '3';
} else if ((PIND & (1 << 6)) == 0) {
volba = '6';
} else if ((PIND & (1 << 5)) == 0) {
volba = '9';
} else if ((PIND & (1 << 4)) == 0) {
volba = '#';
}
PORTB = 0b00000111;
if ((PIND & (1 << 7)) == 0) {
volba = 'A';
} else if ((PIND & (1 << 6)) == 0) {
volba = 'B';
} else if ((PIND & (1 << 5)) == 0) {
volba = 'C';
} else if ((PIND & (1 << 4)) == 0) {
volba = 'D';
}
}
void loop() {
getKey();
Serial.println(volba);
}