Moin Zusammen!
Ich komme hier einfach nicht weiter und finde den Fehler nicht - kann mir jemand weiterhelfen?
Vorgeschichte:
Ich habe die Hardware aufgebaut und programmiert die im Gewächshaus die Temperatur max. / Temperatur min. / Temperatur und Feuchte aktuell anzeigt.
Kommentar von meinen Kumpels:
So was gibt es fix fertig für ein paar Euros! Da musst Du nicht ewig dran rum fummeln!
Ich: Der Weg ist das Ziel und die Anzeige von Datum & Uhrzeit noch dazugefügt.
So was gibt es nicht so viel ich weiß.
Funktioniert alles prima!
Ich habe das ganze „klassisch“ gelöst mit 2 Tastern.
Taster 1 schaltet die Anzeige weiter – Taster 2 löst z.B. ein Reset der Temperatur min. aus.
Stand heute:
Jetzt habe ich den Befehl / die libray „one button“ entdeckt und möchte mit nur einem Taster auskommen. Und zusätzlich auch noch den Füllstand der Regenwasser Zisterne anzeigen.
Dazu habe ich mir folgendes Test Programm geschrieben. (Mit einem Taster testen - erst einmal nur Festwert anzeigen / keine Daten und Sensoren einlesen.)
Mein Problem:
Das Programm läuft soweit mit „void click()“
Sobald ich die mit „//“ ausgeblendeten Schritte „button1.attachLongPressStop(longPressStop);“ und // void longPressStop() ff. aktiviere geht nix mehr.
Dto. wenn ich es über aktivieren der Funktion „(doubleclick);“ versuche.
Da bekomme ich jedes Mal die komische Meldung „Schritt 1 was not declared in this scope“
Weiß jemand Rat?
Gruß Martin
P.S.: ´bin hier zwar schon eine ganze Zeit im Forum aber das ist mein erstes Programm / scetch den ich hier einstelle. Ich hoffe da klappt zu Eurer Zufriedenheit .
// Schritte 1-4 mit Taster am Analogeingangang A0 setzen -> am Display anzeigen
// Rev.: 1 Schritte mit "One Button" Befehl auslösen
// Rev.: 2 Funktionen bei langem Drücken in den Schritten auslösen (z.B. reset Temp. / Sommer Winterzeit)
// Jb / läuft? -> nein! / 13.11.2021
int Schritt = 1; // Variable "Schritt" definieren und auf 1 setzen
#include <LiquidCrystal.h>; // include the library code
LiquidCrystal lcd(12, 11, 10, 9, 8, 7); // initialize the library with the numbers of the interface pins
// Syntax: LiquidCrystal lcd(rs, enable, d4, d5, d6, d7)
#include "OneButton.h" // Lib einbinden
OneButton button1(A0, false); // Taster an Pin A0 anschließen, Pegel definieren ("false" = Sprung L->H an A0)
void setup()
{
button1.attachClick(click);
// button1.attachDoubleClick(doubleclick);
// button1.attachDuringLongPress(longPress);
// button1.attachLongPressStop(longPressStop);
lcd.begin(16, 2); //Display mit 16 Zeichen und 2 Zeilen definieren
lcd.clear();
pinMode(0, OUTPUT); digitalWrite(0, LOW); pinMode(1, OUTPUT); digitalWrite(1, LOW); // LED´s an D0 und D1 abschalten
}
void loop() {
if (Schritt == 1) { Schritt_1(); }
if (Schritt == 2) { Schritt_2(); }
if (Schritt == 3) { Schritt_3(); }
if (Schritt == 4) { Schritt_4(); }
button1.tick(); // Abfrage Taster
} // Ende void loop
// --- Funtionen definieren ---
void click() // Mit Taster bei kurzem Drücken Schritte hoch zählen
{
Schritt = Schritt+1;
if (Schritt > 4) { Schritt = 1; } // nach Schritt 4 wieder auf Schritt 1 setzen
lcd.clear();
}
// void longPressStop() // Funktionen bei langem Taster drücken und nach loslassen in den Schritten auslösen
// {
// if (Schritt = 2) {lcd.setCursor(0,0); lcd.print("Temp. max. Reset"); delay(2000); // warten (1000 = one second)}
// lcd.clear();
// }
void Schritt_1() // Funktionen bei Schritt 1 definieren
{
lcd.setCursor(0,0); lcd.print("Schritt = "); lcd.print(Schritt);
lcd.setCursor(0,1); lcd.print("Anzeige: Liter");
}
void Schritt_2() // Funktionen bei Schritt 2 definieren
{
lcd.setCursor(0,0); lcd.print("Schritt = "); lcd.print(Schritt);
lcd.setCursor(0,1); lcd.print("Temp. max.");
}
void Schritt_3() // Funktionen bei Schritt 3 definieren
{
lcd.setCursor(0,0); lcd.print("Schritt = "); lcd.print(Schritt);
lcd.setCursor(0,1); lcd.print("Temp. min.");
}
void Schritt_4() // Funktionen bei Schritt 4 definieren
{
lcd.setCursor(0,0); lcd.print("Schritt = "); lcd.print(Schritt);
lcd.setCursor(0,1); lcd.print("Datum / Uhrzeit");
}