ich verwende ein arduino mega 2560 und habe dort einen Taster angebaut.
jetzt möchte ich den Taster abfrage sobald er gedrückt wurde und wider Los gelassen wird soll eine Aktion durchgeführt werden.
ich schaffe es den Taster abzufragen wann er gedrückt wurde aber nicht ob er wider los gelassen wurde
kann mir da jemand weiterhelfen?
Gruß
Erster versuch:
// Variablen vergabe
int LED = 13;
int Taster = 4;
int Pause = 1000; //sind 1000 mili Sekunden
// PIN Eigenschaft Ausgang / Eingang
void setup()
{
pinMode(LED, OUTPUT); // LED PIN = Ausgang
pinMode(Taster, INPUT); // Taster PIN = Eingang
}
// Programm in Loop
void loop()
{
if (digitalRead(Taster)== HIGH)
{
digitalWrite(LED, HIGH); // LED Einschalten
delay(Pause); // Wie lange soll Pause gemacht werden
digitalWrite(LED, LOW); // LED Ausschalten
}
}
Zweiter versuch:
// Variablen vergabe
int LED = 13;
int Taster = 4;
int Pause = 1000; //sind 1000 mili Sekunden
// PIN Eigenschaft Ausgang / Eingang
void setup()
{
pinMode(LED, OUTPUT); // LED PIN = Ausgang
pinMode(Taster, INPUT); // Taster PIN = Eingang
}
// Programm in Loop
void loop()
{
if (digitalRead(Taster)== HIGH)
{
if (digitalRead(Taster)== LOW)
{
digitalWrite(LED, HIGH); // LED Einschalten
delay(Pause); // Wie lange soll Pause gemacht werden
digitalWrite(LED, LOW); // LED Ausschalten
}
}
}
uwefed:
Da muß der Taster zuerst High sein und sofort danach LOW. Etwas unwahrscheinlich den Taster gerade in dem Moment loszulassen.
das ist richtig daher bin ich auf der such e nach Hilfe wie man so was denn macht, wolte schon einen neuen Loop hinein sätzen die Frage ist dann nur wie man aus dem Loop wider heraus kommt
if (digitalRead(Taster)== HIGH){
while(digitalRead(Taster)== HIGH){
// was er macht, solage der Taster gedrückt ist... oder auch einfach nix :-)
}
// was er danach machen soll
}
uwefed:
Da muß der Taster zuerst High sein und sofort danach LOW. Etwas unwahrscheinlich den Taster gerade in dem Moment loszulassen.
das ist richtig daher bin ich auf der such e nach Hilfe wie man so was denn macht, wolte schon einen neuen Loop hinein sätzen die Frage ist dann nur wie man aus dem Loop wider heraus kommt
int inPin = 8; // Input pin für Taster
int reading; // Wert des Eingangs
int previous = LOW; // Vorheiger Wert des Eingangs
// folgende Variablen müssen vom Typo unsigned long sein da millis() disen Variablentyp liefert.
unsigned long time = 0; // letzter Zeitwert bei dem der Ausgangzustand wechselte.
unsigned long debounce = 200; // Entprellzeit
void setup()
{
pinMode(inPin, INPUT);
pinMode(outPin, OUTPUT);
}
void loop()
{
reading = digitalRead(inPin);
// Beim Wechsel des Eingangs von LOW zu HIGH und nach der Entprellzeit:
if (reading == HIGH && previous == LOW && millis() - time > debounce) {
time = millis();
Tue irgendwas
}
// Beim Wechsel des Eingangs von HIGH zu LOW und nach der Entprellzeit:
if (reading == LOW && previous == HIGH && millis() - time > debounce) {
time = millis();
Tue irgendwas anderes
}
previous = reading;
}
wenn ich es richtig verstanden habe tut es das richtige so wie ich mir das vorstelle,
doch verstanden habe ich das noch nicht, ich glaube da brauche ich noch etwas mehr
zeit für um das zu verstehen. Danke noch mal für die Tipps