Hauptmenü

1 2 oder 3 Spiel bauen

Ich wurde für ein Gemeindefest gefragt ob ich nicht die Schaltung der Lampen für das Spiel 1 2 oder 3 bauen könnte. Was mit einem Arduino nun keine so große Aufgabe ist zumal ich das Programm relativ einfach gehalten habe. Zu dem Spiel sage ich jetzt nicht sehr viel, denn das dürften die meisten ja kennen. Im Prinzip geht es darum dass den Kindern eine Frage gestellt wird und sie während einer bestimmten Zeit sich dann entscheiden müssen auf welche Antwort die richtige ist. Dabei blinken die Antwortmöglichkeiten mit Lampen als drei Felder auf. Die Lösung wird am Ende durch das Aufleuchten eines Feldes gezeigt. Mit einem Arduino eine Kleinigkeit die Lampen und die Taster anzusteuern. 

Weiterlesen: 1 2 oder 3 Spiel bauen

Laser Zielscheiben schießen

Nachdem ich meine Parkhausschranke auseinander gebaut hatte. Lagen da ein Laser, ein LDR und ein Servomotor vor mir. Warum auch immer bin ich auf die Idee gekommen aus diesen Bauteilen ein Spiel zu machen. Die Spielidee ist recht einfach. An den Servo Motoren sind Zielscheiben befestigt in deren Mitte sich ein LDR befindet. Wird der LDR mit dem Laser "getroffen" klappt die Zielscheibe nach unten und es kann zur nächsten geben, so lange bis alle Scheiben "umgeschossen" sind.

Weiterlesen: Laser Zielscheiben schießen

Arduino grafisch programmieren

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.  

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Arduino Baustellenampel

Baustellenampel begegnen uns "leider" sehr häufig wenn es einspurig wird. Vor kurzem bin ich von einem Modellbauer nach solch einer Schaltung für seine Modellbahnalage gefragt worden. Das Programm ist natürlich recht einfach, da es ja nur ein besseres Lauflicht, mit einem rot, gelb, grün wechsel ist. Bei genauer Betrachtung solcher Anlagen sieht man aber immer wieder so kleine "Dinger" Kameras oder Sensoren auf den Ampeln. Ich habe mich gefragt was ist das?

Weiterlesen: Arduino Baustellenampel

Bahnübergang mit schranke

Eigentlich für ein Buzz Lightyear Kostüm mit automatisch ausfahrbaren Flügeln, habe ich diesen Sketsch geschrieben. Aber im Prinzip ist es ein Sketsch für einen Bahnübergang. Er kann einfach für beides verwendet werden und muss nur geringfügig angepasst werden. 

Weiterlesen: Bahnübergang mit schranke

Parkhaus Schranke

Schranken für Fahrzeuge begegnen uns beinahe Täglich. Vor allem auf Parkplätzen, Parkhäusern, Bahnübergängen bzw. Bahnanlagen aber auch bei Waschanlagen oder in Werkstätten. Dabei ist das Prinzip immer das gleiche, erst wenn eine bestimmte Bedingung erfüllt ist, öffnet oder schließt sich die Schranke, zudem gibt es einige Sicherheitseinrichtungen. Ich wurde um Hilfe für eine solche Schaltung gebeten und habe gerne geholfen. Um dem Thema der Schranken etwas näher zu kommen, vor allem weil sie oft im Modellbau eingesetzt werden, habe ich mir ein solchen Modell von einer Parkhausschranke einmal nachgebaut. Wobei ich zudem noch eine Sicherheitseinrichtung eingebaut habe, falls sich beim Schließen ein Hindernis im Schließbereich befindet.

Weiterlesen: Parkhaus Schranke

Teetimer

 Mit drei Kindern kann man schon mal vergessen, seinen Teebeutel aus der Tasse zu nehmen. Damit das (meiner Frau) nicht mehr passiert, habe ich ihr einen Teetimer gebaut, der mehr kann als nur klingeln. Nach der eingestellten Zeit wird der Teebeutel über einen Servo Motor aus der Tasse geholt und ein Summer ertönt. Das Ganze wird über einen Arduino Nano Clon gesteuert. 

