Word Clock v2 Teil 3: Der Code

Nun geht es weiter mit dem Arudino und dem Code der darin läuft. Als erstes besorgt man sich wieder einen Arduino UNO oder Nano (Klon oder Original). Bei den Klons sollte man darauf achten, dass der USB Controller ein explizit ein Original FTDI Chip oder ein CH340 Chip ist.

Die DATA-Leitung des aller ersten LED Streifen aus der Daisy-Chain Kette schließt man dann per Jumper Wire an den Digital Pin 3. Das ist dieser hier:

Arduino Pin 3.jpgDamit die Uhr auch ordentlich läuft und auch bei Stromausfall die Uhrzeit behält brauchen wir auch noch ein Real Time Clock Modul (RTC). Auch hier gibt es viele verschiedene Chips/Versionen und allerlei Klone. Ich benutze das RTC Modul DS3231 und bin mit der genauigkeit sehr zufrieden! Allerdings muss man auch hier den Widerstand herauslöten, da sonst die Batterie explodieren kann. Angeschlossen wird es so:

arduino-ds3231.jpg

Also VCC und GND an 5V und Masse. SCL auf A5 und SDA auf A4.

Falls noch nicht geschehen, sollte man spätestens jetzt die offizielle Arduiono IDE (ACHTUNG!: DIE AKTUELLE VERSION FUNKTIONIERT MIT DEN BENÖTIGTEN LIBRARIES NICHT MEHR: BITTE VERSION 1.6.5 ODER 1.6.9 BENUTEZEN!) herunterladen und installieren. Für die Klon Arduinos mit CH340 Chip muss man noch diesen Treiber herunterladen und installieren.

