Hauptmenü

Wer wie ich gerne und viel bastelt und dazu auch einen Arduino verwenden möchte, sich aber mit dem Programmieren schwer tut. Für den ist Ardublock eine echte alternative zu der Arduino IDE. Nicht nur für Einsteiger oder Kinder, für 90% meiner kleinen Projekte reicht mir Ardublock voll und ganz aus. Meistens kommt Ardublock an seine Grenzen wenn Module verwendet werden die es in der Ardublock Oberfläche nicht gibt oder es zu komplex wird. 

Diese Seite möchte dir den Einstieg in die grafische Programmierung mit Ardublock etwas erleichtern. Die Seite ist erst im Aufbau, deshalb gibt es noch nicht zu allen Blöcken etwas oder Teile fehlen.  

 Hier gibt es meine Tutorials und Programme die ich mit Ardublock einmal zusammengesetzt habe.


Versionen von Ardublock

 Ich verwende meistens die ardublock Version von der Hochschule Reutlingen. Diese ist auf Deutsch, läuft äußerst stabil, doch vor allem beinhaltet sie den (solange Mills), einen (interrupt) und einen (input pullup) Block. Wenn ich mit shields (Arduino Erweiterungen) arbeiten möchte wie LCD Displays, Schrittmotoren, LED Matrix oder Sieben Segment Anzeigen, dann greife ich auf die Französische Version von Duino EDU zurück. Hier sind im Gensatz zu der Version von der offiziellen Homepage schon alle Bibliotheken installiert und diese Version läuft einigermaßen stabil.  

 

Installation von Ardublock  Stand 03.2017

Um Ardublock unter Arduino nutzen zu können muss die Version 1.0.6 installiert sein. Ist Arduino auf dem PC installiert, muss die ardublock-all.jar Datei in einen Ordner kopiert werden. Wichtig dabei ist, dass groß und Kleinschreibung der Ordner richtig ist. Dabei muss "meincomputername" eben durch den Namen von eurem Computer ersetzte werden. Je nach System kann der Pfad auch unterschiedlich sein.  C:\Users\meincomputername\Documents\Arduino\tools\ArduBlockTool\tool (in den letzen Ordner "tool" dann die alljar Datei). Hier noch zwei Beispiele wie der Pfad auch lauten kann. 

ardublock arduino ordner installation

 

ardublock installation

 

Hier geht es zu einem kurzen Video von mir, in dem ich die Installation erkläre, einfach auf das Bild klicken. 

ardublock video einfuerung

 

 Nun sollte Ardublock in der Arduino IDE unter Werkzeuge zu finden sein. 

ardublock unter windows instalieren

 

 Die Oberfäche

Bei Ardublock wird aus verschiedenen Blöcken ausgewählt und dann mit der Maus in die Programmfläche gezogen. Passende Blöcke werden automatisch mi einem (klick Geräusch) zusammengefügt wenn sie nahe genug beieinander sind. So entsteht Block für Block eine kleine Software für den Arduino. Vor dem Hochladen muss in der Arduino IDE noch der Arduino Typ und der Port an dem der Arduino angeschlossen ist ausgewählt werden. 

Einzelne Blöcke oder Blockgruppen können mit einem Rechtsklick auch kopiert werden

 

ardublock oberflaeche programm tutorial

 

Nach dem klicken auf hochladen, erscheint der dazugehörige Code in der Arduino IDE. Kommentare werden nicht in der Arduino IDE angezeigt. Trotzdem sollte mit Kommentaren nicht gespart werden. Denn so weis man später immer welche Farbe eine LED hat oder welche Taster wo sitzt. Mit einem Rechtsklick kann man Kommentare einfügen.

ardublock kommentare programm hochladen

 

Beginn der grafischen Programmierung  

