Nachdem wir nun die Ausgänge des Arduino EIN und AUSschalten können und der Arduino mit seiner Umwelt sprechen kann, geht es darum dass die Umwelt mit dem Arduino sprechen kann. Dabei können die PINs 2-13 sowohl als Ausgang wie auch als Eingang verwendet werden. Ob ein PIN als Ausgang oder als Eingang verwendet wird, bestimmt alleine die Software.
Alles wo Spannung aus dem Arduino "herauskommt" wird Ausgang genannt und alles wo Spannung in den Arduino "hereinkommt" wird Eingang genannt. Dies wird auch als I/O bezeichnet, also INPUT and OUTPUT.
Die Eingänge der PINs 2-13 sind digitale Eingänge, die Pins auf der gegenüberliegenden Seite sind analoge Eingänge, zu erkennen am A0, A1 usw. Digital bedeutet das dieser Eingang zwei Zustände hat, EIN und AUS. HIGH und LOW, das bedeutet entweder liegt Spannung an oder es liegt keine Spannung an. Ist der Taster / Schalter gedrückt, liegt Spannung am Arduino an. Ist er nicht gedrückt, liegt keine Spannung an. Wenn Spannung am Arduino anliegt "weiß" der Arduino also dass du den Taster gedrückt hast. So kannst du dem Arduino bzw. Ardublock sagen "ich habe den Taster gedrückt". Du kannst dem Arduino also Befehle erteilen.
Schließe einen Taster an den digitalen PIN 2 an deinen Arduino bzw. an das Grove Shield an.
Um einen Eingang abfragen zu können brauchen wir einen "falls" Block. Wie der Name schon sagt "testet" dieser Block zum Beispiel was ein Eingang macht. Wir können mit diesem Block fragen, liegt Spannung an oder liegt keine Spannung an. Da der "falls" Block noch viel mehr kann als nur Eingänge abfragen, wird im "TESTE" teil nun ein Eingang eingetragen. Wähle den PIN 2 aus, wenn du später andere Eingänge verwendest, tragen den PIN ein an dem der Taster oder Schalter angeschlossen ist.
Wenn du "NICHT" die Taster von GROVE verwendest dann musst du dir zusätzlich jetzt schon Gedanken über die PULL DOWN oder PULL UP Wiederstände machen. Dann lies dir bitte diese Seit zuerst durch bevor du weitermacht, alle die GROVE verwenden, können direkt weiter machen.
Um diese Eingänge "Sichtbar" zu machen lernen wir gleich noch den SERIAL MONITOR kennen. Mit diesem kann sehen was im inneren des Arduino vor sich geht, bzw. was das Programm gerade macht. Wähle dazu den Block SERIAL PRINT aus aus und füge ihn im "falls" Block unter "dann" ein und schreibe bei "String" --> 5 Volt hinein. Nun klonst du den Block und fügst ihn unter den "falls" Block ein bei "String" trägst du --> 0 Volt ein.
Lade nun das Programm auf deinen Arduino und klicke auf (rechts oben) auf Serial Monitor. Nun öffnet sich der Serial Monitor. Im letzen Teil habt ihr gelernt dass das Programm auf dem Arduino immer "von oben nach unten" abläuft und dann von vorne beginnt. Diesen Ablauf sieht man im "Serial Monitor" hier kann man auch sehen wie "schnell" der Arduino arbeitet. Jedes mal wenn eine neue "0 Volt" Anzeige erscheint, ist der Arduino einmal von "oben nach unten" sein Programm durchgegangen.
Nun kommt unser "falls" Block ins Programm. Wenn du den Taster drückst, dann ist der "TEST" erfolgreich und das Programm führt den Teil im "dann" aus. In unserem Fall wird der Text --> 5 Volt angezeigt. Den Text kannst selber auswählen. Liegen 5 Volt durch das drücken des Taster am Arduino an, wird das von der Software erkannt und der Block wird ausgeführt. Der Block im "dann" Teil wird einmal ausgeführt und dann beginnt das Programm wieder von vorne. Deshalb ist zwischen jedem --> 5 Volt Text, ein --> 0 Volt Text angezeigt.
Schließe an den gleichen PIN (2) jetzt den Schalter an. Der Schalter "federt" nach dem betätigen nicht in seine ursprüngliche Position zurück, sondern bleibt in seiner Position. Das beutetet man hat entweder "immer" 0 Volt oder "immer" 5 Volt. Der Schalter hat eine feste Position.
Da ein Taster dauerhaft eingeschaltet und dauerhaft ausgeschaltet ist, kommst du mit dem "falls" Block nicht weit. Es gibt aber einen ähnlichen Block der sich "solange" nennt. Wie der Name schon sagt wird über "teste" wieder ein digitaler PIN abgefragt.
Der Block "solange" wird dann aber nicht einmal "abgearbeitet" sondern das Programm bleibt so lange in diesem Teil des Blockes bis sich der "teste" teil wieder ändert. Das seht ihr auch schön im Serial Monitor. Wird der Schalter eingeschaltet ändert sich der Text und SOLANGE der Schalter eingeschaltet ist ändert sich der Text auch nicht. Erst wenn der Schalter wieder ausgeschaltet wird, dann ändert sich auch der Text dauerhaft.
Das ganze im Serial Monitor zu sehen ist nun etwas langweilig deshalb wollen wir das ganze nun mit der LED aus dem ersten Teil ausprobieren. Schließe dazu zwei Taster (PIN 2&3) und eine LED (PIN 5) an den Arduino an. Nun sollst du die LED mit dem Taster an PIN 2 einschalten und dem Taster an PIN 3 ausschalten.
Zuerst schaltest du die LED mit einem "falls" Block ein. Dazu "teste" deinen Taster an PIN 2 , wenn dieser gedrückt wurde, schalte über digitalWrite die LED an PIN 5 auf HIGH .
Das gleiche wiederholst du jetzt mit dem Taster an PIN3, wenn dieser gedrückt wurde schalte die LED an PIN 5 auf wieder auf LOW.
Wenn du die LED nun mit einem Taster einschalten und ausschalten möchtest dann verbinde den Schalter mit PIN 2 und die LED mit PIN 5.
Zuerst musst du über einen SOLANGE Block abfragen ob der Schalter an bzw. noch an ist. Über diesen Block wird die LED dann auch eingeschaltet. Die LED muss aber auch wieder ausgeschaltet werden. Dazu lernen wir den dritten und für heute letzen Block kennen. den " nicht " Block. Dieser macht kurz gesagt alles "umgekehrt". Das ist wie wenn du ja sagt und nein machst. Setzt man den "nicht" Block also vor einen Eingang, dann ist das "teste" wahr wenn der Taster oder Schalter nicht gedrückt ist also AUS ist. Genau das macht dieser Block hier. Wenn der Schalter "nicht" an ist dann Schalte die LED an PIN 5 aus.