Als erstes müssen wir der RTC sagen wieviel Uhr wir gerade haben. Dazu brauchen wir ersteinmal die passende Library. Nämlich diese hier: DS3231 Library. Libraries installiert man ganz einfach. Man Navigiert zu C:\Users\Benutzername\Documents\Arduino\libraries und kopiert den Ordner dort einfach hinein. Nach einem Neustart von der Arduino IDE sind die Libraries installiert. Danach sucht man in den Beispielen dieses: „DS3231 Serial Easy“. Dort trägt man einfach das Datum, die Uhrzeit und den Wochentag ein (vorher noch die // vor den Zeilen wegmachen) und lädt dieses auf den Arduino (die RTC muss dabei natürlich am Arduino angeschlossen sein.

Hat man die RTC programmiert, lädt man sich noch meinen Wordclock Code herunter und öffnet diesen mit dem Arduino. Beginnen wir mir den ersten Zeilen. Damit der Code richtig funktioniert braucht man noch Libraries. 3 an der Zahl. Die Links für die jeweilige Library ist schon im Code. Einfach anklicken, herunterladen, entzippen und in den Arduino libraries Ordner legen. Hat man die Libraries installiert muss man noch ein paar Zeilen im Code anpassen.

Wordclock Code 1.jpg

In der Zeile „#define Num_LEDS“ trägt man seine Gesamtanzahl an LEDs ein. Bei mir sind das 164.

Darunter geht es an die Helligkeit. Auf der ersten Seite hatte ich schoneinmal den Fotoresistor bzw. die automatische Helligkeitsanpassung angesprochen. Je nachdem ob man das nun möchte oder nicht muss man den Code für sich anpassen.

Anpassungen mit Helligkeitsanpassung via Fotoresistor:
Bei „uint8_t maxBrightness“ trägt man die Helligkeit ein mit der die LEDs maximal leuchten sollen (bei heller Umgebung)
Bei „uint8_t minBrightness“ trägt man die Helligkeit ein mit der die LEDs minimal leuchten sollen (bei kompletter Dunkelheit)
Bei „uint8_t AmbientLightPin“ trägt man den Pin ein, an dem der Fotoresistor hängt. Dazu aber später mehr.
Die „unint_8t BRIGHTNESS“ Zeile kann man ignorieren bzw. einfach so lassen.

Anpassungen ohne Helligkeitsanpassung via Fotoresistor:
Um die automatische Helligkeitsanpassung auszuschalten trägt man bei „uint8_t maxBrightness“ eine 0 (null) ein.
Die zwei Zeilen darunter kann man so stehen lassen.
Bei der „unint_8t BRIGHTNESS“ Zeile trägt man seine gewünschte (dauerhafte) Helligkeit ein.

Damit wären die Helligkeitseinstellungen schon erledigt.

Weiter gehts mit viel Zählerrei: Es muss nun jedem Wort die passenden LEDs zugewiesen werden. Dafür gibt es für jedes Wort ein Array. Zwischen den {}-Klammern stehen bereits einige Zahlen. Diese sind nur Beispiele oder ein kleiner Anhaltspunkt, wie es später aussehen soll! Am besten geht man folgendermaßen vor:

Wordclock Code 2.jpg

Man Zählt die LEDs des ersten Steifen der an den Arduino angeschlossen ist (bei mir „Es ist“) beginnend mit 0 (Null)! Hat das Wort z.B. 12 LEDs trägt man zwischen die zwei Klammern {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; ein. Dann gehts weiter mit dem zweiten Streifen bzw. Wort, welches an dem DATA Ausgang des ersten Streifen hängt. Bei mir das Wort „Fünf“ (und zwar das „Minuten Fünf“) Also sucht man das Array „MFuenf“ und trägt in die Klammern wieder die LED Positionen ein z.B {12, 13, 14, 15, 16, 17, 18}; Und das einfach immer so weiter, man folgt immer der DATA Leitung und zählt die Anzahl der LEDs, welche ein Wort beleuchten. Ich habe im folgenden Bild mal meine DATA Leitung eingezeichnet. Wenn das bei dir auch so ist zählt man wie folgt:

nummerierung.jpg

Die letzte LED hat die Nummer 163. Die letzte Nummerierung sollte immer die Gesamtanzahl -1 sein, da wir ja mit 0 anfangen zu zählen. Passt bei mir also 😉 Etwas weiter unten im Code kann man auch die gewünsche Farbe eintragen (Standard = Warmweiß)

WCColor.jpg

Und das war auch schon alles! Auf der Rückseite kann man die RTC und den Arduino anschließen und einkleben o.ä. und an die 5V anschließen. Dann noch das Programm auf den Arduino übertragen und sich an der neuen Wordclock erfreuen! 😀

Hier gehts zu Teil 4.

40 Kommentare zu “Word Clock v2 Teil 3: Der Code”

  1. Arduino: 1.8.2 (Windows 10), Board: „Arduino Nano, ATmega328“

    In file included from C:\Users\Z\Desktop\Wordclock_WS2812-Wordclock_WS2812\Wordclock_WS2812-Wordclock_WS2812.ino:1:0:

    C:\Users\Z\Documents\Arduino\libraries\DS3232RTC-master/DS3232RTC.h:136:26: error: ‚tmElements_t‘ has not been declared

    static byte read(tmElements_t &tm);

    ^

    C:\Users\Z\Documents\Arduino\libraries\DS3232RTC-master/DS3232RTC.h:137:20: error: ‚tmElements_t‘ has not been declared

    byte write(tmElements_t &tm);

    ^

    In file included from C:\Users\Z\Desktop\Wordclock_WS2812-Wordclock_WS2812\Wordclock_WS2812-Wordclock_WS2812.ino:4:0:

    C:\Users\Z\Documents\Arduino\libraries\FastLED-master/FastLED.h:17:21: note: #pragma message: FastLED version 3.001.006

    # pragma message „FastLED version 3.001.006“

    ^

    C:\Users\Z\Desktop\Wordclock_WS2812-Wordclock_WS2812\Wordclock_WS2812-Wordclock_WS2812.ino: In function ‚void setup()‘:

    Wordclock_WS2812-Wordclock_WS2812:76: error: ’setSyncProvider‘ was not declared in this scope

    setSyncProvider(RTC.get);

    ^

    Wordclock_WS2812-Wordclock_WS2812:77: error: ‚timeStatus‘ was not declared in this scope

    if(timeStatus() != timeSet) {

    ^

    Wordclock_WS2812-Wordclock_WS2812:77: error: ‚timeSet‘ was not declared in this scope

    if(timeStatus() != timeSet) {

    ^

    Wordclock_WS2812-Wordclock_WS2812:79: error: ‚timeNeedsSync‘ was not declared in this scope

    }else if(timeStatus() != timeNeedsSync){

    ^

    C:\Users\Z\Desktop\Wordclock_WS2812-Wordclock_WS2812\Wordclock_WS2812-Wordclock_WS2812.ino: In function ‚void CheckDST()‘:

    Wordclock_WS2812-Wordclock_WS2812:375: error: ‚day‘ was not declared in this scope

    Tag = day();

    ^

    Wordclock_WS2812-Wordclock_WS2812:376: error: ‚month‘ was not declared in this scope

    Monat = month();

    ^

    Wordclock_WS2812-Wordclock_WS2812:378: error: ‚weekday‘ was not declared in this scope

    WochenTag = (weekday()-1);

    ^

    C:\Users\Z\Desktop\Wordclock_WS2812-Wordclock_WS2812\Wordclock_WS2812-Wordclock_WS2812.ino: In function ‚void loop()‘:

    Wordclock_WS2812-Wordclock_WS2812:403: error: ‚minute‘ was not declared in this scope

    Minute = minute();

    ^

    Wordclock_WS2812-Wordclock_WS2812:404: error: ‚hour‘ was not declared in this scope

    int Std = hour();

    ^

    exit status 1
    ’setSyncProvider‘ was not declared in this scope

    Dieser Bericht wäre detaillierter, wenn die Option
    „Ausführliche Ausgabe während der Kompilierung“
    in Datei -> Voreinstellungen aktiviert wäre.

    Das ist die Fehlermeldung die ich beim Kompilieren bekomme. Auch wenn ich deine Version des Codes kompiliere. Ich habe alle Librarys verknüpft. Auch wenn ich versuche die Beispieldatei von der DS3232RTC-master.zip SetSerial versuche zu kompilieren werden die oben genannten Attribute nicht gefunden.
    Über Hilfe bei diesem Problem würde ich mich sehr freuen.

    Liebe Grüße Tom

    Gefällt mir

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

Hier stelle ich meine DIY Projekte vor!

%d Bloggern gefällt das: