Mit dem Arduino Shield HW-262 auch zu finden unter Arduino Multi-Funktion Shield oder unter TS1003L Multifunktionale Erweiterungsplatine, kannst du für unter 2 Euro eine Menge über den Arduino und das Programmieren mit Ardublock lernen. Dieses Shield bietet neben einer 4 stelligen Anzeige, einem Summer, 4 LEDs, 3 Tastern auch noch Schnittstellen für Servomotoren, Temperaturfühler , Bluetooth und einiges mehr.
Wir werden natürlich die Taster und den Poti auslesen, die LEDs leuchten lassen aber vor allem möchte ich mit dir eine Stoppuhr programmieren, die Helligkeit der LEDs regeln, die Temperatur messen und anzeigen lassen, eine Polizeisirene wird zu hören sein und noch vieles mehr. Wie der Name SHIELD schon sagt wird das HW-262 einfach auf den Arduino gesteckt, mehr musst du nicht tun. Solltest du einen Arduino UNO verwenden der einen USB B Anschluss hat, musst du auf die USB Buchse etwas Klebeband kleben, da es sonst einen Kurzschluss über das Metallgehäuse der Buchse gibt.
Die verschiedenen Anschlussmöglichkeiten des Multi-Funktion Shield für den Arduino
- Kompatibel mit UNO, LENARDO und 2560 Controller
- 4x Sieben-Segment Anzeige über zwei 74HC595 AD ICs
- DS18B20-Temperatursensorschnittstelle
- LM35-Temperatursensorschnittstelle
- Spindeltrimmer / Präzisionspotentiometer
- Vier LEDs
- Drei Tasten und eine Resett-Taste
- Piezo Summer
- Bluetooth, drahtlose Schnittstellen, Sprachmodul und Spracherkennungsmodul Schnittstelle
- Servoschnittstelle
- Sensoren- und Aktorenschnittstelle
Die Einzelnen Funktionen des Arduino Multi-Funktion Shield HW-262
LEDs und Summer
Beginnen kannst du mit der einfachsten Funktion des Shields, dem ein- und ausschalten der LEDs. Die LEDS sind mit den PINS 13,12,11 und 10 verbunden. Die LEDs sind aber nicht mit VCC sondern mit GND verbunden. Das beutetet, sendest du einen digitalWrite HIGH, dann ist die LED aus, sendest du eine digitalWrite LOW, ist die LED ein.
Die beiden LED an den PINs 10 und 11 sind PWM (Pulsweitenmodulation) Pins, diese können so schnell EIN und AUS geschaltet werden, damit die LED heller oder dunkler leuchtet. Sendest du einen analogWrite Befehl mit einem Wert zwischen 0 und 255 leuchtet die LED dunkler oder heller. Allerdings gilt wegen der Verschaltung, je kleiner die Zahl im Feld "Wert", desto dunkler leuchtet die LED.
Der Summer verwendet die gleichen digitalen Funktionen wie auch die LEDs. Über das digitalWrite HIGH und LOW, wir der Summer ein- und ausgeschaltet. Auch hier gilt wieder, bei LOW gibt der Summer einen TON ab und bei HIGH ist der Summer ausgeschaltet.
Damit von dem Summer nicht immer der gleichen TON zu hören ist, kann die Funktion TON verwendet werden. das Programm unten kommt schon relativ nahe an den Sound von Polizei oder Feuerwehr heran. Für verschiedene Tön kann auch die PWM Funktion verwendet werden. Allerdings dauert es damit länger um ein gutes Ergebnis zu erzielen.
Präzisionspotentiometer und Taster
Die Taster sind mit den analogen Eingängen A1, A2 und A3 verbunden. Normalerweise verwendest du für die Taster die digitalen Eingänge des Arduino, da der UNO aber nur 11 digitale I/O hat, ist es sinnvoll die analogen anstatt der digitalen Eingänge zu verwenden. Verwendest du eine analoge Variable, nimmst als Wert einen der drei analogen Eingänge A1, A2 oder A3 und lässt dir den Wert über ein Serial print anzeigen. So siehst du dass der Wert beim drücken des Tasters von 1023 nach 0 fällt. Somit weißt du wann der Taster gerückt ist und wann nicht.
Über eine "kleiner als" Funktion in einer "falls" Bedingung kannst du nun eine LED mit dem Taster 1 und 2 ein- und ausschalten. Der Wert 500, könnte natürlich auch kleiner oder größer sein. Das Programm würde mit 10 genauso funktionieren wie mit 1000. Ich habe hier den Wert "kleiner als 500" verwendet, weil er ziemlich genau in der Mitte von 0 und 1023 ist. Der Wert muss aber einfach nur "kleiner als" 1023 sein.
Möchtest du einzelnen Tastendrücke auswerten funktioniert das Programm oben nicht. Der Arduino fragt die Eingänge so schnell ab, das selbst ein kurzer Tastendruck als viele Tastendrücke erkannt werden. Verwendest du die Mathematische Funktion + in einer Variablen, so wird bei jedem "Durchgang" des Programmes, die Variable um eine Stelle nach oben gezählt. Lädst du das Programm unten auf den Arduino hoch und öffnest den Serial Monitor. Dann kannst versuchen wie schnell du bist, denn selbst bei ganz kurzem drücken der Taste, wird immer mehr als +1 gezählt. Und dabei ist der Arduino in seiner Rechnenleistung durch die Ausgabe im Serial monitor, schon um ein vielfaches langsamer also ohne.
Dieses mehrfach zählen eines Tasters nennet man "prellen". Und dieses "prellen" kann einfach durch Software verhindert werden. Über eine "solange" Funktion, wird nun alle 100 Millisekunden abgefragt ob der Taster immer noch gedrückt ist und erst wenn der Taster los gelassen wird. Dann wird eine +1 in der Variablen gezählt. Es gibt noch mehr Möglichkeiten Taster zu entprellen aber in Adblock ist dies eine einfache und gut funktionierende variante.
Der so genannte Präzisionspotentiometer hat die Eigenschaft, das bei jeder Umdrehung der Wert nur minimal verändert wird. Ein Standard Potenziometer (Poti) hat einen Winkel von ca. 270 Grad, ein Präzisionspotentiometer, kann mehrfach um 360 Grad gedreht werden. Der Poti auf dem Shield ist mit dem analogen Pin 0 des Arduino verbunden. Über eine Variable, wo als "Wert" der analogRead A0 eingetragen wird, können wir wir den Wert des Poti von 0 bis 1023 auslesen.
Vor allem der maximale Wert von 1023 kann oft nicht für den Arduino verwendet werden. Servomotoren haben einen Wert von 0-180 Grad, der PWM Pin des Arduino hat 0-255 Pulse. Willst du nun mit dem Poti die Helligkeit der LED ändern oder den Winkel eines Servomotors einstellen, geht das mit 0-1023 nicht. Dafür braucht es die "map" oder die "zuordnen" Funktion. Der unterschied zwischen "map" und "zuordnen" liegt nur darin, dass "map" eine feste Zuordnung von 0-1023 zu 0-255 hat, also für die PWM Pins gedacht ist. Während bei der "zuordnen" Funktion, die Werte frei eingestellt werden können. Im Programm unten kannst du Helligkeit der LED mit dem Poti von ganz aus, bis ganz hell einstellen. Zudem kannst du dir den errechneten bzw. zugeordneten Wert im Serial Monitor anschauen.
4x Sieben-Segment Anzeige über zwei 74HC595AD des Arduino Shield
Da es für die Anzeige des Multi-Funktion Shield keine Blöcke in Ardublock gibt, musst du mit den "Code" Funktionen arbeiten. Das ist aber sehr einfach, weil du dir nur wenige Zeilen in Ardublock einfügen und drei Bibliotheken installieren musst. Die ersten vier Code Zeilen müssen in die Funktion "code im globalen Bereich" eingefügt werden. Alle weiteren Funktionen müssen mit der "code einfügen" Funktion eingefügt werden.
#include <TimerOne.h> / #include <Wire.h> / #include <MultiFuncShield.h> / Timer1.initialize(); / MFS.initialize(&Timer1);
Um auf dem Display Zahlen und Buchstaben ausgeben zu können, werden die folgenden Zeilen ebenfalls in die Funktion "code einfügen" eingefügt. Diese Funktionen kommen nun in den "setup" Teil deines Programmes.
- MFS.write("text"); zeige einen Text
- MFS.write(50); zeige eine Zahl
- MFS.write(3.141, 3); zeige eine Dezimalzahl, Zahl hinter dem Komma bestimmt wie viele Stellen hinter dem Komma angezeigt werden
- 3.141 , 3 / angezeigt wird 3.141
- 3.141 , 2 / angezeigt wird 3.14
- 3.141 , 1 / angezeigt wird 3.1
- 3.141 , 0 / es kommt ein Fehler
- MFS.write((int)variable); zeige eine Variable
Lädst du das Programm unten auf den Arduino hoch, steht auf der Anzeige im Wechsel von 300 Millisekunden hy, du, da allerdings werden nicht alle Buchstaben klein geschrieben. Das kleine a wird als großes A angezeigt, das ist kein Fehler, sondern es gibt auf einer 7 Segmentanzeige einfach nicht alle Kleinbuchstaben. Hier wäre klein a und klein 0 einfach gleich!
Zählst du nun jede Sekunde eine Variable um - eins von 60 herunter, dann hast du eine Stoppuhr mit einer Minute. Das herunterzählen darf natürlich nur so lange durch das Programm gemacht wie der Wert größer als 0 ist. Der Zähler wird über den Reset Taster neu gestartet.
Die Temperatur Schnittstelle des Multi-Funktion Shield HW-262
Folgt noch
Die Bluetooth Schnittstelle des Multi-Funktion Shield HW-262
Folgt noch