int taster = 0;
int taster_letzter_stand = 0;
int zaehler = 0;
String zaehler_in_binaer = "";
void setup() {
// put your setup code here, to run once:
pinMode(8, INPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
Serial.begin(9600);
}
void loop() {
taster = digitalRead(8); // Liest den aktuellen Zustand des Tasters
// Überprüft, ob der Taster gerade gedrückt wurde (Flankenwechsel)
if (taster != taster_letzter_stand) {
if (taster == HIGH) {
// Wenn der Taster gerade gedrückt wurde
zaehler++; // Zählt die Variable hoch
if (zaehler == 15) {
zaehler = 0;
}
zaehler_in_binaer = dezimalZuDual(zaehler);
Serial.print("Binaer: ");
Serial.println(zaehler_in_binaer); // Gibt den aktuellen Wert auf der Konsole aus
Serial.print("Dezimal: ");
Serial.println(zaehler);
}
schalteAusgaenge(zaehler_in_binaer);
delay(50); // Entprellung (debouncing)
}
taster_letzter_stand = taster; // Speichert den Zustand für den nächsten Vergleich
}
String dezimalZuDual(int dezimal) {
String dual = "";
// Wenn die Zahl 0 ist, direkt zurückgeben
if (dezimal == 0) {
return "0";
}
// Umrechnung in Dualzahl
while (dezimal > 0) {
int rest = dezimal % 2; // Modulo 2 für die Dualzahl (0 oder 1)
dual = String(rest) + dual; // Reste werden vorne hinzugefügt
dezimal /= 2; // Dezimalzahl durch 2 teilen für die nächste Stelle
}
// Führende Nullen hinzufügen, um sicherzustellen, dass es 4 Ziffern sind
while (dual.length() < 4) {
dual = "0" + dual;
}
return dual;
}
// Funktion zur Steuerung der Ausgänge basierend auf der Dualzahl (als String)
void schalteAusgaenge(String dualZahl) {
// Schalte die Pins basierend auf den Bits der Dualzahl
// dualZahl[3] == '1' prüft, ob das niedrigste Bit 1 ist und
// setzt entsprechend den Pin 1 auf HIGH oder LOW.
digitalWrite(2, dualZahl[3] == '1' ? HIGH : LOW); // Bit 0 (LSB)
digitalWrite(3, dualZahl[2] == '1' ? HIGH : LOW); // Bit 1
digitalWrite(4, dualZahl[1] == '1' ? HIGH : LOW); // Bit 2
digitalWrite(5, dualZahl[0] == '1' ? HIGH : LOW); // Bit 3 (MSB)
}