Weiterlesen: Teetimer

Selbstöffnende Kiste mit Servo bauen

Wer anklopft, dem wird aufgetan. So das Motto dieser Kiste. Wird auf den Deckel geklopft, erkennt das der Arduino über ein angeschlossenes Mikrofon und erteilt dem Servo das PWM Signal zum Öffnen der Kiste. 

Weiterlesen: Selbstöffnende Kiste mit Servo bauen

Servo Bonbonspender mit Arduino

Nachdem der automatische Bonbonspender aus Holz fertig war, hatte ich die Idee zu einem weiteren Süßigkeitenspender. Diesmal aber einen elektrisch angetriebenen, der die Smarties nur frei gibt, wenn ein Pin des Arduino HIGH ist. 

Weiterlesen: Servo Bonbonspender mit Arduino

Multiplexing Attiny LED Spiel

Nachdem das Arduino Spiel Senso fertig gebaut und vorgestellt war, bekam ich via Mail den Tipp für ein weiteres Geschicklichkeitsspiel. Diesmal nicht mit einem Arduino, sondern mit meinem kleinen Liebling, dem Attiny 45/85. Es geht kurz gesagt darum, eine Leiter aus 10mm LEDs nach oben zu klettern. Wird im richtigen Moment der Taster gedrückt, blinkt die nächste LED. Wird der Taster im falschen Moment gedrückt, fällt der Spieler die LED Leiter herunter und muss von vorne anfangen.

Weiterlesen: Multiplexing Attiny LED Spiel

Arduino Spiel: simon Says

Vor kurzem habe ich bei youtube eine Doku über Computerspiele angeschaut. Dabei wurde auch das "Computerspiel" Senso, im Englischen Simon says vorgestellt. Das hatten meine Eltern auch und ich habe es mit 9 Jahren im Keller gefunden. Ein tolles, absolut süchtig machendes Spiel, weil es so einfach und doch genial ist. Ähnlich wie Tetris, Pong oder Snake, Spiele die so einfach und gerade deshalb so genial sind.

Weiterlesen: Arduino Spiel: simon Says

Attiny 45 85 mit Arduino ISP programmieren

Für die meisten meiner kleinen Projekte brauche ich keinen Arduino Uno, es reicht ein Attiny 45 oder 85. Für etwas größere Projekte verwende ich dann einen Attiny 44 oder 84. Auf dieser Seite erkläre ich kurz wie ein Attiny mit dem Arduino programmiert wird und wie man sich zum einfachen Programmieren eine Platine für den Attiny bauen kann.

Weiterlesen: Attiny 45 85 mit Arduino ISP programmieren

Arduino RGB LED, Farbwechsel mit Poti einstellen

Für eine meiner vielen kreativen Lampen habe ich eine Schaltung gesucht, mit der ich über drei Potis die Farbtemperatur zu 100% selber einstellen kann. Mit einem NE 555 habe ich früher schon RGB Treiber gebaut. Für das Einstellen jeder Farbe kommt der IC aber an seine Grenzen, also habe ich mich für den Arduino Uno entschieden. Für einen Farbwechsel mit Potentiometer müssten meine Kenntnisse eigentlich ausreichen.  

Weiterlesen: Arduino RGB LED, Farbwechsel mit Poti einstellen

Kerzenlicht- und Feuerscheinsimulation

Für unsere Baum-Dekoration vor dem Haus, wollte ich eine LED Beleuchtung, die mir den Schein einer Kerze Simuliert. Mit einem Arduino Uno, 5 Zufallsgeneratoren und 24 LEDs ist mir das ganz gut gelungen. Hier nun die Anleitung zum Nachbauen.

Weiterlesen: Kerzenlicht- und Feuerscheinsimulation

Heißer Draht, Arduino Spiel und Projekt

Der heiße DRAHT ist ein Geschicklichkeitsspiel. Ziel ist es, eine Drahtöse über einen geraden und/ oder gebogenen Draht von Punkt A nach Punkt B zu führen, ohne diesen zu berühren.

Weiterlesen: Heißer Draht, Arduino Spiel und Projekt

Arduino Spielleiter Buzzer

Welcher Taster (Buzzer) zuerst gedrückt wird, dessen Lampe leuchtet und bleibt auch an, egal wie oft die anderen noch auf ihren Buzzer drücken. Die Anzeige lügt nicht. Sie zeigt eindeutig wer schneller war :-). So gibt es keinen Streit mehr darüber, welche Gruppe/ Person sich zuerst gemeldet hat. 

Weiterlesen: Arduino Spielleiter Buzzer

LED Roulette Spiel mit Arduino uno

Nachdem der Würfel beim Spieleabend so gut ankam, sollte ich auch noch ein LED Roulett bauen. Klar kein Problem, zumindest mit einem Arduino. Ich habe früher mal einen Bausatz mit eine Roulett gehabt. Mehrere ICs und ein "gelöte", dass es nicht mehr schön ist. Zum Glück reicht für den Spieleabend ein ganz einfach Roulett mit 10 LEDs.

Weiterlesen: LED Roulette Spiel mit Arduino uno

Arduino Fußgängerampel

Es wäre doch toll, wenn wir beim Spielen mit den Duplos auch so eine Ampel hätten, wie beim Fahrradfahren. Also Laptop mit in die Werkstatt genommen und für die Kinder bzw. für die Duplo Fahrzeuge eine Ampel gebaut. Damit war aber niemand zufrieden, denn wie soll mal mit einer Ampel spielen, die sich nicht drücken lässt. Also gleich noch einmal Laptop in die Werkstatt und Ampel 2.0 gebaut. Diesesmal mit einem Taster für die Fußgänger.

Weiterlesen: Arduino Fußgängerampel

Arduino mini Würfel mit 7 LEDs

Für einen Spieleabend wurde ein digitaler Spielwürfel benötigt, nicht zu verwechseln mit einem LED Cube. Mit einem Arduino ist das natürlich kein Problem. Nach dem hochfahren des Arduino, ist der Würfel bereit für das Spiel. Drückt man nun auf den Knopf, leuchten die LEDs der Reihe nach auf und zeigen dann eine Zahl an. Die 7 LEDs sind so angeordnet, wie bei einem richtigen Würfel und stellen die Zahl wie auf einem analogen Würfel dar.

Weiterlesen: Arduino mini Würfel mit 7 LEDs

LED Fahrradbeleuchtung

Als Fahrradfahrer wird man oft und gerne von Autos, Bussen und Motorrädern übersehen. Das liegt aber oft genug am Fahrradfahrer selbst, weil das Fahrrad nicht richtig oder nur unzureichend beleuchtet ist. Dabei ist schon lange klar, dass ein blinkendes Licht besser gesehen wird als ein dauerhaft leuchtendes Licht. Ebenso werden helle LEDs besser gesehen, als dunkle Glühlampen. Aus diesem Grunde habe ich mir mein Rücklicht selber gebaut.

Weiterlesen: LED Fahrradbeleuchtung

Fahrrad Blinker

Über das Kontaktformular habe ich eine Anfrage bekommen, ob ich helfen kann. Ein Besucher meiner Seite möchte an sein Fahrrad einen Blinker anschließen. Dieser Blinker soll aus 8 LEDs bestehen und je nach Stellung des Schalters die Richtung anzeigen.

Weiterlesen: Fahrrad Blinker

Blobby Spiel, Gampad Bauanleitung

Blobby ist ein Spiel, das leicht süchtig macht. Zwei Spieler Kämpfen um den Pokal im Beachvolleyball. Normalerweise wird das Spiel auf einer Tastatur und einem Computer Monitor gespielt. Wird das Spiel über einen Beamer und ein Gamepad mit 3 Tasten gespielt, wird es genial. Im Freundeskreis spielen wir Blobby gegeneinander und es gab auch schon Blobbyturniere. Da es mit der Tastatur gegeneinander wenig Spaß macht, gibt es hier die Bauanleitung für das Gamepad. Zwei Stück davon an den PC und ihr habt auf dem Computer bzw. der Leinwand ein richtiges Nintendo WII oder Playstation feeling.  

Weiterlesen: Blobby Spiel, Gampad Bauanleitung

DC Motor mit Arduino und Minibloq betreiben

Einen Motor über einen Arduino zu betreiben ist relativ einfach, allerdings wird in aber in 90% aller Fälle eine externe Spannungsquelle benötigt um den Motor zu betreiben. Das liegt in der Leistungsaufnahme des Motors. Dieser benötigt mehr Strom und oft auch mehr Spannung als die 5 Volt des Arduino Bords. 

Weiterlesen: DC Motor mit Arduino und Minibloq betreiben

Der push Button mit Ardublock und Arduion

Mit einem Taster etwas ein- und ausschalten, hier im Beispiel eine LED, ist gar nicht so einfach. Ein Schalter behält seine Schaltstellung nach einem Schaltvorgang bei. Ein Taster kann immer nur das gleiche Signal weitergeben. Deshalb muss irgendwo der Zustand vor dem letzten Drücken gespeichert werden, oder der aktuelle Zustand ausgelesen werden. 

In der Grafik seht ihr den Aufbau auf dem Breadbord. 

fritzing-push-button Steckplatine

Push button mit Ardublock und einer Variablen:

Mit Ardublock wird lediglich eine Variable benötigt, die den Zustand speichert. In diesem Fall wird die Variable (var) pin 2 auf high gesetzt. So rechnet das Skript +1 zur Variablen dazu: 0+1 = 1. Im nächsten Schritt wird "getestet" ob "var" = 1 ist. Dies ist nun der Fall, also wird pin 4 auf high gesetzt. Wird nun der Taster noch einmal gedrückt, rechnet die Variable "var" wieder +1, also: 1+1=2. Im nächsten Schritt wird geprüft ob "var" = 2 ist. Dies ist der Fall, also wird pin 4 auf "low" gesetzt. Damit der Speicher nicht "überläuft", wird die Variable "var" automatisch auf 0 gesetzt und alles beginnt von vorne. 

ardublock-arduino-tutorial-push-button

Hier noch das mit ardublock ausgegebene skript:

int _ABVAR_1_var = 0 ;

void setup()
{
pinMode( 2 , INPUT);
pinMode( 4 , OUTPUT);
_ABVAR_1_var = 0 ;
}void loop()
{
if ( digitalRead( 2))
{
_ABVAR_1_var = ( 1 + _ABVAR_1_var ) ;
delay( 10 );
if (( ( _ABVAR_1_var ) == ( 1 ) ))
{
digitalWrite( 4 , HIGH );
delay( 300 );
}
if (( ( _ABVAR_1_var ) == ( 2 ) ))
{
digitalWrite( 4 , LOW );
delay( 300 );
_ABVAR_1_var = 0 ;
}
}

Push Button mit Ardublock und Pinabfrage:

Eine zweite Möglichkeit einen push Button zu programmieren ist, den pin Ausgang abzufragen. Beim Drücken des Tasters wird nicht nur pin 2 abgefragt, sondern auch pin 4 mit der LED. Ist die LED an, ist pin 4 high. Ist sie aus, ist pin 4 low. Wird der Taster gedrückt, fragt der Arduino also zusätzlich den pin Ausgang ab. Dabei ergeben sich nur zwei Möglichkeiten

  • Ist pin 2 high (Taster gedrückt) und pin 4 low = schalte die LED an, denn sie ist gerade aus
  • Ist pin 2 high (Taster gedrückt) und pin 4 high = schalte die LED aus, denn sie ist gerade an

ardublock-arduino-tutorial-push-button-variable

 

Hier noch das mit ardublock ausgegebene skript

int _ABVAR_1_var = 0 ;

void setup()
{
pinMode( 2 , INPUT);
pinMode( 4 , INPUT);
pinMode( 4 , OUTPUT);
_ABVAR_1_var = 300 ;
}void loop()
{
if (( digitalRead( 2) && !( digitalRead( 4) ) ))
{
digitalWrite( 4 , HIGH );
delay( _ABVAR_1_var );
}
if (( digitalRead( 2) && digitalRead( 4) ))
{
digitalWrite( 4 , LOW );
delay( _ABVAR_1_var );
}
}

 

Suchen