da ich Anfänger bin versuche ich mich weiter zubilden. Ich habe von YouTobe versucht aus der OneButtonLibrary das Thema hold Button nach zu installieren. Mein System ist mit Arduino Uno.
Ich bekomme folgende Fehler Info bei isButtonPressed();
ich habe folgendes mit exterenen Widerstand programmiert.
#include <OneButton.h>
int modus = 0;
int buttonPin = 11;
boolean button_Zustand;
boolean button_Vor_Zustand;
long zeit;
OneButton button = OneButton(buttonPin, false); // mit externen Widerstand
void setup()
{
Serial.begin(9600);
while (!Serial);
Serial.println("Programm start");
Wozu die OneButton Bibliothek? Wenn Du den Taster mit digitalRead abfragst, ist die Bibliothek überflüssig. Wenn schon, dann müßtest Du button.irgendwas abfragen.
Hast Du Dir schon mal die Beispielprogramme zum Umgang mit Schaltern angeschaut (Debounce...)?
Ich weiß viele Wege führen nach Rom. Man hatte mir im Forum für mein Problem die OneButton Bibliothek empohlen. Jetzt habe ich mich damit befasst. Irgend wo muss ich mal ansetzen. Um mein Projekt mit mehreren Tasten schalten Relais. Soll für später ein kleine Wohnungsteuerung werden. Kleine Rentnerbeschäftigung. Stehe am Anfang mit der ganzen Programmierung. Die Taster sollen unterschiedliche Funktionen haben. deshalb die OneButton Bibliothek.
Den Fehlercode hatte ich als Image im Anhang!
'isButtonPressed' was not declared in this scope
Es geht voran, aber mit neuen Problemen.
Ich habe das Sketch mit Teilen aus dem ersten Teil erweitert mit der Hoffnung das ich die zwei weiteren Button aktivieren kann. Der Sketch hat sich ohne Problme laden lassen, aber nur Button sieht man im Monitor.
Button1 und Button 2 sind ohne aktivität. Bestimmt wieder ein Anfängerfehler.
Was mache ich jetzt wieder falsch?
#include <OneButton.h>
int modus = 0;
int buttonPin = 11;
int buttonPin1 = 10;
int buttonPin2 = 9;
boolean button_Zustand;
boolean button_Vor_Zustand;
long zeit;
Ich möchte mit mehrer Button schalten. Das Ziel ist Button sollen mehrer Funktionen haben.
Das große Ziel ist ein Wohnungssteuerung. Z.B. Button soll Klick Funktion, Doppelkick und Dauerklick solle eine andere Funktion ausführen. Button führt Oneclick, doubleclick und gedrückt(Halten aus).
Button1 soll einfach Klick ausführen und Button2 soll mit Doppelklick und halten eine andere Funktion ausführen. So die Schaltung. Probe im Monitur zu sehen. Ich möchte sehen wie ich erstmal die 3 Button mitunterschiedlichen Doppelfunktionen steuern kann.
Der Sketch funktioniert jetzt wie ich es beschrieben habe. Ich habe die Fehler selbst entdeckt.
Button 2 war auf falschen Eingang und die Zeit zu halten war zu lange.
Jetzt geht es mit geplant weiter.
Geplant ist das ich verschiedene Taster mit Doppelfunktion ( Klick Taster Button schaltet Relais ein und nach einer bestimmten Zeit wieder aus(Treppehausschaltung) und halten soll Dauerlicht schalten und nochmals Taster halten Relais ausschalten. Diese Funktionen möchte ich für verschiedene Taster aktivieren können.
Das ist noch viel Arbeit. Ich habe Erfahrung mit Simatic S7. Da geht es einfacher. Aber so ein Steuergrät ist nicht preiswert und Teilweise auch zu groß.
So will ich es mit meiner Renterarbeit mit Arduino Uno probieren und wenn man Erfolg hat ist auch ganz schön.
Jetzt möchte ich eine Reihe Buttons zuschalten bringen. Da habert es schon.
OpaDD:
Jetzt möchte ich eine Reihe Buttons zuschalten bringen. Da habert es schon.
Ok, dein Problem sind aber die fehlenden Kenntnisse der Grundlagen.
Du gehst an eine Library ran, die du so nicht verstehst. Da solltest du erst mal einfache Schaltfunktionen mit einzelnen Tastern üben. Das hatte dir auch schon DrDiettrich geschrieben.
Wenn du mit mehreren Tastern umgehen kannst und damit Ergebnisse erzielst, solltest du erst auf eine Library umsteigen. Ohne diese einfachen Grundlagen wird es nichts.
Die Bibliothek erwartet Unterprogramme, die bei den Ereignissen eines Buttons (Click, DoubleClick, Press) aufgerufen werden. Diese Unterprogramme mußt Du jeweils selbst schreiben, und mit buttonX.attachXYZ(meinABC) anmelden.
Wenn ein Ereignis dazu führen soll, daß eine LED eingeschaltet wird, dann schreibst Du ein Unterprogramm, das genau das tut. Nennen wir es mal LED1ein(). Wenn dies bei einem Doppelklick auf Button2 passieren soll, dann kommt in setup() ein Aufruf
Button2.attachDoubleClick(LED1ein);
Dann wird anschließend bei jedem DoubleClick von Button2 dieses LED1ein() aufgerufen.
Entsprechend für alle weiteren Ereignisse und Buttons.
In loop() muß für jeden Button der zugehörige Automat (state machine) aufgerufen werden, also ButtonX.tick();
Das wars dann auch schon