Hi,
ich bin jetzt schon einige Zeit auf der Suche nach einer Lösung aber ohne Erfolg.
Und zwar möchte ich einem Taster eine neue Funktion zuweisen nachdem ein Zweiter einmalig gedrückt wurde. Für alle die mir nicht folgen können hier nochmal in einer anderen Sprache
Bisher hatte ich es immer so:
int Taster = 6;
int tasteDruck = 0;
void setup() {
pinMode(Taster, INPUT);
}
void loop() {
tasteDruck = digitalRead(Taster);
if(taseDruck == HIGH) {
/*gewünschte Funktion */
}
/* nach dem das Ganze ausgeführt worden ist, soll der Taster eine andere Funktion bekommen, bzw. es würde genügen wenn nicht mehr gilt tasteDruck = digitalRead(Taster).
}
Würde mich freuen, wenn mir da jemand weiterhelfen könnte !
Liebe Grüße
Wie gesagt, aus meiner Sicht ist es recht egal, wie man das mit dem Zustand abhandelt.
Man muss es nur tun.
Aber andererseits, werden if und switch mit zunehmender Anzahl, Verschachtelungstiefe und Komplexität der Bedingungen immer unübersichtlicher.
Zumindest ich, gelange da ganz schnell an meine Grenzen.
Hier mal nur für einen Taster, mit wechselnder Funktionalität.
(aus meiner Wühlkiste)
#include <CombiePin.h>
#include <CombieTimer.h>
#include <CombieTools.h>
using namespace Combie::Tools;
using namespace Combie::Timer;
using namespace Combie::Pin;
using CounterType = Counter<byte>;
TasterGND<2> taster; // Taster gegen GND geschaltet
EntprellTimer entprellen(20); // entprellzeit in ms
FlankenErkennung flankenerkennung;
CounterType counter;
void klappeAuf(CounterType &counter)
{
Serial.println("Klappe geht auf");
counter.onCount(buttermilchEinspritzen); // naechsten Schritt vorbereiten
}
void buttermilchEinspritzen(CounterType &counter)
{
Serial.println("Buttermilch wird eingespritzt");
counter.onCount(klappeZu); // naechsten Schritt vorbereiten
}
void klappeZu(CounterType &counter)
{
Serial.println("Klappe geht zu");
counter.onCount(klappeAuf); // naechsten Schritt vorbereiten
}
void setup()
{
Serial.begin(9600);
taster.initPullup();
counter.onCount(klappeAuf); // ersten Schritt vorbereiten
}
void loop()
{
counter = flankenerkennung = entprellen = taster;
}