Es gibt zwei unterschiedliche Blöcke mit denen unsere grafische Programmierung beginnt. "Wiederhole fortlaufend" oder "Programm". Einer dieser beiden Blöcke muss gesetzt sein, sonst funktioniert das Programm nicht. Alle weiteren Blöcke (außer den interrup und Unterprogramm) müssen nun die geöffnete Klammern gesetzt werden. 

 ardublock tutorials

Beide Blöcke sind identisch nur das der „Programm“ Block neben dem „loop“ noch einen „setup“ Teil besitzt. Der setup Teil wird nur einmal nach dem anlegen der Spannung oder noch einem Reset ausgeführt. Hier werden Variablen, wie Zeiten hinterlegt oder die input pullup Widerstände aktiviert. Es können aber auch LEDs an oder ausgeschaltet werden. Zum Beispiel bei einer Ampel Steuerung. Hier werden alle Ampeln auf rot geschaltet bevor das Programm beginnt. 

Im „ loop" oder "mache“ Block findet nun das eigentliche Programm statt. Hier gibt es neben den Ein-und Ausgängen auch so genannte Bedingungen die erfüllt oder nicht erfüllt werden. Ohne Bedingungen geht es beim Arduino nicht. Erst wenn zum Bespiel der Schalter gedrückt wurde, geht das Licht an. Erst wenn die Bedienungen "Schalter gedrückt" erfüllt wird, geht das Licht an. 
Die Bedingung ist immer im „teste“ Teil, dem dann ein auszuführende Block folgt „viereckig“ direkt darunter.

Der „loop“ bzw. der „mache“ Block wird so lange wiederholt bis der Arduino ausgeschaltet wird. Dabei wird das Programm immer von "oben nach unten" ausgeführt, "unten" angekommen beginnt das Programm wieder von "Oben".

ardublock grafische programmierung fuer arduino

 

