const int inputBOn = 2; // Pin für Eingabe B ON
const int ledBOn = 3; // Grüne LED für Eingabe B ON
const int inputBOff = 4; // Pin für Eingabe B OFF
const int ledBOff = 5; // Rote LED für Eingabe B OFF
const int inputAOn = 6; // Pin für Eingabe A ON
const int ledAOn = 7; // Grüne LED für Eingabe A ON
const int inputAOff = 8; // Pin für Eingabe A OFF
const int ledAOff = 9; // Rote LED für Eingabe A OFF
const int ledOutput = 10; // Gelbe LED für Ausgabe
void setup() {
Serial.begin(9600); // Serielle Kommunikation starten
pinMode(inputBOn, INPUT_PULLUP); // Eingänge mit Pullup-Widerständen
pinMode(inputBOff, INPUT_PULLUP);
pinMode(inputAOn, INPUT_PULLUP);
pinMode(inputAOff, INPUT_PULLUP);
pinMode(ledBOn, OUTPUT);
pinMode(ledBOff, OUTPUT);
pinMode(ledAOn, OUTPUT);
pinMode(ledAOff, OUTPUT);
pinMode(ledOutput, OUTPUT);
}
void loop() {
Serial.println("Wähle eine Funktion: AND, OR, XOR, NOT, NAND, NOR");
while (Serial.available() == 0) {} // Warten auf Eingabe
String function = Serial.readStringUntil('\n');
function.trim(); // Entfernt Leerzeichen
Serial.println("Stelle die Schalter ein. Du hast 8 Sekunden...");
delay(8000); // 15 Sekunden warten
int a = !digitalRead(inputAOff); // Eingabe A: ON = grün, OFF = rot
int b = !digitalRead(inputBOff); // Eingabe B: ON = grün, OFF = rot
// LEDs für Eingaben steuern
digitalWrite(ledAOn, a);
digitalWrite(ledAOff, !a);
digitalWrite(ledBOn, b);
digitalWrite(ledBOff, !b);
// Status der Schalter und LEDs ausgeben
Serial.print("Schalter A: ");
Serial.println(a ? "ON (grün)" : "OFF (rot)");
Serial.print("Schalter B: ");
Serial.println(b ? "ON (grün)" : "OFF (rot)");
Serial.print("LED A: ");
Serial.println(a ? "grün" : "rot");
Serial.print("LED B: ");
Serial.println(b ? "grün" : "rot");
Serial.print("Gewählte Funktion: ");
Serial.println(function);
bool expectedResult;
if (function == "AND") {
expectedResult = a && b;
} else if (function == "OR") {
expectedResult = a || b;
} else if (function == "XOR") {
expectedResult = a ^ b;
} else if (function == "NOT") {
expectedResult = !a; // Beispiel für NOT a
} else if (function == "NAND") {
expectedResult = !(a && b);
} else if (function == "NOR") {
expectedResult = !(a || b);
} else {
Serial.println("Unbekannte Funktion");
return;
}
bool actualResult = expectedResult; // Das erwartete Ergebnis ist das tatsächliche Ergebnis
if (actualResult) {
Serial.println("Ergebnis: Richtig");
digitalWrite(ledOutput, HIGH); // Gelbe LED leuchtet bei richtigem Ergebnis
} else {
Serial.println("Ergebnis: Falsch");
digitalWrite(ledOutput, LOW); // Gelbe LED bleibt aus bei falschem Ergebnis
}
Serial.println("Möchtest du eine weitere Eingabe machen? (ja/nein)");
while (Serial.available() == 0) {} // Warten auf Eingabe
String response = Serial.readStringUntil('\n');
response.trim(); // Entfernt Leerzeichen
if (response != "ja") {
Serial.println("Programm beendet.");
while (true) {} // Endlosschleife, um das Programm zu stoppen
}
// LEDs für Eingaben und Ausgabe zurücksetzen
digitalWrite(ledAOn, LOW);
digitalWrite(ledAOff, LOW);
digitalWrite(ledBOn, LOW);
digitalWrite(ledBOff, LOW);
digitalWrite(ledOutput, LOW);
}