Hallo Leute,
bin hier ein eigentlich ganz ganz einfaches Programm am schreiben, aber es funktioniert nicht.
Sicher nur ein einfacher blöder Fehler von mir im Programm, aber ich bin zu doof um Ihn zu finden. (seit 1,5h !)
Board: Arduino MEGA
Zu testzwecken will ich beide LED´s einschalten, egal ob Merker Tor auf oder Merker Tor zu gesetzt ist.
Die Zustände der beiden Merker werden auf dem LCD Display richtig angezeigt.
Das Schalten mit den Tastern funktioniert also.
Aber die beiden LED´s werden nur bei Tor zu eingeschaltet !?!?
(Bei "Merker Tor Auf" beide LED´s aus)
// Rev. 1 Taster 1 an LCD anzeigen
// Rev. 2 Taster 1 - 4 an LCD anzeigen
// Rev. 3 Ausgang "Merker Tor auf" für Kontroll LED Tasten 1&2 setzten
// Rev. 4 beide Merker schalten mit jeweils einer Kontroll LED
// Rev. 5 mit Merker pin´s D50/D52 schalten für H-Brücken Treiber (In1 / In2)
// Board: Mega 2560 / Prozessor: ATmega 2560 / Port: com X / Programmer: AVRISP mkII
// Jb läuft ?? / 11.06.2023
byte Merker_Tor_Auf = 0; // Deklariert die Variable "Merker Tor Auf" als byte(0-255) mit Wert 0
byte Merker_Tor_Zu = 0; // Deklariert die Variable "Merker Tor Zu " als byte(0-255) mit Wert 0
#include <LiquidCrystal.h> // library code für LCD einfügen
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // Anschluß pins für LCD definieren - Syntax: LiquidCrystal lcd(rs, enable, d4, d5, d6, d7)
void setup()
{
lcd.begin(16, 2); lcd.clear(); // LCD Modul mit 16 Zeichen und 2 Zeilen definieren ; Anzeige löschen
pinMode(53, INPUT); // pin 53 als Eingang definieren für Taster 1 (Taster Hubtor auf)
pinMode(51, INPUT); // pin 51 als Eingang definieren für Taster 2 (Taster Hubtor zu )
pinMode(49, INPUT); // pin 49 als Eingang definieren für Taster 3 (Endlage Hubtor auf)
pinMode(47, INPUT); // pin 47 als Eingang definieren für Taster 4 (Endlage Hubtor zu )
pinMode(50, OUTPUT); // pin 50 als Ausgang für H-Brücken Treiber definieren
pinMode(52, OUTPUT); // pin 52 als Ausgang für H-Brücken Treiber definieren
}
void loop()
{
// LCD Anzeige
lcd.setCursor(0,0); // Cursor auf 1. Stelle 1. Zeile setzten
if (digitalRead(53) == HIGH) // wenn Taster 1 gedrückt,d.h pin53 = high, dann
{ lcd.print("Taste 1 " ); } // LCD Anzeige "Taste 1" (mit Leerzeichen um bei "keine Taste" alle restlichen Buchstaben vollständig zu überschreiben)
if (digitalRead(51) == HIGH) { lcd.print("Taste 2 " ); }
if (digitalRead(49) == HIGH) { lcd.print("Taste 3 " ); }
if (digitalRead(47) == HIGH) { lcd.print("Taste 4 " ); }
else {lcd.print("keine Taste"); }
lcd.setCursor(0,1); // Cursor auf 1. Stelle 2. Zeile setzten
lcd.print("MTA = "); lcd.print(Merker_Tor_Auf); lcd.print(" MTZ = "); lcd.print(Merker_Tor_Zu); // Zustand beider Merker am LCD-Display Zeile 2 anzeigen
// Merker schalten
if (digitalRead(53) == HIGH) {Merker_Tor_Auf = 1;} // Merker setzten wenn Hand Taster 1 Tor auf gedrückt
if (digitalRead(49) == HIGH) {Merker_Tor_Auf = 0;} // Merker rücksetzten wenn Taster 3 Endlage Tor auf betätigt
if (digitalRead(51) == HIGH) {Merker_Tor_Zu = 1;} // Merker setzten wenn Hand Taster 2 Tor zu gedrückt
if (digitalRead(47) == HIGH) {Merker_Tor_Zu = 0;} // Merker rücksetzten wenn Taster 4 Endlage Tor zu betätig
// Ausgänge setzten
if (Merker_Tor_Auf == 1) { digitalWrite(50, HIGH); digitalWrite(52, HIGH);}
if (Merker_Tor_Auf == 0) { digitalWrite(50, LOW ); digitalWrite(52, LOW); }
if (Merker_Tor_Zu == 1) { digitalWrite(50, HIGH); digitalWrite(52, HIGH);}
if (Merker_Tor_Zu == 0) { digitalWrite(50, LOW ); digitalWrite(52, LOW);}
}
Wo liegt der Fehler?
Die Hardware schein ja ganz offensichtlich prinzipiell zu funktionieren, deshalb dieser Test.
(Beide LED´s an )
Könnt Ihr mir den Sonntag retten?
Gruß Wühlmaus