Mit dem „falls“ Block kann so eine Bedienung (hier ein digitaler Eingang" abgefragt werden und „falls“ diese wahr ist, dann wird das Programm im nachfolgenden Block ausgeführt. Danach geht es im Programm direkt weiter. Wenn die Bedienungen nicht erfüllt ist, wird der Block einfach übersprungen.

ardublock bedingungen wahr falsch

 

Der „falls sonst“ Block ist eine entweder/oder Entscheidung. Dieser Block wird auf jeden Fall ausgeführt und kann nicht übersprungen werden. Ist die Bedingung erfüllt, wird der erste Block ausgeführt, ist sie nicht erfüllt wird der zweite Block ausgeführt. Danach geht es im Programm weiter.

ardublock falls dann sonst bedingung

 

Beim „solange“ Block ist es etwas anderes. Das Programm im folgenden Block "Befehl" wird so lange ausgeführt wie die Bedingung erfüllt ist und erst danach geht es im Programm weiter. 

ardublock solange teste bedingung

Das Programm im „wiederhole“ und „wiederhole (variable)“ Block, wird so oft wiederholt wie angeben. So entfällt das Blöcke setzen für das gleiche Programm. In der „variable“ kann zudem der Name der Variablen frei bestimmt werden. So kann zum Bespiel eine LED fünf mal blinken ohne das die Blöcke fünf mal gesetzt werden müssen. 

ardublock wiederhole x mal block

 

Wartezeit "delay" im ardublock Programm 

Sehr viele Ressourcen des Arduino werden durch "warte Millisekunden Blöcke" verschwendet. Soll eine LED im Sekundentakt Blinken kann das mit zwei "warte Millisekunden" Blöcken recht einfach gemacht werden. Die LED geht nun im Sekundentakt aus und an.

ardublock hello word programm

Allerdings kann während der „warte Millisekunden“ Blöcke, der Arduino aber nichts anders machen außer Warten. Es können weder Eingänge, wie Taster oder Sensoren abgefragt werden, noch andere Ausgänge an oder ausgeschaltet werden. Damit ist das Programm faktisch nicht nutzbar in einer warte Millisekunden (delay) Schleife.
Ausnahme bilden die beiden interrupt Pins, die immer und zu jeder Zeit angesprochen werden können.

Bekommt einer der beiden interupt Pins (PIN 2 oder PIN 3) ein HIGH Signal, wird der "interupt" Block ausgeführt egal was der Arduino gerade sonst noch macht. Im "interrupt" Block können keine "warte Millisekunden" Blöcke eingefügt werden. Vor allem dient es dazu variablen zu ändern oder ein und Ausgänge sofort zu schalten. Die Blöcke für die beiden PINs gibt es nicht direkt in der Seitenleiste, die Blöcke vom "Unterprogramm" müssen im Text verändert werden. Aus dem "Unterprogramm" ein interupptPin2 oder 3 machen.

2 ardublock interruptPin 2 3 block

 

Aber auch damit sind die Möglichkeiten auf das ProgrammEinfluss zu nehmen beschränkt und sollten eher als „Notfunktion“ genutzt werden. Zum Beispiel wenn ein Endschalter oder Not aus betätigt wird. So wie in dem Bespiel. Wird der "interruptPin2" betätigt ändert sich die Variable, die Bedingung ist nicht mehr erfüllt und das Programm wird nicht mehr ausgeführt. Zudem wird eine weitere LED angeschaltet. Das funktioniert obwohl das Programm durch die Delay Blöcke im Wartemodus ist. 

1 ardublock interruptPin block

Besser ist es so weit wie möglich auf „warte Millisekunden“ Blöcke zu verzichten und stattdessen, den „solange (millis)“ Block zu verwenden. Das ist zwar etwas mehr Aufwand aber es lohnt sich. Das Programm das permanent ausgeführt wird befindet im „mache“ Block. Hier werden permanent die Ausgänge geschaltet oder die Eingänge abgefragt. Und alle 1000 Millisekunden, also jede Sekunde wiederholt sich einmal der Block Unterhalt des „warte Millisekunden“ Block. Hier können dann variablen gesetzt werden die die vergangen Zeit zählen. Diese Variablen mit der vergangenen Zeit können dann im „mache“ Block ausgelesen werden. 

 

ardublock blink without delay mills


Alle zwei Sekunden wird die Variable Zeit um eine einen Zähler nach oben gezählt, somit ist die vergangen Zeit von "zwei Sekunde" in der Variablen "zeit" gespeichert. An der Geschwindigkeit mit der der "Serial Print" aktualisiert wird kann man sehen dass das Programm nicht durch einen „warte Millisekunden“ Block unterbrochen wird. Nach 20 Sekunden wird die Variable dann wieder auf 0 gesetzt und beginnt dann vor vorne zu zählen. Würde die Zeit von 2000 auf 1000 gesenkt würden, wäre ein Zähler eine Sekunde, bei 5000 hatte der Zähler einen Wert von 5 Sekunden usw. .

ardublock variable in millis speichern

 

In diesem Beispiel gehen die LEDs an den PINs 2,3 und 4 nach je einer Sekunde an. In der vierten Sekunde gehen alle wieder aus, es wird dann noch sechs Sekunden gewartet und dann beginnt alles wieder von vorne. In diesem Beispiel setze ich in die „falls“ Bedingungen, einfach die Sekunden nach der die LEDs an und bzw. aus gehen sollen.

ardublock ohne delay blink without

 

Durch den Einsatz von „solange (millis)“ und variablen kann ich fast alle „warte Millisekunden“ Blöcke aus dem „mache“ Block entfernen. Durch das verändern der „Zeit“ ändert sich der Abstand in dem das Programm einen „Durchlauf“ macht. Hier noch das "hello world" ohne Delay. Im "mache" Block können nun weitere Taster, Ausgänge oder Potis eingebaut werden ohne dass das Programm durch "delay" gestoppt wird.

hello world led blink ohne delay

 

Digitale Eingänge am Arduino mit Ardublock auslesen 

 Werden die Digitale Pins des Arduino als Eingänge verwendet, gibt es zwei Schaltzustände. Anliegende Spannung (VCC, 5 oder 3,3 Volt DC) oder nicht anliegende Spannung (GND). Damit die sehr empfindlichen Eingänge auch das "richtige" messen. Muss immer eine eindeutige Spannung anliegen. Wäre einfach nur ein Kabel angeschlossen an dem nicht VCC oder GND anliegt würde der PIN die ganze Zeit hin und her schalten. Damit das nicht passiert benötigen wir einen "pulldown" oder einen "pullup" Widerstand. Auf dem Arduino sind die "pullup" Widerstände bereits verbaut und sie müssen nur noch im Programm "aktiviert" werden. Dabei ist es egal was als Eingang verwendet wird. Es können zum Beispiel Taster, Schalter, Reedkontakte, Endschalter, Schlüsselschalter, potentialfrei "Relais"kontakte oder ähnliches verwendet werden.  

Digitale Eingänge mit externem pulldown Widerstand

 digital input pin input pulldown

Mit Ardublock können wir die Tasterstellung nun auslesen. Ob er gedrückt ist oder nicht. Nach dem hochlanden, kann im Serial Monitor abgelesenen werden, ob der Taster gedrückt wurde oder nicht. 

2.2 digital input ardublock

 

Digitale Eingänge mit internem pullup

Vorteil dieser Schaltung ist, dass keine Widerstände verbaut werden müssen. Ein kleiner nachteile ist dass man in Ardublock immer darauf achten muss dass die "pullup" Widerstände eingeschaltet sind und dass ein "nicht" Block beim abfragen des Taster hinter die Bedingung gesetzt wird.

4 digital input Steckplatine

Der nicht Block

Das Ardublock Programm zum auslesen des Tasters ist genau gleich. Nur dass im Setup Teil der "inputt pullup" Block eingefügt und der Pin des Eingangs angegeben werden muss. Zudem muss vor den "digitalRead" Block noch der "nicht" Block eingefügt werden. Da durch den internen "pullup" Widerstand der Eingang bei nicht gedrücktem Taster immer HIGH ist. Dafür spart man sich die Widerstände auf dem Breadbord.

 2.1 digital input input pullup arduino

 

 Die analogen Eingänge mit Ardublock

Mit den analogen Eingängen kann anders wie bei den digitalen Eingängen nicht nur zwei unterschiedliche Signal "HIGH" und "LOW" sonder eine anliegende Spannung ausgelesen werden. Jeder Widerstand hat eine Änderung der Spannung zur Folge. Ändert sich die Temperatur an einem Temperaturfühler oder ändert sich das einfallende Licht an einem Lichtsensor (zum Beispiel einem LDR) ändert sich auch die Spannung die durch das Bauteil fließt. Diese Spannungsänderung kann der Arduino nun an den Analogen Eingängen messen und uns als einen Zahlenwert von 0 bis 1023 ausgeben. Mit diesen Werten können wir nun im Programm arbeiten. 

3 analoge inputs 2 adern programm

Die analogen Eingänge werden immer mit einem "analog Read" ausgelesen. In den meisten Fällen benötigen wir hier eine Variable. In dieser Variablen ist der Wert dann gespeichert, wird mit jedem "Durchlauf´" des Programms erneut abgefragt und in der Variablem aktualisiert. Bitte darauf achten dass ein "warte" Block, das auslesen für die eingetragene Zeit verhindert. In vielen fällen benötigen wir im Programm keinen Wert von 0 bis 1023 sonder einen kleineren Wert. Zum Bespiel um eine an eine LED zu dimmen (0-255) oder einen Servo (0-180) anzusteuern.  Dann wird der "einschränken" und "zuordnen" Block benötigt.

Der Block "einschränken" sorgt einfach dafür dass kein Wert größer bzw. kleiner als der eingestellt Wert "ausgeben" wird. Der Wert 0-1023 wird als einfach abgeschnitten. Aus 0-1023 wir dann einfach 0-255, die Werte über 255 also 256-1023, gelten dann als Wert 255. Möchte man eine LED mit einem Poti regeln wäre nach 1/3 der Umdrehung also schon die volle Helligkeit erreicht. 

Bei Block"zuordnen" wird der Wert nicht einfach abgeschnitten sondern im Verhältnis umgerechnet. Wenn ich wie im Bild also von 0-1023 einen Wert 100 auslesen, dann rechnet der Arduino diesen Wert so um, dass er im Verhältnis zu dem Eingang steht. So sind bei einem Poti 30% auch 30% auch wenn ich im Eingang 0-1023 und im Ausgang 0-255 habe, was in den meisten Fällen sicher sinnvoller ist.  

Beispiel: Zeitmessung mit zwei Lasern und zwei LDR über Analog Input.

 

Messung mit einem Widerstand gegen GND

Das Bauteil, hier ein LDR bekommt 5 Volt Spannung und wird mit einem "pulldown" Widerstand gegen GND geschaltet. Der analoge Eingang kann so auch mit Taster und Widerständen beschaltet werden, um einem festen Wert auszulesen, So können die analogen Eingänge auch für Taster oder ähnliches verwendet werden. 

 

3 analoge inputs 2 adern programm.JPG

 

Messung mit VCC, GND und OUT

 Die meisten Potentiometer kurz (Poti) haben 3 Anschlüssen VCC-OUT-GND, damit einfällt der Widerstand gegen GND, da die Messung selber zwischen VCC und GND stattfindet. Die Messung in Ardublock ändert sich nicht, nur der Anschluss ist etwas anders. Zudem gibt es auch weitere Bauteile wie Temperatursensoren die 3 Anschlüsse haben.

3 analoge inputs 3 adern Steckplatine

 

 Digitaler Ausgang mit Ardublock

Digitaler Ausgang bedeutet eigentlich nur dass an einem PIN 5 Volt anliegen oder eben keine Spannung. Dabei bedeutet "HIGH" 5 Volt liegen an und "LOW" bedeutet keine Spannung liegt an. 

digitale ausgaenge high low

 

Mit diesen 5 Volt können jetzt die unterschiedlichen "Bauteile" geschaltet werden. LEDs, Relais, Motoren oder mechanische Summer (ich habe in Firtzing leider nur diesen Piezo gefunden) und vieles mehr. Kommt das Programm an ein "HIGH" wird eingeschaltet, ist das Programm an einem "LOW" wird ausgeschaltet. 

digitale ausgaenge ardublock

Dabei ist aber immer auf die maximale Stromaufnahme der Bauteile zu achten. Sollte diese überschritten werden, bracht ihr einen neuen Arduino :-(..... Deshalb gilt für den Arduino UNO und NANO folgende Werte, die unbedingt eingehalten werden müssen. 

  • An der Strom an einem PIN darf 40.0 mA nicht übersteigen.
  • An alle PINS zusammen, also der gesammte Strom darf  200.0 mA nicht übersteigen. 

Wer große Lasten wie einen Motor anschließen möchte der muss mit Transistoren oder noch besser mit fertigen Mosfet shield arbeiten. Hier entfällt die aufwendige Verdrahtung mit Dioden und Widerständen. 

digitaler ausgang dc motor ardublock

Hier die Verdrahtung mit einem fertigen Mosfet shield. Es muss natürlich kein Motor oder ähnliches angeschlossen werden, es können auch LED stripes oder ähnliches gebaut werden. In Fritzing habe ich leider kein passende shield gefunden, deshalb habe ich nur die Klemmen gezeichnet.

ardublock mosfet 

 

Analoger Ausgang PWM mit Ardublock 

Analoger Ausgang heißt "manchmal" leider nicht das an diesem Ausgang 0-5 Volt ausgegeben werden können. Analoger Ausgang heißt hier nur dass ein PWM (pulsweitenmodulation) PIN vorhanden ist. Kurz gesagt dieser PIN wird so oft schnell hintereinander aus- und eingeschaltet dass das Menschliche Auge zum Beispiel eine LED als heller oder dunkler empfindet. Zudem kann das "pullsen" diese Signal von einigen Bauteilen zum Beispiel einem Servomotor "ausgelesen" und "umgesetzte" werden.

pwm pins ausgang ardublock

Es ist nun möglich eine LED ganz simpel in der Helligkeit zu ändern (dimmen). Dazu muss nur das PWM Signal von "0" = ganz dunkel, nach "255"= ganz hell gestellt werden. 

Die LED kann aber auch einfach an und aus geschaltet werden, wie im ersten Bild. Wird der PWM Ausgang aber auf 80 oder 60 begrenzt, entfällt der Vorwiderstand weil die maximale Helligkeit schon früher erreicht wird. Dies sollte aber nur gemacht werden wenn man sich sicher ist, dass nicht ausersehen doch 255 Pulse auf den PWM PIN kommen. Sonst ist die LED auf jeden Fall und der Arduino ggf. hinüber. 

pwm led pin ardublock

 

 Der Servo Motor in Ardublock

Der Servo Motor kann von 0-180 Grad stufenlos gefahren werden, zudem benötigt er kein extra Getriebe und hat viele Anbauplatten.  Der Block „Servo verbinden“ muss nur gesetzt werden, wenn vorher der Block „servo trennen“ verwendet wurde. Sonst ist der Servo Motor automatisch durch das Programm verbunden. Der Servomotor selber bekommt Spannung von VCC und GND und die Signalleitung muss an einen PWM angeschlossen werden. Beim Anschluss vieler oder sehr großer Servos, muss die Spannungsversorgung über ein Netzteil realisiert werden. 

servo motoren ardublock

Nachdem der Servo das Signal bekommen hat in bestimmte Position zu fahren, muss dem Servo auch die Zeit gegeben werden diese Position zu erreichen. Wird der Servo zu früh getrennt oder zu früh in eine andere Position gefahren, kann es vorkommen dass die Position nicht erreicht wird. Das trennen des Servomotors macht vor allem dann Sinn wenn der Servo nach dem erreichen seiner Position lange nicht bewegte werden muss. So spart man Energie und ein "brummen" des Servos wird auch verhindert. 

servomotor ardublock verbinden trennen steuern

 

Hier gleich ein Beispiel wie der Servo Motor mit einem Poti angesteuert werden kann. Als ersten wird im "setup" der Servo auf 0 Grad gefahren. Der Wert der vom Poti am analogen Eingang A0 wird ausgelesen. Damit der Servo auch seine 180 Grad nach der Poti Stellung ansteuern kann. Wird das Signal vom Poti von 0-1023 auf die 0-180 Grad vom Servomotor umgerechnet und in der Variablen gespeichert.Der Servo Block liest die Variable Servo aus und gibt sie in den PWM PIN 5 weiter. Der Servo fährt in die gewünschte Stellung. 

servo motor mit poti steuern ardublock

 

 Töne mit Ardublock

Für die Ausgabe von Tönen gibt es zwei Blöcke in Ardublock. An beiden Blöcke "Ton" wird einer der PWM PINs gewählt und danach die Frequenz eingestellt. Einziger Unterschied, beim linken Block muss der Ton selber wieder ausgeschaltet werden. Beim rechten Block kann zudem die Zeit eingestellt werden, die der Ton dauern soll. 

ton toene frequenz ardublock pin

 

In den meisten Fällen ist ein Piezo-Summer die besten Wahl, da er nicht erst verstärkt werden muss und die Frequenzen gut und deutlich wiedergegeben werden. Es können aber auch kleine Lautsprecher angeschlossen werden. Ggf. hilft es einen kleinen Kondensator mit einzubauen. Für größere Lautsprecher muss aber ein Verstärker Schaltung her. 

lautsprecher piezo ardublock

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Suchen