Hi Leute, ich habe ein Problem...
Es geht darum:
ich soll ein Notaustester für einen Schaltschrank machen. Ich habe 2 Taster und ein LCD. Der soll einfach überprüfen ob ein Schaltkreis sich öffnet, wenn ein Notaus betätigt wird. Dafür soll es 2 Modi geben, einmal einen Schritt für Schritt und einen Automatikbetrieb. Ich kann zwar sozusagen im Hauptmenü die beiden Punkte anwählen und mit Doppelklick in das Untermenü aber dann will es nicht weitergehen. Ich habe mir schon einige Beispiele mit Menüs angeschaut, aber das wollte nicht in mein Kopf gehen. Meine einzigsten Erfahrungen sind ein Grundkurs im normalen C++ sozusagen. Habe ich einen völligen Denkfehler oder müsste ich alles anders Strukturieren? Ich hoffe ihr könnt mir helfen!
Ich hätte auch noch meinen Schaltplan angehangen, aber das geht als neuer Benutzer anscheinend nicht.
#include <OneButton.h>
#include <LiquidCrystal.h>
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
OneButton rechtsklick (8, false);
OneButton linksklick (6, false);
int l = 1;
int r = 1;
void setup() {
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Watttron GmbH");
lcd.setCursor(0, 1);
lcd.print("X6-Tester");
rechtsklick.attachClick(rechts);
linksklick.attachClick(links);
rechtsklick.attachDoubleClick(doublerechts);
linksklick.attachDoubleClick(doublelinks);
pinMode(30, OUTPUT);
pinMode(31, INPUT);
pinMode(32, OUTPUT);
pinMode(33, INPUT);
digitalWrite(31, HIGH);
digitalWrite(33, HIGH);
}
void loop() {
rechtsklick.tick();
linksklick.tick();
delay(10);
}
void rechts(){
if(r == 1){
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Auto <<");
lcd.setCursor(9, 1);
lcd.print("Step");
lcd.setCursor(0, 0);
lcd.print("X6-Tester");
}
}
void links(){
if(l == 1){
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Auto");
lcd.setCursor(9, 1);
lcd.print("Step <<");
lcd.setCursor(0, 0);
lcd.print("X6-Tester");
}
}
void doublerechts(){
l=
0;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Automatikbetrieb");
}
void doublelinks(){
r=0;
l=2;
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Step by Step");
lcd.setCursor(0, 1);
lcd.print("ext. Notaus 1");
if(digitalRead(links) == HIGH){
l++;
}
if(digitalRead(links)==HIGH){
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Step by Step");
lcd.setCursor(0, 1);
lcd.autoscroll();
lcd.print("Bitte Notaus 1 betätigen");
if(digitalRead(31) == LOW){
lcd.noAutoscroll();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Step by Step");
lcd.setCursor(0, 1);
lcd.autoscroll();
lcd.print("links zum fortfahren");
if(l == 4){
lcd.noAutoscroll();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Step by Step");
lcd.setCursor(0, 1);
lcd.print("ext. Notaus 2");
}
else{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Fehler:");
lcd.setCursor(0, 1);
lcd.print("0001");
}
}
}
if(l == 5){
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Step by Step");
lcd.setCursor(0, 1);
lcd.autoscroll();
lcd.print("Bitte Notaus 2 betätigen");
if(digitalRead(33) == LOW){
lcd.noAutoscroll();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Step by Step");
lcd.setCursor(0, 1);
lcd.print("ext. Notaus 2");
}
else{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Fehler:");
lcd.setCursor(0, 1);
lcd.print("0002");
}
}
}