#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init();
lcd.backlight();
lcd.println("BCD => DEZ:");
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
}
byte bcd2dez(byte v0, byte v1, byte v2, byte v3)
{
return (v0 + 2*v1 + 4*v2 + 8*v3);
}
void loop()
{
byte e_bcd_1, e_bcd_2, e_bcd_3, e_bcd_4;
byte e_bcd_5, e_bcd_6, e_bcd_7, e_bcd_8;
byte einer, zehner, summe;
e_bcd_1 = !digitalRead(2);
e_bcd_2 = !digitalRead(3);
e_bcd_3 = !digitalRead(4);
e_bcd_4 = !digitalRead(5);
e_bcd_5 = !digitalRead(6);
e_bcd_6 = !digitalRead(7);
e_bcd_7 = !digitalRead(8);
e_bcd_8 = !digitalRead(9);
einer = bcd2dez(e_bcd_1, e_bcd_2, e_bcd_3, e_bcd_4);
zehner = bcd2dez(e_bcd_5, e_bcd_6, e_bcd_7, e_bcd_8);
summe = einer + 10*zehner;
if (einer > 9 || zehner > 9)
{
lcd.setCursor(3, 1);
lcd.print("FEHLER.");
}
else
{
lcd.setCursor(3, 1);
lcd.print(summe);
lcd.print(" ");
}
delay(500);
}