Hallo,
ich versuche einen Taster als AN/AUS Schlater zu programmieren.
Die Schleife läuft "direckt" durch.
Bei der letzten if, wird "digitalWrite(speicher, LOW);" ausgeführt.
Aber es dauert ca. 6 Sekunden bis über "speicher_status = digitalRead(speicher);"
der wert von "speicher" übernommen wurde.
Hat jemand eine idee warum das so ist?
Ich bin absoluter anfänger und versuche selber lösungen zu finden, aber hir finde ich nichts.
Fals es ein absoluter Grundlagernfehler ist bitte ich um nachsicht.
If the pin has been configured as an OUTPUT with pinMode(), its voltage will be set to the corresponding value: 5V (or 3.3V on 3.3V boards) for HIGH, 0V (ground) for LOW.
If the pin is configured as an INPUT, digitalWrite() will enable (HIGH) or disable (LOW) the internal pullup on the input pin. It is recommended to set the pinMode() to INPUT_PULLUP to enable the internal pull-up resistor. See the digital pins tutorial for more information.
alf03181:
"speicher" soll kein pin sein,
irgend wie sehe ich nicht wo ich speicher als pin benutze.
Kann ich nicht mit digitalWrite einen Wert in eine Variable setzen, die kein pin hat?
p.s. der Taster mit Pulldown wiederstand.
Nein, mit "digitalWrite" schreibst du Daten auf einen zuvor definierten Pin.
Willst du einen Wert in eine Variable schreiben, machst du es evtl. so:
"Variablenname = Wert;"
Weil du etwas falsch gemacht hast.
Es war keine Variablenübergabe, hatteich doch schon geschrieben.
Du wolltest etwas auf einen Pin schreiben, den es nicht gibt.
Den Status eines Ausgangs zu lesen funktioniert nicht bei allen Arduinos (beim DUE nicht, bei anderen weiß ich es nicht) Darum sollte man es sich nicht angewöhnen Den Zustand von Ausgängen einzulesen sondern den Zustand in einer Variablen zwischenzuspeichern. Dann kann man auch einfach die Variable in den digitalWrite schreiben:
digitalWrite(pin , status_pin);
IDE mitgelieferte Programmbeispiel "StateChangeDetection schon mal ausprobiert? -->> Die kenne ich nicht
Die IDE wird mit einer ganzen Menge kleiner Beispielprogramme ausgeliefert, Du findest die Beispiele im Hauptmenü der IDE unter:
"Datei-Beispiele" bzw. "File-Examples" (je nach Spracheinstellung Deutsch/Englisch)
Das Beispiel "StateChangeDetection" erklärt, wie ein mechanischer (prellender) Taster daraufhin abgefragt wird, ob er gedrückt wird, sich also sein Status(State) von "nnicht betätigt" nach "betätigt" ändert.
Hast Du denn die Taster-Grundschaltung im Griff? Es gibt zwei bis drei Möglichkeiten, einen Taster richtig anzuschließen:
1.) Mit einem externen Pulldown-Widerstand
2.)Mit einem externen Pullup-Widerstand
3.)Mit dem aktivierten internen Pullup-Widerstand des Controllers
Beschreibe mal Deine Taster-Anschluß verkabelung mit dem Arduino!
Mit dieser Zeile in der setup()-Funktion : pinMode(power_sw, INPUT);
müßtest Du eigentlich die Anschlußvariante "Mit einem externen Pulldown-Widerstand" haben.
Hast Du?
Oder fehlt in Deiner Taster-Schaltung der externe Pulldown-Widerstand?