Pages: 1 [2]   Go Down
Author Topic: Tasterzustand erhalten  (Read 2223 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Edison Member
*
Karma: 21
Posts: 1419
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich dachte: Stromkreis ist geöffnet --> Taster wird betätigt --> Strom fließt zum Pin 0 (ist ungünstig hab ich gelernt - danke dafür) --> Pin wird "umgeschaltet" von LOW - kein Strom auf HIGH - Strom. Aber scheinbar bin ich da falsch informiert.
Das ist nicht falsch im grundsätzlichen Sinne, aber nicht korrekt in Bezug auf deine Schaltung.

Es gibt im Prinzip zwei Möglichkeiten.

1) Das Arduino-Pin ist mit einem Widerstand an GND (Masse angeschlossen) und sorgt damit dafür, das der Eingang auf LOW Pegel liegt. Das nennt man Pulldown-Widerstand. Mit Deinem Taster kannst Du dann das Pin auf 5V schalten (siehe das Button Beispiel). Dann wird beim Drücken des Tasters das Pin auf HIGH gezogen.

2) Das Arduino-Pin ist wie in Deinem Beispiel über den Taster mit GND verbunden. In diesem Fall brauchst Du eigentlich einen Widerstand (Pullup in diesem Fall), der an 5V und das Pin angeschlossen ist, um dafür zu sorgen, das immer 5V am Pin anliegen und es somit immer im HIGH Zustand ist. Wenn Du dann den Taster betätigst, verbindest Du das Pin mit GND (Masse) und der Strom fliesst vereinfacht gesagt über die Masse-Verbindung ab und nicht mehr über das Pin. Damit geht das Pin auf LOW.
Der Vorteil dieser Lösung ist, das der Arduino den Pullup Widerstand schon eingebaut hat und Du Dir damit ein externes Bauteil sparen kannst. Wichtig ist aber, das Du diesen Widerstand auch aktivierst und das Du dann auf LOW prüfen musst, wenn Du wissen willst ob der Taster gedrückt wurde.
Mario.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich glaube ich habe im Ansatz verstanden was ihr mir sagen wolltet.

Nur bin ich jetzt total verwirrt wie ich das im Programm umsetzen soll, bzw was ich machen muß, damit sich der arduino den Tasterzustand "merkt"
Logged

Germany
Offline Offline
Edison Member
*
Karma: 48
Posts: 2338
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Nur bin ich jetzt total verwirrt wie ich das im Programm umsetzen soll, bzw was ich machen muß, damit sich der arduino den Tasterzustand "merkt"
Ach, die Logik dahinter hast du doch schon begriffen und sogar ausformuliert: Wenn sich der Mikrocontroller einen Zustand merken soll, schreibst du diesen einfach in eine Variable. Du brauchst also eine zusätzliche Status- bzw. Zustandsvariable, die abhängig vom Tastendruck ihren Wert ändert.
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Offline Offline
Full Member
***
Karma: 2
Posts: 213
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
Achtung Pseudocode:

//boolean variable LEDzustand  speichert ob die LED gerade an ( true ) oder aus ( false ) ist

If knopf==gedrückt & LEDzustand== false{   //wenn der knopf gedrückt wird und die LED ist aus,
                                                                 //soll die  LED an gehen
LEDzustand=true}

If knopf==gedrückt & LEDzustand== true{   //wenn der knopf gedrückt wird und die LED ist an,
                                                                //soll die  LED ausgehen
LEDzustand=false}

case LEDzustand                                       //hier wird die LED dann ein oder ausgeschaltet
   switch false
    digitalwrite ( LEDport, LOW )
  break;
   switch true
    digitalwrite (LEDport, HIGH )
   break  

Achtung Pseudocode


Man kann die case/switch auswertung auch in die if-Schleife integrieren, aber so ist es einfacher zu verstehen, glaube ich.
« Last Edit: October 10, 2012, 03:03:38 pm by o_lampe » Logged

It's not my fault when my Posts are full of Errors. This stupid autocorrection from my browser is set up for german grammar.

Offline Offline
Edison Member
*
Karma: 21
Posts: 1419
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Zwei Dinge.

1) Das Statement "if" ist keine Schleife, sondern eine Verzweigung. Siehe auch http://www.if-schleife.de/  smiley
2) In Deinem Pseudo-Code hast Du switch und case vertauscht. Siehe http://arduino.cc/en/Reference/SwitchCase

Auch wenn es Pseudo-Code ist, für jemanden der gerade erst anfängt mit Programmieren können solche Kleinigkeiten zusätzlich zur Verwirrung und damit Frustation sorgen.

Mario.
Logged

Offline Offline
Full Member
***
Karma: 2
Posts: 213
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Kritik angekommen...
ich habe allerdings auch noch keinen arduino und noch nicht eine Zeile echten Code geschrieben :/
Logged

It's not my fault when my Posts are full of Errors. This stupid autocorrection from my browser is set up for german grammar.

Pages: 1 [2]   Go Up
Jump to: