Technisches Basteln, Erfinden und Designen mit Arduino
- Robbie Sandberg
- Site Admin
- Beiträge: 165
- Registriert: 18.06.2019, 11:37
Technisches Basteln, Erfinden und Designen mit Arduino
Mit Arduino lassen sich computergesteuerte Geräte mit integrierten Sensoren, Motoren, Displays, drahtloser Kommunikation und mehr am eigenen Schreibtisch bauen und programmieren.
Das Besondere ist, Arduino ermöglicht das auch ohne löten zu können oder Informatik studiert zu haben. Der Zugang zu Hard- und Software ist stark vereinfacht, um einer breiteren Masse das technische Basteln zu ermöglichen.
Die taktil erschließbare Hardware und barrierearme Code-Eingabe machen das Basteln mit Arduino auch blind möglich.
Arduino wird in Schulen verwendet, um Kindern grundlegende Prinzipien des Designs und der Informatik beizubringen.
Viele Tüftler*innen bauen sich damit eigenkonstruierte Installationen, z.B. Steuerung von Heim- und Gartenautomationen wie Beleuchtung oder Pflanzenbewässerung, aber auch Bluetooth-gesteuerte Roboter oder Spielzeuge. Arduino eignet sich auch hervorragend zum Bau von Hilfsmitteln, die es auf dem Markt so nicht gibt.
In diesem Thread möchte ich Tipps für den Einstieg geben und Bauanleitungen veröffentlichen. Anleitungen findet man im Netz zuhauf, aber es gibt keine Anleitung, die sich an Blinde richtet und z.B. rein taktile Methoden vermittelt oder Lösungen für den nichtvisuellen Zugang anbietet. Auch werden Schaltpläne im Netz immer grafisch dargestellt.
In meinen Tipps und Anleitungen werde ich blindenspezifische Hinweise geben und Schaltpläne natürlich in Textform bereitstellen.
Der Thread richtet sich an Blinde, die sich mit Arduino beschäftigen möchten, aber auch an Lehrkräfte, die inklusiven Unterricht gestalten wollen.
In der folgenden Podcast-Episode hört ihr einen Vortrag, den ich auf dem 37. Kongress der Blinden- und Sehbehindertenpädagogik gehalten habe. Er bietet einen Einstieg in die Materie.
Arduino: Inklusiver Einstieg in Programmierung mit Hard- und Software
Das Besondere ist, Arduino ermöglicht das auch ohne löten zu können oder Informatik studiert zu haben. Der Zugang zu Hard- und Software ist stark vereinfacht, um einer breiteren Masse das technische Basteln zu ermöglichen.
Die taktil erschließbare Hardware und barrierearme Code-Eingabe machen das Basteln mit Arduino auch blind möglich.
Arduino wird in Schulen verwendet, um Kindern grundlegende Prinzipien des Designs und der Informatik beizubringen.
Viele Tüftler*innen bauen sich damit eigenkonstruierte Installationen, z.B. Steuerung von Heim- und Gartenautomationen wie Beleuchtung oder Pflanzenbewässerung, aber auch Bluetooth-gesteuerte Roboter oder Spielzeuge. Arduino eignet sich auch hervorragend zum Bau von Hilfsmitteln, die es auf dem Markt so nicht gibt.
In diesem Thread möchte ich Tipps für den Einstieg geben und Bauanleitungen veröffentlichen. Anleitungen findet man im Netz zuhauf, aber es gibt keine Anleitung, die sich an Blinde richtet und z.B. rein taktile Methoden vermittelt oder Lösungen für den nichtvisuellen Zugang anbietet. Auch werden Schaltpläne im Netz immer grafisch dargestellt.
In meinen Tipps und Anleitungen werde ich blindenspezifische Hinweise geben und Schaltpläne natürlich in Textform bereitstellen.
Der Thread richtet sich an Blinde, die sich mit Arduino beschäftigen möchten, aber auch an Lehrkräfte, die inklusiven Unterricht gestalten wollen.
In der folgenden Podcast-Episode hört ihr einen Vortrag, den ich auf dem 37. Kongress der Blinden- und Sehbehindertenpädagogik gehalten habe. Er bietet einen Einstieg in die Materie.
Arduino: Inklusiver Einstieg in Programmierung mit Hard- und Software
- Robbie Sandberg
- Site Admin
- Beiträge: 165
- Registriert: 18.06.2019, 11:37
Der Arduino Uno R3 Mikrocontroller
Die Arduino-Plattform besteht aus einer Platine mit einem Prozessor und Steckkontakten, die durch eine vereinfachte Programmiersprache gesteuert wird. Die Hardware nennt man auch Board, wie bei Mother Board.
Es gibt verschiedene Arduino-Boards, die sich durch ihre Größe und Rechenleistung unterscheiden. Ich beschreibe hier den Arduino Uno R3, ein weit verbreitetes Board, das sich gut für den Einstieg eignet.
Der Uno R3 ist etwa so lang wie eine Kreditkarte und etwa eineinhalbmal so breit.
Auf der Oberseite des Boards fühlt man parallel zu den langen Seiten jeweils eine Leiste. Diese Leisten enthalten die Steckkontakte, Pins genannt. Es sind kleine Löcher, die man mit einer Steckerspitze erfühlen und abzählen kann. Warum sie Pins heißen, fühlt man auf der Unterseite. Jeder Kontakt endet in einem winzigen Stift, der unten aus dem Board tritt. ES fühlt sich an, wie eine Reihe von Nadelspitzen. Damit muss man sich aber nicht beschäftigen. Uns interessiert nur die Oberseite.
An einer kurzen Seite befindet sich ein Quaderförmiger Aufbau. Das ist der USB-Anschluss. Dreht das Board so, das er oben rechts ist. So stört das USB-Kabel nicht beim Arbeiten mit dem Board. Auch ist das die allgemein verwendete Arbeitsposition. Wenn bezüglich eines Boards von links und rechts die Rede ist, bezieht sich das immer auf diese Ausrichtung.
Links neben dem USB-Anschluss fühlt man einen röhrenförmigen Aufbau, der Anschluss für ein Netzteil.
Die Leisten mit den Pins sind von links und rechts zugänglich.
Für mich sind die Stecklöcher zu klein, um sie mit dem Finger fühlen zu können, aber wenn ich einen Stecker einstecken möchte, wandere ich mit der Steckerspitze oben auf der Leiste entlang und finde die Löcher.
Die Pins haben alle einen festen Platz und eindeutige Bezeichnungen. Links sind die analogen Ein- und Ausgänge, rechts die Digitalen. Sie sind mit A oder D gefolgt von einer Zahl bezeichnet, also z.B. A0.
Pins, die mit Tilde gekennzeichnet sind, sind PWM-fähig (siehe Begriffsklärung).
Außerdem gibt es einen Pin für Stromzufuhr, der VIN heißt und mehrere Masse-Anschlüsse, die Ground, abgekürzt GND heißen. An VIN wird immer der Pluspol einer Stromquelle angeschlossen, an GND der Minuspol. Dann gibt es noch die Pins 5V und 3V für die Stromabnahme, also fünf Volt und 3,3 Volt. Es gibt noch einige weitere Pins, die aber für den Einstieg keine Rolle spielen.
Für Sehende sind die Bezeichnungen neben den Pins aufgedruckt. Ich nutze eine Excel-Tabelle, in die ich die Pins in zwei Spalten, entsprechend den Leisten eingetragen habe. Ich kann also nachgucken, an welcher Stelle sich ein Pin befindet und dann mit der Steckerspitze abzählen.
hier könnt ihr die Tabelle für den Uno R3 runterladen. Einige Zellen enthalten Kommentare, die Funktionen der Pins betreffend. Für den Anfang müsst ihr das nicht beachten.
Es gibt verschiedene Arduino-Boards, die sich durch ihre Größe und Rechenleistung unterscheiden. Ich beschreibe hier den Arduino Uno R3, ein weit verbreitetes Board, das sich gut für den Einstieg eignet.
Der Uno R3 ist etwa so lang wie eine Kreditkarte und etwa eineinhalbmal so breit.
Auf der Oberseite des Boards fühlt man parallel zu den langen Seiten jeweils eine Leiste. Diese Leisten enthalten die Steckkontakte, Pins genannt. Es sind kleine Löcher, die man mit einer Steckerspitze erfühlen und abzählen kann. Warum sie Pins heißen, fühlt man auf der Unterseite. Jeder Kontakt endet in einem winzigen Stift, der unten aus dem Board tritt. ES fühlt sich an, wie eine Reihe von Nadelspitzen. Damit muss man sich aber nicht beschäftigen. Uns interessiert nur die Oberseite.
An einer kurzen Seite befindet sich ein Quaderförmiger Aufbau. Das ist der USB-Anschluss. Dreht das Board so, das er oben rechts ist. So stört das USB-Kabel nicht beim Arbeiten mit dem Board. Auch ist das die allgemein verwendete Arbeitsposition. Wenn bezüglich eines Boards von links und rechts die Rede ist, bezieht sich das immer auf diese Ausrichtung.
Links neben dem USB-Anschluss fühlt man einen röhrenförmigen Aufbau, der Anschluss für ein Netzteil.
Die Leisten mit den Pins sind von links und rechts zugänglich.
Für mich sind die Stecklöcher zu klein, um sie mit dem Finger fühlen zu können, aber wenn ich einen Stecker einstecken möchte, wandere ich mit der Steckerspitze oben auf der Leiste entlang und finde die Löcher.
Die Pins haben alle einen festen Platz und eindeutige Bezeichnungen. Links sind die analogen Ein- und Ausgänge, rechts die Digitalen. Sie sind mit A oder D gefolgt von einer Zahl bezeichnet, also z.B. A0.
Pins, die mit Tilde gekennzeichnet sind, sind PWM-fähig (siehe Begriffsklärung).
Außerdem gibt es einen Pin für Stromzufuhr, der VIN heißt und mehrere Masse-Anschlüsse, die Ground, abgekürzt GND heißen. An VIN wird immer der Pluspol einer Stromquelle angeschlossen, an GND der Minuspol. Dann gibt es noch die Pins 5V und 3V für die Stromabnahme, also fünf Volt und 3,3 Volt. Es gibt noch einige weitere Pins, die aber für den Einstieg keine Rolle spielen.
Für Sehende sind die Bezeichnungen neben den Pins aufgedruckt. Ich nutze eine Excel-Tabelle, in die ich die Pins in zwei Spalten, entsprechend den Leisten eingetragen habe. Ich kann also nachgucken, an welcher Stelle sich ein Pin befindet und dann mit der Steckerspitze abzählen.
hier könnt ihr die Tabelle für den Uno R3 runterladen. Einige Zellen enthalten Kommentare, die Funktionen der Pins betreffend. Für den Anfang müsst ihr das nicht beachten.
Dateianhänge
(15.6 KiB) Noch nie heruntergeladen
- Robbie Sandberg
- Site Admin
- Beiträge: 165
- Registriert: 18.06.2019, 11:37
Das Arduino Breadboard
Ein Breadboard ist eine Steckplatine, die dazu dient, Bauteile miteinander zu verbinden. Es ist unerlässlich, wenn man nicht löten kann oder möchte. Z.B. kann man den Pluspol einer Batterie auf dem Steckbrett mit einem Schalter verbinden, der dann auf dem Hauptboard an VIN angeschlossen wird.
Auf der Oberfläche des Breadboards fühlt man ein Raster mit vielen kleinen löchern. Das sind die Steckkontakte. Als Orientierungshilfe kann man sich die Kontakte in Zeilen und spalten geordnet vorstellen. Jeweils fünf Kontakte bilden eine Zeile. Jede Zeile ist eine Schaltnode. Soll heißen, alles, was in einer Zeile steckt, ist verbunden wie gelötet.
Durch das Koordinatensystem kann man jeden Kontakt adressieren wie eine Zelle in Excel. A1 wäre z.B. links oben, B1 rechts daneben und B2 eine Zeile tiefer.
Wenn man mit anderen an einem Projekt arbeitet, kann man sich auf diese Weise gut über den Schaltplan verständigen. Auch mit Sehenden, denn bei vielen Breadboards ist das Koordinatensystem aufgedruckt.
Ich werde diese Methode in meinen Schaltplänen verwenden, die ich hier veröffentliche.
Das Tabellen-Layout mit den fünf Kontakten pro Zeile und mehreren Zeilen untereinander ist auf einem Breadboard immer zwei Mal vorhanden. Sie liegen parallel und sind durch eine fühlbare Rille getrennt. Man kann es sich wie ein aufgeschlagenes Buch vorstellen, mit einer Tabelle auf der linken Seite und einer weiteren Tabelle auf der rechten Seite.
Wenn man einmal mehr als fünf Kontakte für einen Knotenpunkt braucht, kann man benachbarte Zeilen mit einer sogenannten Steckbrücke verbinden und zu einer Node machen. Da die Steckbrücke zwei Kontakte benötigt, hat man dann acht.
Breadboards gibt es in verschiedenen Größen. Die kleinsten haben 17 Doppelzeilen. Größere Breadboards haben links und rechts entlang der Ränder sogenannte Power Rails. Das sind Schienen für die Spannungsversorgung. Die Rails haben zwei Spalten, eine für plus und eine für minus. Man kann also eine Batterie an ein Power Rail anschließen und dann auf der ganzen Länge des Boards die Schiene als Stromquelle für Bauteile nutzen.
Auf der Oberfläche des Breadboards fühlt man ein Raster mit vielen kleinen löchern. Das sind die Steckkontakte. Als Orientierungshilfe kann man sich die Kontakte in Zeilen und spalten geordnet vorstellen. Jeweils fünf Kontakte bilden eine Zeile. Jede Zeile ist eine Schaltnode. Soll heißen, alles, was in einer Zeile steckt, ist verbunden wie gelötet.
Durch das Koordinatensystem kann man jeden Kontakt adressieren wie eine Zelle in Excel. A1 wäre z.B. links oben, B1 rechts daneben und B2 eine Zeile tiefer.
Wenn man mit anderen an einem Projekt arbeitet, kann man sich auf diese Weise gut über den Schaltplan verständigen. Auch mit Sehenden, denn bei vielen Breadboards ist das Koordinatensystem aufgedruckt.
Ich werde diese Methode in meinen Schaltplänen verwenden, die ich hier veröffentliche.
Das Tabellen-Layout mit den fünf Kontakten pro Zeile und mehreren Zeilen untereinander ist auf einem Breadboard immer zwei Mal vorhanden. Sie liegen parallel und sind durch eine fühlbare Rille getrennt. Man kann es sich wie ein aufgeschlagenes Buch vorstellen, mit einer Tabelle auf der linken Seite und einer weiteren Tabelle auf der rechten Seite.
Wenn man einmal mehr als fünf Kontakte für einen Knotenpunkt braucht, kann man benachbarte Zeilen mit einer sogenannten Steckbrücke verbinden und zu einer Node machen. Da die Steckbrücke zwei Kontakte benötigt, hat man dann acht.
Breadboards gibt es in verschiedenen Größen. Die kleinsten haben 17 Doppelzeilen. Größere Breadboards haben links und rechts entlang der Ränder sogenannte Power Rails. Das sind Schienen für die Spannungsversorgung. Die Rails haben zwei Spalten, eine für plus und eine für minus. Man kann also eine Batterie an ein Power Rail anschließen und dann auf der ganzen Länge des Boards die Schiene als Stromquelle für Bauteile nutzen.
- Robbie Sandberg
- Site Admin
- Beiträge: 165
- Registriert: 18.06.2019, 11:37
Die Arduino Entwicklungsumgebung
Die Entwicklungsumgebung (IDE) ist das Programm, in dem man den Code schreibt, mit dem man ihn verifiziert und auf das Board hochlädt. IDE steht für integrated development environment.
Die IDE ist barrierearm und durchweg mit Tastenbefehlen bedienbar.
hier könnt ihr die Arduino IDE für Windows, Mac oder Linux runterladen.
Ich werde hier die Grundlagen schildern, die man braucht, um loszulegen.
Das wichtigste Bildschirmelement ist der Editor für den Code. Es ist ein mehrzeiliges Eingabefeld, das man mit der Schnellnavigationstaste e ansteuern und mit Leertaste aktivieren kann.
Die IDE hat ein klassisches Menü, das mit der AltTaste aufgerufen wird.
Im Dateimenü gibt es neben den erwartbaren Optionen Öffnen und Speichern zwei wichtige Untermenüs.
Als nächstes kann man den Code abwandeln. Wird im code z.B. eine Melodie für den Summer erzeugt, guckt man sich die Syntax an und versucht, die Melodie zu ändern. So tastet man sich an das Verständnis für die Programmiersprache heran.
In den Beispiel-Sketches sind über den Codeanweisungen immer Kommentarzeilen, die erklären, was beim nächsten Schritt passiert. Das soll den Zugang zur Programmiersprache erleichtern bzw. ihre Verständlichkeit erhöhen.
Wie gesagt, kann man Beispiele nutzen und damit herumprobieren, ohne programmieren zu können. Wenn man aber den Code verstehen und selbst gestalten möchte, sollte man sich einmal mit elementaren Codeelementen auseinandergesetzt haben, also Variablen, Konstanten, Schleifen, Wenn-Dann-Anweisungen etc.
Was den Zugang erleichtert, ist eine Vielzahl an Funktionen, die Arduino bereitstellt. Funktionen sind Codebausteine für oft vorkommende Anwendungsbereiche, die man einfach im Code aufrufen kann. Sie ersparen uns, eine komplette Programmiersprache verinnerlichen zu müssen.
Ich möchte das anhand der Excel-Funktion Heute verdeutlichen. Wenn ihr in eine Excel-Zelle eingebt „=HEUTE()“, zeigt die Zelle immer das Aktuelle Datum an. Dabei wird im Hintergrund mit Programmcode auf die Systemzeit zugegriffen und das Datum abgefragt, das dann in der Zelle angezeigt wird. Wie der Code dafür lautet und funktioniert, muss man nicht wissen. Es reicht, dass man sich der Funktion bedient. So ähnlich ist es mit Funktionen bei Arduino.
Funktionen sind in Bibliotheken sortiert, die immer einen bestimmten Anwendungsbereich abdecken. Z.B. gibt es die Bibliothek pitch für die Gestaltung von Tönen. Die Bibliothek enthält u.a. die Funktion NOTE, mit der man einen Ton angeben kann, z.B. C4, also die Note C in der vierten Oktave.
Wenn man die Bibliothek am Anfang des Codes einbindet, kann man sich ihrer Funktionen bedienen.
Möchte man nach Bibliotheken für einen bestimmten Bereich suchen, ruft man mit Ctlr-Shift-i die Option Bibliotheken verwalten auf. Dann kann man im Suchfilter einen Suchbegriff eingeben, etwa Sensor, Servo oder Sound. Darunter werden die Ergebnisse angezeigt, die man sofort installieren kann.
Um eine Bibliothek einzubinden, geht man im Menü Sketch in das Untermenü Bibliothek einbinden. Hier werden die installierten Bibliotheken angezeigt. Enter bindet die Bibliothek oben im code mit dem Include-Befehl ein.
Wenn man ein Board anschließt, muss man zunächst im Menü Werkzeuge im Untermenü Boards das betreffende Board wählen, also z.B. Arduino Uno.
Dann muss man ebenfalls im Menü Werkzeuge im Untermenü Port die Schnittstelle wählen, an die das Board angeschlossen ist. Diese ist in der Regel daran zu erkennen, dass nach ihrer Bezeichnung, z.B. Com6, der Name des Boards angegeben ist.
Warum man die Schnittstelle angeben muss, wenn die IDE sie doch von selbst erkennt? Ich nehme an, weil man theoretisch mehrere Boards gleichzeitig anschließen kann. Da muss die IDE natürlich wissen, auf welches Board der Code hochgeladen werden soll.
Um Code auf das Board hochzuladen, drückt man Ctrl-u. Jetzt wird in der untersten Bildschirmzeile der Status ausgegeben. Zunächst steht dort „Kompiliere Sketch“. Anschließend erscheint die Meldung „Hochladen“.
enthält der Code einen Fehler, erscheint hier der Schalter „Fehlermeldungen kopieren“. Drückt man Enter, findet man mehrere Zeilen darüber eine genaue Angabe, in welcher Code-Zeile der Fehler aufgetreten ist bzw. was den Fehler verursacht hat. Es muss nicht am Code liegen, sondern es kann auch sein, dass man vergessen hat, das Board oder die Schnittstelle auszuwählen.
Die Statuszeile aktualisiert sich für Screen Reader nicht automatisch. Um den Status in Echtzeit abzufragen, muss man wiederholt Ctrl-Ende drücken, um die Zeile neu zu fokussieren.
Leider liest der Screen Reader nicht die führenden Zeilennummern im Editor aus. Hat man nur 30 bis 50 Code-Zeilen, ist das nicht so wichtig. Wenn die IDE aber einen Fehler in Zeile 284 meldet, möchte man nicht von oben abzählen. Wenn man Wert auf Zeilennummern legt, empfiehlt sich der Editor Notepad++. Man muss dann in Notepad++ den Code edidtieren und für den Upload in den IDE Editor kopieren. Hier könnt ihr Notepad++ runterladen
Die IDE ist barrierearm und durchweg mit Tastenbefehlen bedienbar.
hier könnt ihr die Arduino IDE für Windows, Mac oder Linux runterladen.
Ich werde hier die Grundlagen schildern, die man braucht, um loszulegen.
Das wichtigste Bildschirmelement ist der Editor für den Code. Es ist ein mehrzeiliges Eingabefeld, das man mit der Schnellnavigationstaste e ansteuern und mit Leertaste aktivieren kann.
Die IDE hat ein klassisches Menü, das mit der AltTaste aufgerufen wird.
Im Dateimenü gibt es neben den erwartbaren Optionen Öffnen und Speichern zwei wichtige Untermenüs.
- Sketchbook: Sketch ist eine Datei, die Code enthält. Im Untermenü Sketchbook findet man alle bisher geladenen oder gespeicherten Sketches.
- Beispiele: Dieses Untermenü ist entscheidend für den Einstieg. Um erste Schritte zu machen, muss man kein stück programmieren können. Das Untermenü Beispiele hält eine Vielzahl an Sketches für alle möglichen Anwendungsbereiche bereit. Sie reichen vom simplen Ansteuern eines Summers, der einen Ton von sich gibt, bis zu komplexen Schaltungen mit Sensoren oder Servomotoren.
Als nächstes kann man den Code abwandeln. Wird im code z.B. eine Melodie für den Summer erzeugt, guckt man sich die Syntax an und versucht, die Melodie zu ändern. So tastet man sich an das Verständnis für die Programmiersprache heran.
In den Beispiel-Sketches sind über den Codeanweisungen immer Kommentarzeilen, die erklären, was beim nächsten Schritt passiert. Das soll den Zugang zur Programmiersprache erleichtern bzw. ihre Verständlichkeit erhöhen.
Wie gesagt, kann man Beispiele nutzen und damit herumprobieren, ohne programmieren zu können. Wenn man aber den Code verstehen und selbst gestalten möchte, sollte man sich einmal mit elementaren Codeelementen auseinandergesetzt haben, also Variablen, Konstanten, Schleifen, Wenn-Dann-Anweisungen etc.
Was den Zugang erleichtert, ist eine Vielzahl an Funktionen, die Arduino bereitstellt. Funktionen sind Codebausteine für oft vorkommende Anwendungsbereiche, die man einfach im Code aufrufen kann. Sie ersparen uns, eine komplette Programmiersprache verinnerlichen zu müssen.
Ich möchte das anhand der Excel-Funktion Heute verdeutlichen. Wenn ihr in eine Excel-Zelle eingebt „=HEUTE()“, zeigt die Zelle immer das Aktuelle Datum an. Dabei wird im Hintergrund mit Programmcode auf die Systemzeit zugegriffen und das Datum abgefragt, das dann in der Zelle angezeigt wird. Wie der Code dafür lautet und funktioniert, muss man nicht wissen. Es reicht, dass man sich der Funktion bedient. So ähnlich ist es mit Funktionen bei Arduino.
Funktionen sind in Bibliotheken sortiert, die immer einen bestimmten Anwendungsbereich abdecken. Z.B. gibt es die Bibliothek pitch für die Gestaltung von Tönen. Die Bibliothek enthält u.a. die Funktion NOTE, mit der man einen Ton angeben kann, z.B. C4, also die Note C in der vierten Oktave.
Wenn man die Bibliothek am Anfang des Codes einbindet, kann man sich ihrer Funktionen bedienen.
Möchte man nach Bibliotheken für einen bestimmten Bereich suchen, ruft man mit Ctlr-Shift-i die Option Bibliotheken verwalten auf. Dann kann man im Suchfilter einen Suchbegriff eingeben, etwa Sensor, Servo oder Sound. Darunter werden die Ergebnisse angezeigt, die man sofort installieren kann.
Um eine Bibliothek einzubinden, geht man im Menü Sketch in das Untermenü Bibliothek einbinden. Hier werden die installierten Bibliotheken angezeigt. Enter bindet die Bibliothek oben im code mit dem Include-Befehl ein.
Wenn man ein Board anschließt, muss man zunächst im Menü Werkzeuge im Untermenü Boards das betreffende Board wählen, also z.B. Arduino Uno.
Dann muss man ebenfalls im Menü Werkzeuge im Untermenü Port die Schnittstelle wählen, an die das Board angeschlossen ist. Diese ist in der Regel daran zu erkennen, dass nach ihrer Bezeichnung, z.B. Com6, der Name des Boards angegeben ist.
Warum man die Schnittstelle angeben muss, wenn die IDE sie doch von selbst erkennt? Ich nehme an, weil man theoretisch mehrere Boards gleichzeitig anschließen kann. Da muss die IDE natürlich wissen, auf welches Board der Code hochgeladen werden soll.
Um Code auf das Board hochzuladen, drückt man Ctrl-u. Jetzt wird in der untersten Bildschirmzeile der Status ausgegeben. Zunächst steht dort „Kompiliere Sketch“. Anschließend erscheint die Meldung „Hochladen“.
enthält der Code einen Fehler, erscheint hier der Schalter „Fehlermeldungen kopieren“. Drückt man Enter, findet man mehrere Zeilen darüber eine genaue Angabe, in welcher Code-Zeile der Fehler aufgetreten ist bzw. was den Fehler verursacht hat. Es muss nicht am Code liegen, sondern es kann auch sein, dass man vergessen hat, das Board oder die Schnittstelle auszuwählen.
Die Statuszeile aktualisiert sich für Screen Reader nicht automatisch. Um den Status in Echtzeit abzufragen, muss man wiederholt Ctrl-Ende drücken, um die Zeile neu zu fokussieren.
Leider liest der Screen Reader nicht die führenden Zeilennummern im Editor aus. Hat man nur 30 bis 50 Code-Zeilen, ist das nicht so wichtig. Wenn die IDE aber einen Fehler in Zeile 284 meldet, möchte man nicht von oben abzählen. Wenn man Wert auf Zeilennummern legt, empfiehlt sich der Editor Notepad++. Man muss dann in Notepad++ den Code edidtieren und für den Upload in den IDE Editor kopieren. Hier könnt ihr Notepad++ runterladen
- Robbie Sandberg
- Site Admin
- Beiträge: 165
- Registriert: 18.06.2019, 11:37
Arduino Begriffserklärung
In der Arduino-Welt kommen viele Begriffe vor, die man vielleicht noch nicht gehört hat. Damit ihr nicht jedes Mal recherchieren müsst, wenn so ein Begriff fällt, liste ich hier die gängigsten auf und erläutere sie.
- Jumper-Kabel: Dünne Kabel mit Steckern oder Buchsen an den Enden. Man nutzt sie, um Bauteile mit dem Board zu verbinden. Z.B. kann man eine Buchse auf das Beinchen eines Lautsprechers stecken und den Stecker am anderen Ende in einen Pin auf dem Board.
Jumper-Kabel gibt es in verschiedenen Farben, damit Sehende den Überblick behalten. Das kann uns egal sein, nur wenn man mit Sehenden zusammenarbeitet, kann das Wichtig sein. - Dupont-Stecker: Kleine Stecker bzw. Buchsen an den Enden der Jumper-Kabel.
Anzuschließende Bauteile wie Lautsprecher, Batterie-Clip oder Taster sollten Dupont-Stecker oder Beinchen für den Anschluss haben. Die Beinchen müssen lang genug sein, um in einer Dupont-Buchse zu halten.
Wenn ein Bauteil lose Kabel hat, muss man crimpen, das heißt den Stecker selbst anbringen. Dazu braucht man eine Abisolierzange, eine Crimp-Zange, ein Dupont-Crimp-Set, viel Geduld und eine hohe Frustschwelle.
Da die Beschaffenheit nicht immer aus den Produktbeschreibungen hervorgeht, sollte man sich die Abbildungen der Bauteile von einer sehenden Person beschreiben lassen. Ich empfehle auch, kundenrezensionen zu lesen. Manchmal wird beschrieben, wie und wofür ein Bauteil verwendet wurde. Daraus lässt sich eventuell die Eignung ableiten. - Breadboard: Eine Steckplatine (siehe den Artikel dazu)
- Pot oder Potentiometer: Ein Pot ist ein Drehregler für die Spannungszufuhr. Lautstärkeregler z.B. sind Pots. Je mehr Strom sie durchlassen, desto lauter wird der ton.
- Steckbrücke: U-förmig gebogene Drähte, mit denen Noden auf einem Breadboard verbunden werden. Man kann z.B. zwei Zeilen eines Breadboardss damit verbinden und hat dann nicht fünf, sondern acht Steckkontakte zur Verfügung.
Steckbrücken gibt es fertig gebogen als Set in verschiedenen Längen. - Sketch: Eine Datei mit dem Programmcode für ein Projekt (siehe den Artikel über die IDE)
- Pulsweitenmodulation (PWM): Mit PWM wird die Spannung an digitalen Pins reguliert.
Da es nur zwei digitale Zustände gibt, 1 und 0 bzw. an und aus, kann die Spannung nicht analog wie mit einem Potentiometer geregelt werden. Entweder es liegen fünf Volt an oder null Volt.
Um an digitalen Pins einen Effekt ähnlich einem Potentiometer zu erzeugen, wird die Stromzufuhr in variablen Abständen an und ausgeschaltet . Wenn z.B. 500 Mal pro Sekunde der Strom für eine Millisekunde ausgeschaltet wird, hat das beim Endgerät den Effekt der halben Spannung. Indem man die Abstände länger oder kürzer macht, verringert oder erhöht man die Spannung.
- Robbie Sandberg
- Site Admin
- Beiträge: 165
- Registriert: 18.06.2019, 11:37
Arduino Bibliotheken und Funktionen
Wie im Artikel über die IDE beschrieben, lässt sich die Arduino Umgebung durch Bibliotheken für bestimmte Zwecke erweitern.
Bibliotheken sind Sammlungen von Funktionen, also Codebausteinen, die Bauteile steuern oder Daten auswerten.
Während die Bibliothek edu_Intro viele verschiedene Funktionen für Einstiegsprojekte beinhaltet, sind die meisten Bibliotheken für ganz bestimmte Zwecke ausgelegt. So gibt es Bibliotheken zur Steuerung von Feuchtigkeitssensoren, Beschleunigungssensoren, Servomotoren, Bluetooth-Modulen etc.
Unter folgendem Link könnt ihr die Arduino Bibliotheken einsehen.
Hier gibt es unter der Überschrift Libraries eine Linkliste mit Kategorien. In den Kategorien findet man dann Bibliotheken für spezielle Zwecke.
Wenn ihr z.B. einen Servomotor betreiben wollt, geht ihr auf der Startseite zuerst auf die Kategorie Device Control und dann auf der Unterseite auf die Bibliothek Servo.
Wie gesagt, kann man auch in der IDE mit Ctrl-Shift-i gezielt nach Servo suchen, aber wenn man nicht genau weiß, welche Bibliothek man braucht, hilft das Stöbern.
Auf der Detailseite der jeweiligen Bibliothek gibt es oft Anwendungsbeispiele mit Code und eine Liste der Enthaltenen Funktionen. Klickt man auf eine Funktion, wird ihr Zweck und die Syntax erklärt.
Es wird also eigentlich alles mundgerecht serviert. Nur die Speisekarte ist ziemlich umfangreich und man braucht ein wenig Zeit, sich darin zu orientieren.
Bibliotheken sind Sammlungen von Funktionen, also Codebausteinen, die Bauteile steuern oder Daten auswerten.
Während die Bibliothek edu_Intro viele verschiedene Funktionen für Einstiegsprojekte beinhaltet, sind die meisten Bibliotheken für ganz bestimmte Zwecke ausgelegt. So gibt es Bibliotheken zur Steuerung von Feuchtigkeitssensoren, Beschleunigungssensoren, Servomotoren, Bluetooth-Modulen etc.
Unter folgendem Link könnt ihr die Arduino Bibliotheken einsehen.
Hier gibt es unter der Überschrift Libraries eine Linkliste mit Kategorien. In den Kategorien findet man dann Bibliotheken für spezielle Zwecke.
Wenn ihr z.B. einen Servomotor betreiben wollt, geht ihr auf der Startseite zuerst auf die Kategorie Device Control und dann auf der Unterseite auf die Bibliothek Servo.
Wie gesagt, kann man auch in der IDE mit Ctrl-Shift-i gezielt nach Servo suchen, aber wenn man nicht genau weiß, welche Bibliothek man braucht, hilft das Stöbern.
Auf der Detailseite der jeweiligen Bibliothek gibt es oft Anwendungsbeispiele mit Code und eine Liste der Enthaltenen Funktionen. Klickt man auf eine Funktion, wird ihr Zweck und die Syntax erklärt.
Es wird also eigentlich alles mundgerecht serviert. Nur die Speisekarte ist ziemlich umfangreich und man braucht ein wenig Zeit, sich darin zu orientieren.
- Robbie Sandberg
- Site Admin
- Beiträge: 165
- Registriert: 18.06.2019, 11:37
Arduino im inklusiven Unterricht
Ich möchte hier einige Punkte zusammenfassen, die man bei Projekten mit blinden und sehenden Schüler*innen berücksichtigen sollte.
Der Einleitende Satz sagt es schon: Das Ziel ist ein Projekt, zu dem beide Parteien‘ gleichwertig beitragen können. Die Sehenden eine Leuchtschrift bauen zu lassen, während der oder die Blinde an einem Tongenerator arbeitet, ist nicht inklusiv.
Der Inklusionsgedanke fängt also schon bei der Wahl des Projekts an.
In vielen Schulprojekten, die man im Netz findet, werden Messwerte oder sonstige Daten durch farbige LEDs angezeigt oder auf einem Display ausgegeben. Das geht natürlich auch mit Tönen oder Sprache. Dabei schließen die akustische und die optische Lösung einander nicht aus. Ebenso, wie sich ein Computerbildschirm und ein Screen Reader nicht gegenseitig ausschließen. Beide Lösungen können zu einem, eben inklusiven, Gesamtergebnis führen.
Ich halte Projekte für geeignet, bei denen sich etwas bewegt oder etwas Fühlbares gemessen wird, etwa Druck, Neigung oder Wind. So können Blinde die Wirkung ihrer Arbeit kontrollieren, indem sie den gemessenen Zustand ändern und die Reaktion des Gerätes prüfen.
Die Bauteile sollten vorsortiert werden, damit blinde Schüler*innen unabhängig darauf zugreifen können. Ich empfehle ein Aufbewahrungssystem mit 3D gedruckten Profilschriftetiketten. So haben auch sehende Schüler*innen den Überblick und müssen nicht suchen.
Das Board und die Bauteile sollten Blinden vorab erklärt bzw. in die Hand gegeben werden, damit sie sie später ertasten können.
Damit Blinde sich auf dem Board orientieren können, sollte die Anordnung der Pins in Textform oder einer Tabelle festgehalten werden. Wenn man z.B. ein Jumper-Kabel an GND auf der rechten Seite anschließen möchte, guckt man in der Tabelle nach und stellt fest, es ist der vierte Pin von oben. Dann zählt man ab.
Eine Excel-Tabelle für den Uno R3 habe ich im Artikel über dieses Board verlinkt.
Menschen mit sehr sensiblen Fingerspitzen können die Pins, also die Löcher für die Steckkontakte, eventuell erfühlen.
Alternativ können die Löcher abgezählt werden, indem man mit der Steckerspitze auf der Leiste entlangwandert.
Das Abzählen der Pins mit der Steckerspitze muss gezeigt und ggf. geübt werden.
Für die Orientierung auf einem Breadboard eignet sich das im betreffenden Artikel beschriebene Koordinatensystem.
Bei den meisten Breadboards sind die Koordinaten bereits aufgedruckt. Blinde Schüler*innen müssen wieder mit der Steckerspitze abzählen.
Je größer allerdings das Breadboard, desto anstrengender wird der Umgang mit den Koordinaten. Wenn man wiederholt 20-30 Zeilen abzählen muss, verzählt man sich schon mal. Zur Erleichterung kann man das Board mit Steckbrücken in Sektoren einteilen. Die Steckbrücken sollten die Breite des Boards oder einer Zeile überspannen und dienen nur zur taktilen und visuellen Orientierung.
Wie ich im Artikel zur Begriffserklärung erwähnt habe, sollten Bauteile beschafft werden, die Anschlussfertig sind, also über DupontStecker oder genügend lange Beinchen verfügen. Wer erst crimpen muss, um mit Arduino loslegen zu können, wird schnell die Lust verlieren. Im Übrigen geht dadurch viel Projektzeit verloren.
Der Einleitende Satz sagt es schon: Das Ziel ist ein Projekt, zu dem beide Parteien‘ gleichwertig beitragen können. Die Sehenden eine Leuchtschrift bauen zu lassen, während der oder die Blinde an einem Tongenerator arbeitet, ist nicht inklusiv.
Der Inklusionsgedanke fängt also schon bei der Wahl des Projekts an.
In vielen Schulprojekten, die man im Netz findet, werden Messwerte oder sonstige Daten durch farbige LEDs angezeigt oder auf einem Display ausgegeben. Das geht natürlich auch mit Tönen oder Sprache. Dabei schließen die akustische und die optische Lösung einander nicht aus. Ebenso, wie sich ein Computerbildschirm und ein Screen Reader nicht gegenseitig ausschließen. Beide Lösungen können zu einem, eben inklusiven, Gesamtergebnis führen.
Ich halte Projekte für geeignet, bei denen sich etwas bewegt oder etwas Fühlbares gemessen wird, etwa Druck, Neigung oder Wind. So können Blinde die Wirkung ihrer Arbeit kontrollieren, indem sie den gemessenen Zustand ändern und die Reaktion des Gerätes prüfen.
Die Bauteile sollten vorsortiert werden, damit blinde Schüler*innen unabhängig darauf zugreifen können. Ich empfehle ein Aufbewahrungssystem mit 3D gedruckten Profilschriftetiketten. So haben auch sehende Schüler*innen den Überblick und müssen nicht suchen.
Das Board und die Bauteile sollten Blinden vorab erklärt bzw. in die Hand gegeben werden, damit sie sie später ertasten können.
Damit Blinde sich auf dem Board orientieren können, sollte die Anordnung der Pins in Textform oder einer Tabelle festgehalten werden. Wenn man z.B. ein Jumper-Kabel an GND auf der rechten Seite anschließen möchte, guckt man in der Tabelle nach und stellt fest, es ist der vierte Pin von oben. Dann zählt man ab.
Eine Excel-Tabelle für den Uno R3 habe ich im Artikel über dieses Board verlinkt.
Menschen mit sehr sensiblen Fingerspitzen können die Pins, also die Löcher für die Steckkontakte, eventuell erfühlen.
Alternativ können die Löcher abgezählt werden, indem man mit der Steckerspitze auf der Leiste entlangwandert.
Das Abzählen der Pins mit der Steckerspitze muss gezeigt und ggf. geübt werden.
Für die Orientierung auf einem Breadboard eignet sich das im betreffenden Artikel beschriebene Koordinatensystem.
Bei den meisten Breadboards sind die Koordinaten bereits aufgedruckt. Blinde Schüler*innen müssen wieder mit der Steckerspitze abzählen.
Je größer allerdings das Breadboard, desto anstrengender wird der Umgang mit den Koordinaten. Wenn man wiederholt 20-30 Zeilen abzählen muss, verzählt man sich schon mal. Zur Erleichterung kann man das Board mit Steckbrücken in Sektoren einteilen. Die Steckbrücken sollten die Breite des Boards oder einer Zeile überspannen und dienen nur zur taktilen und visuellen Orientierung.
Wie ich im Artikel zur Begriffserklärung erwähnt habe, sollten Bauteile beschafft werden, die Anschlussfertig sind, also über DupontStecker oder genügend lange Beinchen verfügen. Wer erst crimpen muss, um mit Arduino loslegen zu können, wird schnell die Lust verlieren. Im Übrigen geht dadurch viel Projektzeit verloren.
- Robbie Sandberg
- Site Admin
- Beiträge: 165
- Registriert: 18.06.2019, 11:37
Das erste Arduino-Experiment
Für den Einstieg bestellen sehende Menschen meist ein Starter-Kit. Das enthält ein Arduino Board, ein USB-Kabel, Jumper-Kabel und viele verschiedene Bauteile, wie Sensoren, Transistoren, Kondensatoren, Widerstände etc..
Außerdem gibt es immer ein hübsches bebildertes Begleitheft mit Anleitungen für den Einstieg.
Wenn man ohne sehende Hilfe klarkommen möchte oder muss, ist so ein Starter-Kit für Blinde eigentlich völlig zwecklos. Man ist mit einer Menge Bauteile konfrontiert, die man noch nicht taktil auseinanderhalten kann.
Meine Methode ist daher, jedes Bauteil, das ich für mein jeweils aktuelles Projekt brauche, einzeln zu bestellen. So weiß ich immer, was ich in der Hand halte und kann mir merken, wie es sich anfühlt. Das ist etwas teurer als ein Starter-Kit, aber es macht mich unabhängig.
Ich empfehle also, für das erste Experiment einen Uno R3 inklusive USB-Kabel, einen Piezo-Summer und eine Matte Jumper-Kabel zu bestellen.
Das Einfachste, was man mit Arduino machen kann, ist ein Bauteil an das Board anzuschließen und einen Beispiel-Sketch auf das Board hochzuladen, der das Bauteil irgendetwas machen lässt. Dann hat man schon einmal die grundlegenden Arbeitsschritte durchlaufen und hat ein erstes Erfolgserlebnis.
Sehende machen das mit der auf dem Board verbauten LED, müssen also nicht mal etwas anschließen. Wir machen das mit einem Piezo-Summer.
Ob Starter-Kit oder nicht, ein Piezo-Summer ist taktil gut zu erkennen. Er ist rund und etwa so groß wie eine Fingerspitze. An der Unterseite fühlt man zwei Beinchen. Das sind die Anschlüsse für die Jumper-Kabel.
Achtet darauf, dass ihr ein Set mit Buchse-auf-Stecker-Kabeln bestellt, in manchen Fällen ist auch von weiblich-auf-männlich die Rede. Ich erwähne das nur, weil es manchmal so in der Produktbeschreibung steht. Da Kabel aber keinen Sex haben, sollte man lieber von Buchsen und Steckern sprechen.
Wenn man keine Kabel mit Buchsen hat, kann man alternativ die Schaltung auch mit Hilfe eines Breadboards stecken. Das ist aber etwas schwieriger. Hier zunächst die Vorgehensweise mit Buchsen und Steckern.
Jumper-Kabel kommen meist als Matten, von denen man einzelne oder auch mehrere Kabel abziehen kann, so ähnlich, wie man bei Lakritzschnecken die beiden Stränge auseinanderziehen kann.
Findet die zwei äußersten Kabel mit Buchsen und zieht sie von der Matte ab. Wenn ihr sie zusammenlasst, habt ihr ein Kabelpaar für den Summer, statt zweier Einzelkabel. Das macht die Sache übersichtlicher, besonders wenn man später mit vielen Kabeln arbeitet.
Steckt die zwei Buchsen auf die Beinchen des Summers.
Steckt ein Kabel an D8 und eins an GND.
Schließt das Board an den Computer an (ein USB-Kabel liegt dem Starter-Kit bei).
Wenn das Board neu ist, tut sich nach dem Anschließen nichts, weil noch kein Code darauf ist.
Startet die IDE, (den Link zur Installationsdatei gibt’s im betreffenden Artikel).
Jetzt müsst ihr im Menü Werkzeuge zuerst das Board und dann die Schnittstelle auswählen. Näheres ebenfalls im o.g. Artikel.
Dann geht im Dateimenü in das Untermenü Beispiele und dort ins Untermenü 02.Digital.
Wählt hier den Sketch ToneMelody aus.
Wenn der Sketch geladen ist, könnt ihr mit der Schnellnavigationstaste e zum Editor springen und mit Enter den Formularmodus des Screen Readers aktivieren. Versucht, anhand der Kommentarzeilen im Code zu verstehen, was passiert. Wenn ihr rauskriegt, wie die Melodie zusammengesetzt wird, könnt ihr beim nächsten Mal eine eigene Melodie codieren.
Drückt Escape, um den Editor zu verlassen und dann Ctrl-u, um den Code aufs Board hochzuladen.
An der unteren Bildschirmzeile (Ctlr-Ende) könnt ihr die Statusmeldungen verfolgen.
Sollte es keine Reaktion geben, zieht das USB-Kabel ab und verbindet es erneut.
Alternativer Anschluss des Summers über das Breadboard:
Wenn ihr keine Kabel mit Buchsen habt, steckt den Summer auf das Breadboard, so dass jedes Beinchen in einer eigenen Zeile steckt. Zum Layout des Breadboards lest zunächst den betreffenden Artikel.
Dann steckt je ein Jumperkabel in die Zeilen, in denen die Beinchen stecken und steckt die anderen Enden der Kabel an D8 und GND an.
Achtung! Diese Methode funktioniert nur, wenn die Beinchen des Summers lang genug sind, um im Breadboard Halt zu finden.
Außerdem gibt es immer ein hübsches bebildertes Begleitheft mit Anleitungen für den Einstieg.
Wenn man ohne sehende Hilfe klarkommen möchte oder muss, ist so ein Starter-Kit für Blinde eigentlich völlig zwecklos. Man ist mit einer Menge Bauteile konfrontiert, die man noch nicht taktil auseinanderhalten kann.
Meine Methode ist daher, jedes Bauteil, das ich für mein jeweils aktuelles Projekt brauche, einzeln zu bestellen. So weiß ich immer, was ich in der Hand halte und kann mir merken, wie es sich anfühlt. Das ist etwas teurer als ein Starter-Kit, aber es macht mich unabhängig.
Ich empfehle also, für das erste Experiment einen Uno R3 inklusive USB-Kabel, einen Piezo-Summer und eine Matte Jumper-Kabel zu bestellen.
Das Einfachste, was man mit Arduino machen kann, ist ein Bauteil an das Board anzuschließen und einen Beispiel-Sketch auf das Board hochzuladen, der das Bauteil irgendetwas machen lässt. Dann hat man schon einmal die grundlegenden Arbeitsschritte durchlaufen und hat ein erstes Erfolgserlebnis.
Sehende machen das mit der auf dem Board verbauten LED, müssen also nicht mal etwas anschließen. Wir machen das mit einem Piezo-Summer.
Ob Starter-Kit oder nicht, ein Piezo-Summer ist taktil gut zu erkennen. Er ist rund und etwa so groß wie eine Fingerspitze. An der Unterseite fühlt man zwei Beinchen. Das sind die Anschlüsse für die Jumper-Kabel.
Achtet darauf, dass ihr ein Set mit Buchse-auf-Stecker-Kabeln bestellt, in manchen Fällen ist auch von weiblich-auf-männlich die Rede. Ich erwähne das nur, weil es manchmal so in der Produktbeschreibung steht. Da Kabel aber keinen Sex haben, sollte man lieber von Buchsen und Steckern sprechen.
Wenn man keine Kabel mit Buchsen hat, kann man alternativ die Schaltung auch mit Hilfe eines Breadboards stecken. Das ist aber etwas schwieriger. Hier zunächst die Vorgehensweise mit Buchsen und Steckern.
Jumper-Kabel kommen meist als Matten, von denen man einzelne oder auch mehrere Kabel abziehen kann, so ähnlich, wie man bei Lakritzschnecken die beiden Stränge auseinanderziehen kann.
Findet die zwei äußersten Kabel mit Buchsen und zieht sie von der Matte ab. Wenn ihr sie zusammenlasst, habt ihr ein Kabelpaar für den Summer, statt zweier Einzelkabel. Das macht die Sache übersichtlicher, besonders wenn man später mit vielen Kabeln arbeitet.
Steckt die zwei Buchsen auf die Beinchen des Summers.
Steckt ein Kabel an D8 und eins an GND.
Schließt das Board an den Computer an (ein USB-Kabel liegt dem Starter-Kit bei).
Wenn das Board neu ist, tut sich nach dem Anschließen nichts, weil noch kein Code darauf ist.
Startet die IDE, (den Link zur Installationsdatei gibt’s im betreffenden Artikel).
Jetzt müsst ihr im Menü Werkzeuge zuerst das Board und dann die Schnittstelle auswählen. Näheres ebenfalls im o.g. Artikel.
Dann geht im Dateimenü in das Untermenü Beispiele und dort ins Untermenü 02.Digital.
Wählt hier den Sketch ToneMelody aus.
Wenn der Sketch geladen ist, könnt ihr mit der Schnellnavigationstaste e zum Editor springen und mit Enter den Formularmodus des Screen Readers aktivieren. Versucht, anhand der Kommentarzeilen im Code zu verstehen, was passiert. Wenn ihr rauskriegt, wie die Melodie zusammengesetzt wird, könnt ihr beim nächsten Mal eine eigene Melodie codieren.
Drückt Escape, um den Editor zu verlassen und dann Ctrl-u, um den Code aufs Board hochzuladen.
An der unteren Bildschirmzeile (Ctlr-Ende) könnt ihr die Statusmeldungen verfolgen.
Sollte es keine Reaktion geben, zieht das USB-Kabel ab und verbindet es erneut.
Alternativer Anschluss des Summers über das Breadboard:
Wenn ihr keine Kabel mit Buchsen habt, steckt den Summer auf das Breadboard, so dass jedes Beinchen in einer eigenen Zeile steckt. Zum Layout des Breadboards lest zunächst den betreffenden Artikel.
Dann steckt je ein Jumperkabel in die Zeilen, in denen die Beinchen stecken und steckt die anderen Enden der Kabel an D8 und GND an.
Achtung! Diese Methode funktioniert nur, wenn die Beinchen des Summers lang genug sind, um im Breadboard Halt zu finden.
- Robbie Sandberg
- Site Admin
- Beiträge: 165
- Registriert: 18.06.2019, 11:37
Mit Arduino einen Lichtmelder bauen
Ein Lichtmelder wandelt Helligkeit in Töne um. Je mehr Licht, desto höher der Ton.
Ihr kennt das als Hilfsmittel, mit dem man prüfen kann, ob in einem Raum Licht brennt, ob es draußen hell ist oder ob eine LED an einem Gerät blinkt.
Einen Lichtmelder zu bauen, eignet sich besonders gut für den schulischen Einstieg, weil das Resultat einen praktischen Nutzen hat. Man kann es mit nachhause nehmen und verwenden. Aber auch für den privaten Einstieg ist das ein geeignetes Projekt.
Natürlich bekommt man einen Lichtmelder für wenig Geld im Hilfsmittelhandel, aber wenn man ihn selbst baut, kann man bestimmen, wie er klingt, welchen Frequenzbereich er abdeckt und wie er aussieht. Man kann sich ein originelles Gehäuse ausdenken und ihn verschenken. Ich habe meinen z.B. in eine kleine Pringles-Dose eingebaut.
Funktionsweise:
Das entscheidende Bauteil ist ein lichtempfindlicher Widerstand, Englisch Light Dependant Resistor (LDR). Je mehr Licht auf ihn fällt, desto geringer der Widerstand. Der LDR wird an 5V angeschlossen, erhält also durchweg fünf Volt. Das andere Ende wird an A0 angeschlossen. Wie viel Strom dort ankommt, hängt von der Lichteinstrahlung ab.
Was bei A0 ankommt wird gemessen und in einen Ton umgewandelt, der an D10 ausgegeben wird.
Das geht mit der Funktion map. Die Funktion siedelt den gemessenen Wert zwischen 0 und 1023 an, der Spanne vom niedrigstmöglichen zum höchstmöglichen Wert. Dieser Abstand, 0 zu 1023, wird dann einem Frequenzbereich zugeordnet. Dieser ist frei einstellbar. Dann wird der Messwert in der ihm entsprechenden Frequenz ausgegeben.
In meinem Sketch geht der Frequenzbereich von 50 bis 1300 Hz. 50 Hz bedeutet also, dass kein Licht auf den LDR fällt.
Wenn jemand tiefe Frequenzen schlecht hören kann, dann wählt man einfach eine höhere Startfrequenz. Das Gleiche gilt natürlich für die Obere Grenze. Probiert aus, was gut klingt und was ihr gut hören könnt.
Anmerkung: Der LDR reagiert nur auf Licht, das direkt auf ihn fällt. Befindet sich zum Beispiel der eigene Körper zwischen dem Lichtmelder und einer Lichtquelle, wird nur die tiefste Frequenz wiedergegeben. Um festzustellen, ob es wirklich kein Licht gibt oder ob es verdeckt ist, kann man sich drehen oder den Lichtmelder schwenken.
Materialliste:
Der Schaltplan:
Auf dem Breadboard stecken der LDR, ein Jumper-Kabel und der 10-kO-Widerstand in Zeile 1.
In Zeile 3 stecken der 10-kO-Widerstand und das zweite Jumper-Kabel.
In Zeile 5 stecken die Batterie und der Taster.
Ich habe jeweils eine Zeile freigelassen, damit es nicht so fummelig ist und um auszuschließen, dass Drähte sich berühren. Man kann natürlich andere Abstände wählen.
Auf der rechten Seite wird der Lautsprecher an D10 und an GND angeschlossen.
Jetzt wird der Sketch, den ich hier zum Download bereitstelle, in die IDE geladen. Dazu wird der Ordner Lichtmelder_Ton mit der Datei Lichtmelder_Ton.ino in den Arduino-Ordner in den eigenen Dokumenten verschoben. Jetzt findet man den Sketch im Dateimenü unter Sketchbook.
Ihr kennt das als Hilfsmittel, mit dem man prüfen kann, ob in einem Raum Licht brennt, ob es draußen hell ist oder ob eine LED an einem Gerät blinkt.
Einen Lichtmelder zu bauen, eignet sich besonders gut für den schulischen Einstieg, weil das Resultat einen praktischen Nutzen hat. Man kann es mit nachhause nehmen und verwenden. Aber auch für den privaten Einstieg ist das ein geeignetes Projekt.
Natürlich bekommt man einen Lichtmelder für wenig Geld im Hilfsmittelhandel, aber wenn man ihn selbst baut, kann man bestimmen, wie er klingt, welchen Frequenzbereich er abdeckt und wie er aussieht. Man kann sich ein originelles Gehäuse ausdenken und ihn verschenken. Ich habe meinen z.B. in eine kleine Pringles-Dose eingebaut.
Funktionsweise:
Das entscheidende Bauteil ist ein lichtempfindlicher Widerstand, Englisch Light Dependant Resistor (LDR). Je mehr Licht auf ihn fällt, desto geringer der Widerstand. Der LDR wird an 5V angeschlossen, erhält also durchweg fünf Volt. Das andere Ende wird an A0 angeschlossen. Wie viel Strom dort ankommt, hängt von der Lichteinstrahlung ab.
Was bei A0 ankommt wird gemessen und in einen Ton umgewandelt, der an D10 ausgegeben wird.
Das geht mit der Funktion map. Die Funktion siedelt den gemessenen Wert zwischen 0 und 1023 an, der Spanne vom niedrigstmöglichen zum höchstmöglichen Wert. Dieser Abstand, 0 zu 1023, wird dann einem Frequenzbereich zugeordnet. Dieser ist frei einstellbar. Dann wird der Messwert in der ihm entsprechenden Frequenz ausgegeben.
In meinem Sketch geht der Frequenzbereich von 50 bis 1300 Hz. 50 Hz bedeutet also, dass kein Licht auf den LDR fällt.
Wenn jemand tiefe Frequenzen schlecht hören kann, dann wählt man einfach eine höhere Startfrequenz. Das Gleiche gilt natürlich für die Obere Grenze. Probiert aus, was gut klingt und was ihr gut hören könnt.
Anmerkung: Der LDR reagiert nur auf Licht, das direkt auf ihn fällt. Befindet sich zum Beispiel der eigene Körper zwischen dem Lichtmelder und einer Lichtquelle, wird nur die tiefste Frequenz wiedergegeben. Um festzustellen, ob es wirklich kein Licht gibt oder ob es verdeckt ist, kann man sich drehen oder den Lichtmelder schwenken.
Materialliste:
- 1 Arduino Uno R3
- 1 kleines Breadboard
- 1 kleiner Lautsprecher
Lautsprecher für Kleingeräte gibt es im Handel. Ich empfehle ausdrücklich, keinen Piezo-Lautsprecher zu verwenden. Piezo-Lautsprecher erzeugen Obertöne, weswegen die tatsächliche Frequenz des Signals schwer einzuschätzen ist. - 1 Lichtwiderstand (LDR)
- 1 Widerstand 10 kO
- 1 Batterie 9V
- 1 Bateriefach oder -Clip
- 2 Jumper-Kabel Stecker-zu-Stecker
- 1 Taster
Der Schaltplan:
- Die Batterie wird mit dem Pluspol über einen Taster an VIN und mit dem Minuspol an GND angeschlossen.
Der Pluspol ist der kleinere der beiden Anschlüsse bei einer 9-Volt-Batterie. Verwendet man einen T-Clip, also einen wo das Kabel mittig austritt, lässt sich ertasten, welcher Kabelstrang zu welchem Pohl gehört. - Von der Batterie geht der Pluspol auf das Breadboard zu A5.
- Von B5 geht ein Taster auf das Hauptboard zu VIN.
- Der Minuspol der Batterie geht zu GND neben VIN.
- Der Lichtwiderstand (LDR) geht von V5 zum Breadboard auf A1.
- Ein Jumper-Kabel verbindet den LDR mit Analog-Pin 0, es geht also von B1 auf dem Breadboard zu A0 auf dem Hauptboard.
- Der 10-kO-Widerstand wird ebenfalls an den LDR angeschlossen, um eine Spannungsteilung zu erzeugen. Er geht also auf dem Breadboard von C1 zu C3.
- Von hier geht ein Jumper-Kabel an den Masseanschluss. Es geht also von D3 auf dem Breadboard zu GND auf dem Hauptboard.
Auf dem Breadboard stecken der LDR, ein Jumper-Kabel und der 10-kO-Widerstand in Zeile 1.
In Zeile 3 stecken der 10-kO-Widerstand und das zweite Jumper-Kabel.
In Zeile 5 stecken die Batterie und der Taster.
Ich habe jeweils eine Zeile freigelassen, damit es nicht so fummelig ist und um auszuschließen, dass Drähte sich berühren. Man kann natürlich andere Abstände wählen.
Auf der rechten Seite wird der Lautsprecher an D10 und an GND angeschlossen.
Jetzt wird der Sketch, den ich hier zum Download bereitstelle, in die IDE geladen. Dazu wird der Ordner Lichtmelder_Ton mit der Datei Lichtmelder_Ton.ino in den Arduino-Ordner in den eigenen Dokumenten verschoben. Jetzt findet man den Sketch im Dateimenü unter Sketchbook.
- Robbie Sandberg
- Site Admin
- Beiträge: 165
- Registriert: 18.06.2019, 11:37
Mit Arduino Audio wiedergeben
Um Audiodateien wiederzugeben, braucht man ein Speichermedium. Der Speicher auf dem Arduino Board ist viel zu klein für Audio.
Eine Möglichkeit ist, einen SD-Kartenleser an das Board anzuschließen. Da dieser aber keine Audiofuntionalität hat, müsste man die Verarbeitung des Materials im Code über das Boad regeln.
Statt dessen nutze ich ein Bauteil, dass zum Abspielen vom Audiodateien konzipiert ist.
Der DFPlayerMini MP3 ist ein Modul mit 16 Pins und einem Einschub für eine Mikro-SD-Karte. Es erinnert an einen Käfer mit 8 Beinchen an jeder Seite.
An das Modul selbst wird nichts angeschlossen. Statt dessen steckt man es auf ein Breadboard. Im Artikel über Breadboards habe ich erklärt, dass alle Kontakte in einer Zeile zusammengeschaltet sind. Wenn das Modul auf dem Breadboard steckt, steckt jeder Pin in einer eigenen Zeile. Was in diese Zeile gesteckt wird, ist an den betreffenden Pin angeschlossen.
Das modul sollte so aufgesteckt werden, dass die ersten zwei Pins an der kurzen Seite mit dem Kartenschacht, sozusagen die Vorderbeinchen des Käfers, in der ersten Zeile des Breadboards stecken. So lassen sich die den Pins zugehörigen Löcher verlässlich abzählen.
Der DFPlayer Mini ist so ausgelegt, dass er auch ohne Arduino Board betrieben werden kann. Er hat Pins zum Steuern der Wiedergabe, also vor, zurück, lauter, leiser. Man könnte ihn nur mit einer Stromquelle, einem Lautsprecher und zwei Tastern betreiben. Wenn man aber bestimmen will, wann welche Datei abgespielt wird, braucht man zusätzlichen Code und der kommt vom Arduino Board.
Es gibt mehrere Bibliotheken für den DFPlayerMini. Für mich hat sich die Bibliothek DFRobotDFPlayerMini bewehrt.
Für die Kommunikation zwischen Board und Player wird der RX-Pin des Players an den TX-Pin des Boards - und der TX-Pin des Players an den RX-Pin des Boards angeschlossen.
Zwischen TX auf dem Board und RX beim Player sollte ein 1 K Widerstand eingebaut werden, um den RX-Pin nicht zu überlasten.
Da der Lautsprecher direkt an den Player angeschlossen wird, lässt sich die Lautstärke nicht über das Board kontrollieren. Man hat aber mit der Volume-Methode die Möglichkeit, die Lautstärke im Code einzustellen.
Eine weitere, fortgeschrittenere Möglichkeit ist, einen Pre-Amp mit Klinkenbuchse und Lautstärkeregler an die DAC-Pins anzuschließen.
Pin-Belegung des DFPlayerMini MP3:
Die Beschreibung der Lage der Pins und ihrer Funktionen geht davon aus, dass das Modul mit den Pins nach unten und dem Karteneinschub zum eigenen körper hin ausgerichtet ist, wie ein Käfer, der auf euch zugekrabbelt kommt. In dieser Position ist Pin 1 hinten links. Dann wird an der linken Seite bis 8 gezählt und rechts vorne geht es mit 9 weiter, 16 ist dann hinten rechts.
1. VCC - Stromzufuhr
2. RX - Serieller Input
3. TX - Serieller Output
4. DAC - Rechter Output-Kanal (Digital-Analog-Wandler
5. DAC - Linker Output-Kanal (Digital-Analog-Wandler
6. SPK2 - Direkter Lautsprecheranschluss
7. GND
8. SPK1 - Direkter Lautsprecheranschluss
9. IO1 - Trigger port 1 kurzer Druck = voriger Titel, langer Druck = leiser
10. GND
11. IO2 - Trigger port 2 kurzer Druck = nächster Titel, langer Druck = lauter
12. ADKEY1 - AD Port 1 Spiele ersten Titel
13. ADKEY2 - AD Port 2 Spiele fünften Titel
14. USB+ - USB+ DP
15. USB - USB-DM
16. BUSY - Abspielstatus, low = spielt, high = spielt nicht
Eine Möglichkeit ist, einen SD-Kartenleser an das Board anzuschließen. Da dieser aber keine Audiofuntionalität hat, müsste man die Verarbeitung des Materials im Code über das Boad regeln.
Statt dessen nutze ich ein Bauteil, dass zum Abspielen vom Audiodateien konzipiert ist.
Der DFPlayerMini MP3 ist ein Modul mit 16 Pins und einem Einschub für eine Mikro-SD-Karte. Es erinnert an einen Käfer mit 8 Beinchen an jeder Seite.
An das Modul selbst wird nichts angeschlossen. Statt dessen steckt man es auf ein Breadboard. Im Artikel über Breadboards habe ich erklärt, dass alle Kontakte in einer Zeile zusammengeschaltet sind. Wenn das Modul auf dem Breadboard steckt, steckt jeder Pin in einer eigenen Zeile. Was in diese Zeile gesteckt wird, ist an den betreffenden Pin angeschlossen.
Das modul sollte so aufgesteckt werden, dass die ersten zwei Pins an der kurzen Seite mit dem Kartenschacht, sozusagen die Vorderbeinchen des Käfers, in der ersten Zeile des Breadboards stecken. So lassen sich die den Pins zugehörigen Löcher verlässlich abzählen.
Der DFPlayer Mini ist so ausgelegt, dass er auch ohne Arduino Board betrieben werden kann. Er hat Pins zum Steuern der Wiedergabe, also vor, zurück, lauter, leiser. Man könnte ihn nur mit einer Stromquelle, einem Lautsprecher und zwei Tastern betreiben. Wenn man aber bestimmen will, wann welche Datei abgespielt wird, braucht man zusätzlichen Code und der kommt vom Arduino Board.
Es gibt mehrere Bibliotheken für den DFPlayerMini. Für mich hat sich die Bibliothek DFRobotDFPlayerMini bewehrt.
Für die Kommunikation zwischen Board und Player wird der RX-Pin des Players an den TX-Pin des Boards - und der TX-Pin des Players an den RX-Pin des Boards angeschlossen.
Zwischen TX auf dem Board und RX beim Player sollte ein 1 K Widerstand eingebaut werden, um den RX-Pin nicht zu überlasten.
Da der Lautsprecher direkt an den Player angeschlossen wird, lässt sich die Lautstärke nicht über das Board kontrollieren. Man hat aber mit der Volume-Methode die Möglichkeit, die Lautstärke im Code einzustellen.
Eine weitere, fortgeschrittenere Möglichkeit ist, einen Pre-Amp mit Klinkenbuchse und Lautstärkeregler an die DAC-Pins anzuschließen.
Pin-Belegung des DFPlayerMini MP3:
Die Beschreibung der Lage der Pins und ihrer Funktionen geht davon aus, dass das Modul mit den Pins nach unten und dem Karteneinschub zum eigenen körper hin ausgerichtet ist, wie ein Käfer, der auf euch zugekrabbelt kommt. In dieser Position ist Pin 1 hinten links. Dann wird an der linken Seite bis 8 gezählt und rechts vorne geht es mit 9 weiter, 16 ist dann hinten rechts.
1. VCC - Stromzufuhr
2. RX - Serieller Input
3. TX - Serieller Output
4. DAC - Rechter Output-Kanal (Digital-Analog-Wandler
5. DAC - Linker Output-Kanal (Digital-Analog-Wandler
6. SPK2 - Direkter Lautsprecheranschluss
7. GND
8. SPK1 - Direkter Lautsprecheranschluss
9. IO1 - Trigger port 1 kurzer Druck = voriger Titel, langer Druck = leiser
10. GND
11. IO2 - Trigger port 2 kurzer Druck = nächster Titel, langer Druck = lauter
12. ADKEY1 - AD Port 1 Spiele ersten Titel
13. ADKEY2 - AD Port 2 Spiele fünften Titel
14. USB+ - USB+ DP
15. USB - USB-DM
16. BUSY - Abspielstatus, low = spielt, high = spielt nicht
- Robbie Sandberg
- Site Admin
- Beiträge: 165
- Registriert: 18.06.2019, 11:37
Mit Arduino einen akustischen Spielwürfel bauen
Der Akustische Spielwürfel spricht auf Knopfdruck einen zufällig generierten Würfelwert, beim klassischen Würfel also eine Zahl von 1 bis 6.
Wozu das? Nun, erstmal schützt der akustische Würfel vor Schummeln, weil die Zahl für alle Hörbar angesagt wird. Wenn blinde und sehende Kinder z.B. Mensch ärgere dich nicht spielen, wird ja doch schon mal gemogelt.
Weiterhin nützt der akustische Würfel, wenn man keine taktilen Würfel hat oder lesen kann.
Ein Pluspunkt ist, dass die angesagten werte beliebig angepasst werden können. Wenn man z.B. einen 20-Seitigen Würfel für ein Rollenspiel braucht, müsste man einen taktilen Würfel 3D-Drucken. Den akustischen Würfel hat man ratz fatz umgestellt.
Natürlich geht das mit jeglicher Art von Würfeln. In manchen Spielen, speziell für kleinere Kinder, gibt es Würfel mit Bildern, z.B. mit Bauernhoftieren. Dann speichert man im akustischen Würfel eben Dateien mit Tiernamen, statt mit Zahlen.
Wenn man Spiele mit verschiedenen Würfeln hat, kann man für jedes Spiel ein Array im Code hinterlegen und die jeweils nicht benötigten Arrays auskommentieren. Möchte man wechseln, muss man nur kurz den Würfel am Rechner anschließen, im Code das aktuelle Array auskommentieren, das Benötigte aktivieren und hochladen.
Funktionsweise:
Das wichtigste Teil der Schaltung ist ein MP3-Player-Modul, speziell der DFPlayerMini MP3. Dieser wird mit einer Mikro-SD-Karte bestückt, auf der die benötigten Dateien gespeichert sind.
Die Zahlen von 1 bis 6 oder sonst einer Würfeldimension müssen aufgesprochen werden. Wenn man mit Kindern spielt, finden die es vielleicht lustig, selbst die Zahlen zu sprechen.
Die Zahlen müssen jeweils als wav oder mp3 Datei gespeichert werden, im Format 0001.wav, 0002.wav usw... Auch wenn die Dateien Tiernamen oder sonstige Wörter enthalten, müssen sie wie beschrieben nummeriert sein, damit sie indiziert werden können.
Ich habe zusätzlich die Datei 0007.wav mit einen Würfelgeräusch erstellt.
Die Dateien werden in das Wurzelverzeichnis der SD-Karte kopiert.
Wenn der Taster betätigt wird, wird zuerst die Datei 0007.wav mit dem Würfelgeräusch wiedergegeben.
Dann wird eine zufällige Datei ermittelt und abgespielt.
Lässt man den Taster nach der ersten wiedergegebenen Zahl los, entspricht das dem Wurf mit einem Würfel. Für Spiele mit mehreren Würfeln wird der Taster gedrückt gehalten, bis so viele Zahlen wiedergegeben wurden, wie es Würfel im Spiel gibt.
Die Zufallsauswahl wird nach jeder Zahl wieder auf die Gesamtzahl der Dateien angewendet. Es ist also möglich, Pasche zu werfen.
Was ist ein Array:
Dazu muss man wissen, was eine Variable ist. Eine Variable ist ein virtueller Container, dem man an verschiedenen Stellen im code mit einem beliebigen Wert füllen kann. Ein einfaches Beispiel: Ein Sensor misst, ob es dunkel oder hell ist. Der gemessene Zustand wird als Meldung ausgegeben. Im Code deklariert man also eine Variable namens Helligkeit. Dann schreibt man eine Wenn-Dann-Anweisung, die den gemessenen Wert prüft und das Ergebnis an die Variable übergibt.
Wenn der Zustand = 0 ist, dann erhält die Variable den Wert „dunkel“. Wenn der Zustand = 1 ist, erhält die Variable den Wert „hell“.
Die Variable wird also abhängig vom Zustand mit dem Wort dunkel oder dem Wort hell gefüllt.
In der Meldung lässt man nun die Variable bzw. ihren Inhalt anzeigen. Message Box Helligkeit.
Eine Variable kann immer nur mit einem Wert zurzeit gefüllt werden. Ein Array dagegen kann viele Werte gleichzeitig enthalten. In diesem Fall die Zahlen von 1 bis 6. Damit werden die in Frage kommenden Dateien für die Zufallsauswahl festgelegt.
möchte man einen 20-seitigen Würfel emulieren, trägt man Zahlen von 1 bis 20 ein. Um schnell zwischen den Würfelarten wechseln zu können, schreibt man zwei Arrays in den Code und kommentiert das nicht Benötigte mit zwei führenden Schrägstrichen aus. Möchte man wechseln, muss man nur die Schrägstriche umsetzen.
Materialliste:
- 1 Arduino Uno R3 oder Nano
- 1 kleines Breadboard (2 falls ein Nano verwendet wird)
- 1 kleiner Lautsprecher
- 1 Widerstand 1 kO
- 1 Batterie 9V
- 1 Batteriefach oder -Clip
- 5 Jumper-Kabel (Stecker zu Stecker)
- 1 Taster
Der Schaltplan:
Die Belegung der Pins des Players entnehmt bitte dem Artikel über DFPlayerMini. Für den akustischen Würfel brauchen wir nur die linke Seite des Moduls.
- Die Batterie wird mit dem Pluspol über einen Taster an VIN und mit dem Minuspol an GND angeschlossen.
- V5 auf dem Board wird an VCC beim Player angeschlossen.
- TX auf dem Board wird mit RX beim Player verbunden.
Diese Verbindung geht über einen 1 K Widerstand. Auf dem Breadboard wo der Player steckt, muss also in einer freien Zeile das Kabel von TX mit dem Widerstand verbunden werden, in einer weiteren Zeile der Widerstand mit dem Kabel, das zu RX geht.
- RX auf dem Boardwird mit TX beim Player verbunden.
- GND geht zu GND
- Der Lautsprecher wird an SPK1 und GND angeschlossen.
Hier stelle ich den Sketch zum Download bereit. Für Leute, die Schwierigkeiten haben die gesprochenen Zahlen aufzunehmen, stelle ich auch meine wav-Dateien von 1 bis 6 plus Würfelgeräusch zur Verfügung.
Wozu das? Nun, erstmal schützt der akustische Würfel vor Schummeln, weil die Zahl für alle Hörbar angesagt wird. Wenn blinde und sehende Kinder z.B. Mensch ärgere dich nicht spielen, wird ja doch schon mal gemogelt.
Weiterhin nützt der akustische Würfel, wenn man keine taktilen Würfel hat oder lesen kann.
Ein Pluspunkt ist, dass die angesagten werte beliebig angepasst werden können. Wenn man z.B. einen 20-Seitigen Würfel für ein Rollenspiel braucht, müsste man einen taktilen Würfel 3D-Drucken. Den akustischen Würfel hat man ratz fatz umgestellt.
Natürlich geht das mit jeglicher Art von Würfeln. In manchen Spielen, speziell für kleinere Kinder, gibt es Würfel mit Bildern, z.B. mit Bauernhoftieren. Dann speichert man im akustischen Würfel eben Dateien mit Tiernamen, statt mit Zahlen.
Wenn man Spiele mit verschiedenen Würfeln hat, kann man für jedes Spiel ein Array im Code hinterlegen und die jeweils nicht benötigten Arrays auskommentieren. Möchte man wechseln, muss man nur kurz den Würfel am Rechner anschließen, im Code das aktuelle Array auskommentieren, das Benötigte aktivieren und hochladen.
Funktionsweise:
Das wichtigste Teil der Schaltung ist ein MP3-Player-Modul, speziell der DFPlayerMini MP3. Dieser wird mit einer Mikro-SD-Karte bestückt, auf der die benötigten Dateien gespeichert sind.
Die Zahlen von 1 bis 6 oder sonst einer Würfeldimension müssen aufgesprochen werden. Wenn man mit Kindern spielt, finden die es vielleicht lustig, selbst die Zahlen zu sprechen.
Die Zahlen müssen jeweils als wav oder mp3 Datei gespeichert werden, im Format 0001.wav, 0002.wav usw... Auch wenn die Dateien Tiernamen oder sonstige Wörter enthalten, müssen sie wie beschrieben nummeriert sein, damit sie indiziert werden können.
Ich habe zusätzlich die Datei 0007.wav mit einen Würfelgeräusch erstellt.
Die Dateien werden in das Wurzelverzeichnis der SD-Karte kopiert.
Wenn der Taster betätigt wird, wird zuerst die Datei 0007.wav mit dem Würfelgeräusch wiedergegeben.
Dann wird eine zufällige Datei ermittelt und abgespielt.
Lässt man den Taster nach der ersten wiedergegebenen Zahl los, entspricht das dem Wurf mit einem Würfel. Für Spiele mit mehreren Würfeln wird der Taster gedrückt gehalten, bis so viele Zahlen wiedergegeben wurden, wie es Würfel im Spiel gibt.
Die Zufallsauswahl wird nach jeder Zahl wieder auf die Gesamtzahl der Dateien angewendet. Es ist also möglich, Pasche zu werfen.
Was ist ein Array:
Dazu muss man wissen, was eine Variable ist. Eine Variable ist ein virtueller Container, dem man an verschiedenen Stellen im code mit einem beliebigen Wert füllen kann. Ein einfaches Beispiel: Ein Sensor misst, ob es dunkel oder hell ist. Der gemessene Zustand wird als Meldung ausgegeben. Im Code deklariert man also eine Variable namens Helligkeit. Dann schreibt man eine Wenn-Dann-Anweisung, die den gemessenen Wert prüft und das Ergebnis an die Variable übergibt.
Wenn der Zustand = 0 ist, dann erhält die Variable den Wert „dunkel“. Wenn der Zustand = 1 ist, erhält die Variable den Wert „hell“.
Die Variable wird also abhängig vom Zustand mit dem Wort dunkel oder dem Wort hell gefüllt.
In der Meldung lässt man nun die Variable bzw. ihren Inhalt anzeigen. Message Box Helligkeit.
Eine Variable kann immer nur mit einem Wert zurzeit gefüllt werden. Ein Array dagegen kann viele Werte gleichzeitig enthalten. In diesem Fall die Zahlen von 1 bis 6. Damit werden die in Frage kommenden Dateien für die Zufallsauswahl festgelegt.
möchte man einen 20-seitigen Würfel emulieren, trägt man Zahlen von 1 bis 20 ein. Um schnell zwischen den Würfelarten wechseln zu können, schreibt man zwei Arrays in den Code und kommentiert das nicht Benötigte mit zwei führenden Schrägstrichen aus. Möchte man wechseln, muss man nur die Schrägstriche umsetzen.
Materialliste:
- 1 Arduino Uno R3 oder Nano
- 1 kleines Breadboard (2 falls ein Nano verwendet wird)
- 1 kleiner Lautsprecher
- 1 Widerstand 1 kO
- 1 Batterie 9V
- 1 Batteriefach oder -Clip
- 5 Jumper-Kabel (Stecker zu Stecker)
- 1 Taster
Der Schaltplan:
Die Belegung der Pins des Players entnehmt bitte dem Artikel über DFPlayerMini. Für den akustischen Würfel brauchen wir nur die linke Seite des Moduls.
- Die Batterie wird mit dem Pluspol über einen Taster an VIN und mit dem Minuspol an GND angeschlossen.
- V5 auf dem Board wird an VCC beim Player angeschlossen.
- TX auf dem Board wird mit RX beim Player verbunden.
Diese Verbindung geht über einen 1 K Widerstand. Auf dem Breadboard wo der Player steckt, muss also in einer freien Zeile das Kabel von TX mit dem Widerstand verbunden werden, in einer weiteren Zeile der Widerstand mit dem Kabel, das zu RX geht.
- RX auf dem Boardwird mit TX beim Player verbunden.
- GND geht zu GND
- Der Lautsprecher wird an SPK1 und GND angeschlossen.
Hier stelle ich den Sketch zum Download bereit. Für Leute, die Schwierigkeiten haben die gesprochenen Zahlen aufzunehmen, stelle ich auch meine wav-Dateien von 1 bis 6 plus Würfelgeräusch zur Verfügung.
NFC und Sprachwiedergabe
Hallo
ich möchte kurz über mein aktuelles Arduino-Projekt berichten.
Der obige Beitrag über die Wiedergabe von Sprachdateien ist für mein Projekt besonders wichtig. Ich möchte mit einem PN532-Modul NFC-Tags lesen und beschreiben. Beim Lesen soll eine Sprachausgabe erfolgen. Zu diesem Modul gibt es eine Arduino-Bibliothek, die ich benutzen werde. Zuerst muß ich jedoch von "einem weltweit erfolgreichen Anbieter" ein paar Teile bestellen. Ich bin schon sehr gespannt, ob mein Projekt gelingt.
Euer Freddy
ich möchte kurz über mein aktuelles Arduino-Projekt berichten.
Der obige Beitrag über die Wiedergabe von Sprachdateien ist für mein Projekt besonders wichtig. Ich möchte mit einem PN532-Modul NFC-Tags lesen und beschreiben. Beim Lesen soll eine Sprachausgabe erfolgen. Zu diesem Modul gibt es eine Arduino-Bibliothek, die ich benutzen werde. Zuerst muß ich jedoch von "einem weltweit erfolgreichen Anbieter" ein paar Teile bestellen. Ich bin schon sehr gespannt, ob mein Projekt gelingt.
Euer Freddy
- Robbie Sandberg
- Site Admin
- Beiträge: 165
- Registriert: 18.06.2019, 11:37
Der Arduino Nano
Wie der Name verrät, ist der Nano kleiner als der Uno und eignet sich deshalb gut zum Einbau in kleine Gehäuse, z.B. für tragbare Geräte.
Der Nano ist anders aufgebaut als der Uno. Der wichtigste Unterschied, er hat keine Steckkontakte. Stattdessen hat er auf jeder Seite 15 Pins. Man kann Dupont-Buchsen daran stecken, um Bauteile anzuschließen, aber ich arbeite lieber mit einem Breadboard.
Im Artikel über Breadboards habe ich erklärt, dass alle Kontakte in einer Zeile zusammengeschaltet sind. Wenn der Nano auf dem Breadboard steckt, steckt jeder Pin in einer eigenen Zeile. Was in diese Zeile gesteckt wird, ist an den betreffenden Pin angeschlossen.
Ich nutze kleine Breadboards mit 17 Zeilen. Die bieten gerade Platz für den Nano und einige Bauteile.
Der Nano sollte so aufgesteckt werden, dass die ersten zwei Pins an der kurzen Seite mit dem USB-Anschluss in der ersten Zeile des Breadboards stecken. So lassen sich die den Pins zugehörigen Zeilen verlässlich abzählen. Neben den Pins sind dann noch 5 Spalten frei, um Bauteile anzuschließen. Man kann also auch mehrere in eine Zeile stecken, Z.B. wenn mehrere Bauteile mit Strom versorgt oder an GND angeschlossen werden sollen.
Man kann den Nano so aufstecken, dass auf einer Seite nur eine freie Spalte ist und auf der anderen vier, oder auf der Einen Seite zwei und auf der Anderen 3 Spalten. Bei komplexeren Schaltungen ist es sinnvoll sich zu überlegen, wie man die freien spalten aufteilt.
Auf dem kleinen Breadboard ist dann noch eine ganze Doppelzeile frei für Bauteile, die nicht direkt mit dem Nano verbunden werden sollen, z.B. ein Widerstand für eine Spannungsteilung.
Den Pinout des Nano in der Ausrichtung mit den Pins nach unten und der USB-Anschluss von euch wegzeigend, findet ihr in der folgenden Excel-Tabelle.
Der Nano ist anders aufgebaut als der Uno. Der wichtigste Unterschied, er hat keine Steckkontakte. Stattdessen hat er auf jeder Seite 15 Pins. Man kann Dupont-Buchsen daran stecken, um Bauteile anzuschließen, aber ich arbeite lieber mit einem Breadboard.
Im Artikel über Breadboards habe ich erklärt, dass alle Kontakte in einer Zeile zusammengeschaltet sind. Wenn der Nano auf dem Breadboard steckt, steckt jeder Pin in einer eigenen Zeile. Was in diese Zeile gesteckt wird, ist an den betreffenden Pin angeschlossen.
Ich nutze kleine Breadboards mit 17 Zeilen. Die bieten gerade Platz für den Nano und einige Bauteile.
Der Nano sollte so aufgesteckt werden, dass die ersten zwei Pins an der kurzen Seite mit dem USB-Anschluss in der ersten Zeile des Breadboards stecken. So lassen sich die den Pins zugehörigen Zeilen verlässlich abzählen. Neben den Pins sind dann noch 5 Spalten frei, um Bauteile anzuschließen. Man kann also auch mehrere in eine Zeile stecken, Z.B. wenn mehrere Bauteile mit Strom versorgt oder an GND angeschlossen werden sollen.
Man kann den Nano so aufstecken, dass auf einer Seite nur eine freie Spalte ist und auf der anderen vier, oder auf der Einen Seite zwei und auf der Anderen 3 Spalten. Bei komplexeren Schaltungen ist es sinnvoll sich zu überlegen, wie man die freien spalten aufteilt.
Auf dem kleinen Breadboard ist dann noch eine ganze Doppelzeile frei für Bauteile, die nicht direkt mit dem Nano verbunden werden sollen, z.B. ein Widerstand für eine Spannungsteilung.
Den Pinout des Nano in der Ausrichtung mit den Pins nach unten und der USB-Anschluss von euch wegzeigend, findet ihr in der folgenden Excel-Tabelle.
- Robbie Sandberg
- Site Admin
- Beiträge: 165
- Registriert: 18.06.2019, 11:37
Arduino und Ultraschall
Ein Ultraschallsensor eignet sich für verschiedene Zwecke. Man kann damit einen Hindernismelder bauen, ein Theremin oder auch eine Füllstandsanzeige.
Ich beschreibe hier den Ultraschallsensor HC-SR04.
Funktionsweise:
Der Sensor besteht aus einem Sender und einem Empfänger. Das Signal verlässt den Sender, wird von einem Hindernis reflektiert und trift auf den Empfänger.
Im Code wird die Laufzeit des Signals gemessen. Da sie aus hin- und Rückweg besteht, wird sie durch 2 geteilt.
Das Ergebnis wird mit der Schallgeschwindigkeit multipliziert und heraus kommt die Entfernung.
Der HC-SR04 kann Entfernungen bis 4 m messen. Zu bedenken ist aber, dass der Schall sich kegelförmig ausbreitet. Nach 4 m erreicht der Schallkegel bereits einen Durchmesser von 1 m. Das heißt, der Schall wird nicht nur von Gegenständen reflektiert, die sich recht voraus befinden, sondern auch seitlich.
Die untere Messgrenze liegt bei 2 cm. Das muss man berücksichtigen, wenn man z.B. einen Füllstandsmesser bauen möchte.
Die Messwerte können im Code in verschiedene Signalformen umgewandelt werden.
Bei meinem Hindernismelder z.B. werden entfernungsabhängige Vibrationsmuster erzeugt.
Die Messwerte lassen sich aber genau so gut in Töne umwandeln. Wie bei den Vibrationsmustern kann man bestimmten Entfernungen Tonfolgen zuweisen, oder man nutzt die map-Funktion und bekommt eine Art Theremin.
Pinout des HC-SR04::
Haltet den Sensor so, dass die beiden Kapseln für Sender und Empfänger nach oben und die Pins zum Körper zeigen.
Die Pins von links nach rechts: VCC, Trig, Echo, GND
Trig. also Trigger, ist der Pin für den Sender. Echo ist der Pin für den Empfänger.
Ich beschreibe hier den Ultraschallsensor HC-SR04.
Funktionsweise:
Der Sensor besteht aus einem Sender und einem Empfänger. Das Signal verlässt den Sender, wird von einem Hindernis reflektiert und trift auf den Empfänger.
Im Code wird die Laufzeit des Signals gemessen. Da sie aus hin- und Rückweg besteht, wird sie durch 2 geteilt.
Das Ergebnis wird mit der Schallgeschwindigkeit multipliziert und heraus kommt die Entfernung.
Der HC-SR04 kann Entfernungen bis 4 m messen. Zu bedenken ist aber, dass der Schall sich kegelförmig ausbreitet. Nach 4 m erreicht der Schallkegel bereits einen Durchmesser von 1 m. Das heißt, der Schall wird nicht nur von Gegenständen reflektiert, die sich recht voraus befinden, sondern auch seitlich.
Die untere Messgrenze liegt bei 2 cm. Das muss man berücksichtigen, wenn man z.B. einen Füllstandsmesser bauen möchte.
Die Messwerte können im Code in verschiedene Signalformen umgewandelt werden.
Bei meinem Hindernismelder z.B. werden entfernungsabhängige Vibrationsmuster erzeugt.
Die Messwerte lassen sich aber genau so gut in Töne umwandeln. Wie bei den Vibrationsmustern kann man bestimmten Entfernungen Tonfolgen zuweisen, oder man nutzt die map-Funktion und bekommt eine Art Theremin.
Pinout des HC-SR04::
Haltet den Sensor so, dass die beiden Kapseln für Sender und Empfänger nach oben und die Pins zum Körper zeigen.
Die Pins von links nach rechts: VCC, Trig, Echo, GND
Trig. also Trigger, ist der Pin für den Sender. Echo ist der Pin für den Empfänger.
- Robbie Sandberg
- Site Admin
- Beiträge: 165
- Registriert: 18.06.2019, 11:37
Mit Arduino einen Hindernismelder bauen
Hindernismelder die mit Ultraschall funktionieren, gibt es seit über 40 Jahren. Ich habe also nichts neues erfunden. Wie so oft bei Arduino liegt der Vorteil darin, dass man das Design und die Funktionsweise selbst bestimmen kann. Nicht zu vergessen der Preis. Die Materialkosten liegen hier bei rund 35 €.
Mein Hindernismelder richtet sich in erster Linie an taubblinde und rollstuhlfahrende blinde Menschen. Er ist nicht dazu gedacht, am Langstock oder am Körper befestigt zu werden und dauerhaft in Betrieb zu sein. Er soll eher wie eine Taschenlampe eingesetzt werden, also nur im Bedarfsfall.
Funktionsweise:
Die Entfernung zu einem Hindernis wird mit dem Ultraschallsensor HC-SR04 gemessen. Die Funktionsweise und das Pinout des HC-SR04 findet ihr im Artikel über diesen Sensor.
Im code werden abhängig von der Entfernung Vibrationsmuster gebildet. Mein Modell gibt einen Vibrationspuls, wenn ein Hindernis näher als 3 Meter ist, einen doppelten Puls bei unter 2 Metern, einen dreifachen Puls bei unter 1 Meter und bei unter 50 cm eine Dauervibration. Bei über 3 m und unter 20 cm stelle ich den Vibrationsmotor aus.
Die Muster und Entfernungen kann man natürlich frei wählen. Probiert es einfach aus. Man muss ein wenig experimentieren und die beste Einstellung für den persönlichen Bedarf finden.
Materialliste:
1 Ultraschallsensor HC-SR04
1 Arduino Nano
1 kleines Breadboard
1 Vibrationsmotor (coreless)
1 Kippschalter
1 Batteriefach oder -Clip
6 Dupont-Kabel (Stecker-auf-Buchse)
Dazu folgende Anmerkungen:
Man kann die Schaltung natürlich auch mit einem Uno bauen. Da es aber als Handheld gedacht ist, habe ich sie möglichst klein gebaut.
Es gibt Vibrationsmotoren, die mit Dupont-Kabeln geliefert werden. Allerdings bevorzuge ich welche ohne Eisenkern (coreless), weil die empfindlicher reagieren. Bisher ist mir noch kein kernloses Modell mit Dupont-Kabeln untergekommen. Wenn ihr also nicht selbst die Stecker crimpen wollt, experimentiert erstmal mit Eisenkern-Vibrationsmotoren.
Die Schaltung:
VCC wird an 5V und GND an GND angeschlossen.
Trig wird an D8 und Echo an D7 angeschlossen.
Den Vibrationsmotor schließt an D9 und GND an.
Nun noch den Pluspol der Batterie über den Taster an VIN und den Minuspol an GND anschließen. Fertig!
Hier gibt’s den Sketch zum Runterladen. In Kürze stelle ich hier auch eine stl-Datei für das 3D-Gehäuse bereit.
Mein Hindernismelder richtet sich in erster Linie an taubblinde und rollstuhlfahrende blinde Menschen. Er ist nicht dazu gedacht, am Langstock oder am Körper befestigt zu werden und dauerhaft in Betrieb zu sein. Er soll eher wie eine Taschenlampe eingesetzt werden, also nur im Bedarfsfall.
Funktionsweise:
Die Entfernung zu einem Hindernis wird mit dem Ultraschallsensor HC-SR04 gemessen. Die Funktionsweise und das Pinout des HC-SR04 findet ihr im Artikel über diesen Sensor.
Im code werden abhängig von der Entfernung Vibrationsmuster gebildet. Mein Modell gibt einen Vibrationspuls, wenn ein Hindernis näher als 3 Meter ist, einen doppelten Puls bei unter 2 Metern, einen dreifachen Puls bei unter 1 Meter und bei unter 50 cm eine Dauervibration. Bei über 3 m und unter 20 cm stelle ich den Vibrationsmotor aus.
Die Muster und Entfernungen kann man natürlich frei wählen. Probiert es einfach aus. Man muss ein wenig experimentieren und die beste Einstellung für den persönlichen Bedarf finden.
Materialliste:
1 Ultraschallsensor HC-SR04
1 Arduino Nano
1 kleines Breadboard
1 Vibrationsmotor (coreless)
1 Kippschalter
1 Batteriefach oder -Clip
6 Dupont-Kabel (Stecker-auf-Buchse)
Dazu folgende Anmerkungen:
Man kann die Schaltung natürlich auch mit einem Uno bauen. Da es aber als Handheld gedacht ist, habe ich sie möglichst klein gebaut.
Es gibt Vibrationsmotoren, die mit Dupont-Kabeln geliefert werden. Allerdings bevorzuge ich welche ohne Eisenkern (coreless), weil die empfindlicher reagieren. Bisher ist mir noch kein kernloses Modell mit Dupont-Kabeln untergekommen. Wenn ihr also nicht selbst die Stecker crimpen wollt, experimentiert erstmal mit Eisenkern-Vibrationsmotoren.
Die Schaltung:
VCC wird an 5V und GND an GND angeschlossen.
Trig wird an D8 und Echo an D7 angeschlossen.
Den Vibrationsmotor schließt an D9 und GND an.
Nun noch den Pluspol der Batterie über den Taster an VIN und den Minuspol an GND anschließen. Fertig!
Hier gibt’s den Sketch zum Runterladen. In Kürze stelle ich hier auch eine stl-Datei für das 3D-Gehäuse bereit.