Arduino, 1 LED zum blinken bringen mit 2 Taster?

3 Antworten

Eine boolsche Variable kennt meines Wissens nach nur die Zustände "true" oder "false", jedoch nicht den Zustand "LOW"...

Und ich kann den Posts von RareDevil zustimmen. Ich würde das schwarze Kabel(GND) weglassen, genauso übrigens den 20.000Ω Widerstand. Stattdessen würde ich dir raten, das rote Kabel an die Stelle des schwarzen Kabels zu stecken.

Das ganze 2mal für jeden Taster, dann kannst du "tasterstatus1" und "tasterstatus2" auf HIGH lassen.

Außerdem macht mir die unterste Ecke ein bisschen Kopfschmerzen

Aktuell geht die LED ganz kurz aus und sofort wieder an, wenn ich das richtig sehe...


RareDevil  06.02.2019, 19:10
Und ich kann den Posts von RareDevil zustimmen. Ich würde das schwarze Kabel(GND) weglassen, genauso übrigens den 20.000Ω Widerstand. Stattdessen würde ich dir raten, das rote Kabel an die Stelle des schwarzen Kabels zu stecken

Das passt aber nicht. Entweder mit dem Taster auf GND ziehen und den internen PullUp aktivieren, oder mit einem Pulldownwiderstand auf Masse ziehen und mit dem Taster 5V auf den Eingang schalten. Wenn Du mit dem Taster die 5V schaltest, ohne das DU einen PullDownwiderstand gegen Masse hast, kann es passieren, das die Eingänge HIGH annehmen, obwohl der Taster nicht gedrückt wird. Und zwar allein durch Felder, die in der Umgebung existieren. Die Eingänge des Arduino haben keinen PullDown intern und sind so hochohmig, das ein Stück Draht als Antenne reicht, das die EIngänge ansprechen. Also immer definierte HIGH oder LOW-Signale. Aber keine offenen benutzen EIngänge ohne Bezug einfach schwebend lassen.

0

Du brauchst eine 2. Variable, die Du als On/Off-Speicher nimmst. Jetzt setzt Du die Variable "value" mit den Tastern, fragst diese aber auch in de If zum blinken ab und änderst diese, wenn die Bedingung erfüllt ist. Danach ist value nicht mehr erfüllt und die If wird nicht mehr abgearbeitet...

So viel zur ersten Diagnose...


RareDevil  06.02.2019, 13:11

Ach so. Du hast die WIderstände auch als PullUp an den Tastern. Somit sind beide Taster HIGH und wenn du tastest, sind diese LOW... Also entweder STatus LOW abfragen (Dann kannst Du auch auf die Widerstände verzichten und die Eingänge mit "INPUT_PULLUP" direkt augf HIGH schalten, und LOW abfragen wenn der Taster gedrückt wird, oder Du musst die Taster gegen 5V schalten und die Widerstände an den EIngängen auf Masse schalten, damit die 5V nur anstehen, wenn der Taster gedrückt wird und die Widerstände als PullDown funktionieren...

3

Dein letzter digitalWrite befindet sich innerhalb des letzten if konstrukts und wird deswegen immer den Wert LOW (bzw. false) haben. Du setzt in diesem Sketch die LED nie auf high

Woher ich das weiß:Berufserfahrung – Arbeit als Programmierer

TysonX 
Fragesteller
 06.02.2019, 12:33

Hab ich korrigiert, jedoch blinkt die LED nicht, sondern leuchtet kontinuierlich. Und die Taster tun auch nichts.

PS. Das mit "Nicht hilfreich" war ein Missklick, sorry

0
Royce  06.02.2019, 12:43
@TysonX

Alles gut, mir gehts nicht um klicks ;)

Ich muss das zu Hause mal nachstellen, ich hab in der Arbeit leider keinen Arduino Testaufbau

1