Mit dem "open smart rich shield two", kannst du für circa 6 Euro eine Menge über den Arduino und das Programmieren mit Ardublock lernen. Dieses shield bietet neben einer LED Matrix, 4 NEO Pixeln, Joystick oder Batterieanzeige auch einige Sensoren auf der Platine. Mit so einem Board musst du dich nicht um das Stecken von Hardware auf einem Breadbord kümmern, sondern kannst direkt mit dem programmieren loslegen. Die ersten Teile mit Display, Encoder, Joystick sind bereits auf der Seite, andere wie die NEO Pixel oder das Mikrofon fehlen noch, kommen aber die nächsten Wochen noch.
Das open smart rich shield two hat viele Anzeigen und Sensoren direkt onboard
- I2c Matrix mit16x8 Pixel für Zeichen, Zahlen und Buchstaben
- 2 Achsen Joystick, zum erkennen der Daumen Position
- Batterie anzeige LEDs, kann der Ladezustand einer Batterie anzeigen
- Encoder / Drehgeber, gibt über 360 Grad, 20 Impulse in einer Rotation aus
- Ds18b20 Temperatur Sensor, zeigt die Temperatur -25 bis + 100 Grad Celsius an
- PIR Sensor, erkennt Menschen und Tiere in der Umgebung
- Sound Sensor, erkennt die Intensität (Lautstärke) von Stimmen, Tönen und Geräuschen
- 4 BIT RGB LED mit ws2812 Chip, kann viele Farben in verschiedenen Helligkeiten anzeigen
- PIN Header für D7,D8, VCC, GND
- HC-SR04 Ultraschalls Sensor, erkennt Gegenstände und Objekte und kann die Entfernung zurückgeben
- D7 und D8 können als digitale I/O verwendet werden
Mit dem rich shield two von open smart hast du somit viele verschiedene Möglichkeiten deine programmier-Skills mit Ardublock auszubauen. Auf dieser Seite werde ich mit dir die einzelnen Funktionen des Arduino shield durchgehen und dann einige ganz praktische Projekte umsetzen. Leider gibt es in Ardublock keine der benötigten Funktionen als fertige Blöcke, deshalb werden wir viel mit der Code Funktion arbeiten. Der Vorteil von Ardublock besteht aber weiter darin, dass du keine Syntax Fehler machen kannst.
Arduino open smart rich shield two:: 8x16 LED Matrix ansteuern
Jeder der kleinen Punkte auf der Matrix ist eine LED. 16x8 bedeutet einfach dass es 16 Reihen mit je 8 Zeilen gibt, damit kannst du 128 kleine rote LEDs an und ausschalten. Um Zahlen, Buchstaben oder Formern zu anzuzeigen wäre es aber sehr aufwendig, wenn du das selber machen müsstest. In den beiden Bibliotheken (Adafruit LED Backpack / Adafruit GFX) gibt daher schon Zahlen, Buchstaben, Lienen , Rechtecke und Kreise. Zudem gibt es hier auch schon fertige Funktionen wie, drehen, verschieben und andere grafische Voreinstellungen.
Als erstes musst du im Head (code im globalen Bereich) und Setup (code einfügen) folgende Texte einfügen.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include "Adafruit_LEDBackpack.h"
Adafruit_8x16matrix matrix = Adafruit_8x16matrix();
matrix.begin(0x70);
Um Pixel und Formen auf der Matrix anzuzeigen, kanns du folgende Code Zeilen verwenden:
Immer davor: matrix.clear();
Immer danach: matrix.writeDisplay();
matrix.drawPixel(0, 0, LED_ON);
matrix.drawLine(0,0, 7,7, LED_ON);
matrix.drawRect(0,0, 8,16, LED_ON);
matrix.fillRect(2,2, 4,12, LED_ON);
matrix.drawCircle(3,8, 3, LED_ON);
Ersetze ON durch OFF zum ausschalten von Pixeln!
Um Texte, Zahlen oder Zeichen anzuzeigen, kannst du folgende Code Zeilen verwenden:
Text Einstellungen
matrix.setTextSize(1);
matrix.setTextWrap(false);
matrix.setTextColor(LED_ON);
matrix.setRotation(1);
Text darstellen
matrix.setCursor(0,0);
matrix.print("TEXT");
matrix.print(variable);
Zahl 28 auf der LED Matrix.
Arduino open smart rich shield two: Encoder auslesen
Ein Encoder kann im Gegensatz zu einem Poti um 360 Grad gedreht werden und es gibt keinen Widerstand sondern zwei digitale Ausgänge. Diese werden im Wechsel abgefragt. Über diesen Wechsel kann die Software unterscheiden ob nach links oder rechts gedreht wird und diese Drehung zählen. Um dieses zählen musst du dich aber nicht kümmern, du bekommt aus der ENCODER Bibliothek einen fertig generierten Zahlenwert.
Im Setup Teil musst du diesen Code einfügen.
#include <Encoder.h>
Encoder myEnc(2, 3);
Erstelle eine "lange" Variable mit dem Name "oldPosition" und weise ihr den Wert -999 zu
Im Loop Teil musst du nur diesen Teil einfügen
long newPosition = myEnc.read(); if (newPosition != oldPosition) { oldPosition = newPosition;}
In der Variablen "newPosition" ist nun der Wert des Encoders gespeichert. Allerdings wird dieser Wert immer +/- 4 gerechnet. Um ein +/- 1 zu erreichen, erstelle eine neue Variable und Teile den Wert von "newPosition" durch 4. Mit einem Serial Print kannst du dir den Wert nun anzeigen lassen. Aber wenn es auf dem shield schon eine LED Matrix gibt können wir den Wert des Encoder auch gleich auf der Matrix anzeigen lassen.
Arduino open smart rich shield two: Joystick X und Y Werte auswerten
Der Joystick ist nichts anderes als zwei bewegliche Widerstande. Ein Wiederstand für die X Achse und ein Wiederstand für die Y Achse. Mit dem Arduino kannst du also zwei analoge Werte an den PINs A0 und A1 auslesen. Beide Werte gehen in die eine Richtung von 0 bis ca. 500 und in die andere Richtung von ca. 500 bis 1023.
Um den Joystick auszuwerten benötigst du diesmal keine Code Funktion. Du brauchst nur zwei Variablen mit den Namen xachse und yachse. Bei Wert trägst du einmal analogRead0 und einmal den analogRead1 ein. Über ein Serial Print kannst du dir die beiden Werte im Serial Monitor anzeigen lassen. Bewegst du nun den Joystick sollte sich der jeweilige Wert von 0-1023 ändern.
Wenn wir schon ein LED Matrix haben, kannst du die Stellung der X und Y Achse auch verwenden um einen "Punkt" auf dem Display anzuzeigen und zu verschieben. Über die Funktion "drawpixel" wird die LED mit "matrix.print(variable);" an der Stelle eingeschaltet die sich aus der X und Y Achse ergibt. Natürlich könntest du zum ausschalten auch die Funktion "clear" verwenden. Wenn du aber über die Funktion "drwapixel" OFF die LED ausschaltest, wird nur dieser Punkt gelöscht. Ist noch etwas anders auf dem Display zu sehen, bleiben diese LEDs eingeschaltet. Die zuordnen Funktion dient dazu die Werte auf das 16x8 Display zu begrenzen.
Mit diesem Programm kannst du nun einen Punkt (eine LED) frei auf der Matrix bewegen.
Arduino open smart rich shield two: Batterie Ladezustand anzeigen
Über die verschiedenfarben LEDs in der Batterieform, kann der Ladzustand eines Akkus oder einer Batterie angezeigt werden. Bevor du eine 1,5 Volt Batterie mit plus (+) an den Pin7 und minus (-) an den GND anklemmen kannst, zuerst einmal die Grundlagen zur Ansteuerung.
Als erstes musst du im Head (code im globalen Bereich) und im Setup (code einfügen) folgenden Code einfügen.
#include "TM1651.h"
#define CLK 10
#define DIO 11
TM1651 batteryDisplay (CLK,10) ;
batteryDisplay.init();
batteryDisplay.set (4); // hier kann die Helligkeit von 0-7 eingestellt werden
Um die einzelnen LED (Farben) der Anzeige ein und auszuschalten benötigest du im Loop Teil folgenden Code
batteryDisplay.displayLevel (0-7) ; // nu eine Zahl eintragen
Dabei gibt die Zahl 0-7 an welche der Leds an sein soll und welche aus, im Beispiel oben schaltest du einfach alle LEDs ein und dann wieder aus.
Um die LEDS der reihe nach einzuschalten, kannst du eine Variable hochzählen (so könnte die Anzeige beim Ladevorgang aussehen).