#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Adresse des I2C-LCD-Displays und initialisieren des Display ,mit der Größe 16x2
// Definiere die Pins, an denen der DIP-Schalter angeschlossen ist
const int dipSwitchPins[8] = {2,3,4,5,6,7,8,9};
void setup() {
// Initialisieren des LCD-Displays
lcd.init();
lcd.backlight();
lcd.println("BCD => DEZ:");
// Setzen der Pins des DIP-Schalters als Eingänge
for (int i = 2; i <=9; i++) {
pinMode(i, INPUT_PULLUP);
Serial.begin(115200);
}
}
void loop() {
// Lese den Wert des DIP-Schalters
byte ones = 0;
byte setNumber = 0;
for (int i = 9; i >= 2; i--)
{
ones = ones <<1;
setNumber= !digitalRead(i);
ones = ones | setNumber;
}
// Schreibe die gelesenen Werte auf das LCD-Display
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("BCD zu Dez ");
lcd.setCursor(8, 1);
lcd.print(ones);
delay(500); // Kurze Verzögerung, um das Flackern zu reduzieren
}
/*
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Adresse des I2C-LCD-Displays und initialisieren des Display ,mit der Größe 16x2
// Definiere die Pins, an denen der DIP-Schalter angeschlossen ist
const int dipSwitchPins[8] = {2,3,4,5,6,7,8,9};
void setup() {
// Initialisiere das LCD-Display
lcd.init();
lcd.backlight();
// Setze die Pins des DIP-Schalters als Eingänge
for (int i = 2; i <=9; i++) {
pinMode(dipSwitchPins[i], INPUT);
digitalWrite(dipSwitchPins[i], HIGH); // Aktiviere Pull-Up-Widerstände
}
}
void loop() {
// Lese den Wert des DIP-Schalters
byte ones = 0; //Einerstelle
byte tens = 0; //Zehnerstelle
byte sum;
for (int i = 0; i <=3 ; i++)
ones = ones + (!digitalRead(i+2) <<i);
for (int i = 0; i <=3 ; i++)
tens = tens + (!digitalRead(i+6) <<i);
sum = ones + 10*tens;
if (ones >=9 && tens >=9)
{
// Schreibe die gelesenen Werte auf das LCD-Display
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("FEHLER! ");
}
else{
lcd.setCursor(8, 1);
lcd.print(sum);
lcd.print(" ");
}
delay(500); // Kurze Verzögerung, um das Flackern zu reduzieren
}
*/