Bei manchen Anwendungen sind die Ardublock Blöcke wie "setze digitalen PIN auf" zu langsam oder es ist zu viel Aufwand, die einzelnen PINs über Blöcke zu schalten. In solchen Fällen kann man die PINS des Arduino direkt manipulieren.
Im Beispiel unten werden 5 LEDs immer nach einer Sekunde im wechsel ein und ausgeschaltet. Wenn man bedenkt dass das nur 5 LEDs sind die ein und ausgeschaltet werden, dann ist das ein ziemlich großer Block aber noch machbar. Nun stellte man sich vor, man hat ein sieben Segmentanzeige und möchte 10 Zahlen darstellen. Das sind zu viele Blöcke.
Für den Fall dass man schnell und vor allem auf wenig Platz in Ardublock und wenig Speicher in der Arduino IDE zurückgreifen möchte. Gibt es die Port-Manipulation. Arudblock hat hierfür zwei mögliche Blöcke. Den "PORT ABCDE" und den "set digital pins" Block. Beide erfüllen ihren zweck aber der "set digital port" nimmt in der Ardublock Oberfläche auch relativ viel Platz ein. Der "PORT" Block dagegen sehr klein, es müssen die einzelnen PINs aber von Hand eingetragen werden.
Das Gleiche Programm mit den 5 LEDs wie oben. Mit dem "set digital pins" Block werden einfach die passenden Ausgänge gewählt und auf ON oder OFF gestellt.
Mit dem "Port" Block das gleiche nur dass die einzelnen Pins mit einer "1" oder "0" geschaltet werden. Und das macht nun Platzmäßig in Ardublock wie auch im Speicher auf dem Arduino richtig was aus.
Arduino Port-Manipulation Ausgabe mit Ardublock
Um diese beiden Blöcke zu verstehen muss man sich die PINS die Arduino als Gruppe vorstellen. Jede Gruppe hatte einen anderen Buchstaben, in unserem Fall B,C und D. Je nachdem welcher Buchstabe im Block ausgewählt ist, spricht eine bestimmte reihe an PINS an.
Möchte ich die digitalen PINs von 0-7 schalten dann muss ich den Buchstaben D verwenden. Möchte ich die digitalen PINs 8-13 verwenden dann muss ich den Buchstaben B verwenden. Nun bin ich schon mal in der richtigen Reihe.
Im "set digital pins" Block kann ich nun ganz einfach die gewünschten PINs on oder off schalten. Möchte ich den PIN 5 einschalten, muss also der PORT D ausgewählt werden und der PIN5 auf ON gesetzt werden.
Beim "port" Block muss ebenso der PORT D gewählt werden, es muss aber eine Zahlenfolge in das Feld hinter dem Block eigenen werden. Dabei stehen die 8 Zahlen für die PINs aus der Tabelle. Der PIN 5 wäre dann 00100000, also PIN 7 6 5-->(1=on) 4 3 2 1 0. Dabei gilt eine "1" als an und eine "0" als aus für den PIN.
Nun können mit wenigen Blöcken und sehr wenig Speicher auf dem Arduino viele PINs ein und ausgeschaltet werden. Das ganze möchte ich am Beispiel einer 7 Segment Anzeige deutlich machen.
Die Sieben Segment Anzeige hat SIEBEN Segment die für jede Zahl einzelnen angesteuert werden müssen und zwar für jede Zahl immer alle Segmente. Da bei einem wechsel der Zahlen die Segmente die an sind teilweise auch wieder ausgeschaltet werden müssen. Es braucht also bei 10 Zahlen jeweils sieben Segment, macht 70 Blöcke. für die Zahlen 0 1 2 3 4 5 6 7 8 9. Das geht mit dem "port" Block am besten.
Teilt man die sieben Segmentanzeige in Buchstaben auf. So ergibt sich für Zahl Null dass die Segmente ABCDEF an und G aus sein muss. Für die Zahl eins müssen die Segmente BC an und ADEFG ais sein. So geht man alle Zahlen der Anzeige durch und trägt sie in das Feld hinter den "port" Blog ein. Die in der {} Klammer geschrieben Zahlenfolge zeigt dann immer die Zahl hinter dem // doppelslash an. Mit diesen wenigen Zeichen kann man nun eine Siebensegmentanzeige ansteuern.
- a b c d e f g
- {1,1,1,1,1,1,0}, // 0
- {0,1,1,0,0,0,0}, // 1
- {1,1,0,1,1,0,1}, // 2
- {1,1,1,1,0,0,1}, // 3
- {0,1,1,0,0,1,1}, // 4
- {1,0,1,1,0,1,1}, // 5
- {1,0,1,1,1,1,1}, // 6
- {1,1,1,0,0,0,0}, // 7
- {1,1,1,1,1,1,1}, // 8
- {1,1,1,1,0,1,1}, // 9
Arduino Port-Manipulation Eingabe mit Ardublock
Das ganze geht nicht nur mit der Ausgabe von PINs sonder auch mit dem einlesen bzw. auslesen von PINs. Dazu benötigt es allerdings den "DDR ABCD" Block.