BitBastelei #234 – WS2812B (Neopixel) Uhr

BitBastelei #234 - WS2812B (Neopixel) Uhr

(132 MB) 00:38:13

2017-03-12 12:00 🛈

Die WS2812B, auch bekannt als Neopixel, sind RGB-LEDs mit internem Steuer-IC, welche sich über einen einzelnen Datenpin kaskadieren und separat ansteuern lassen. Als in meinem Feed ein Angebot für ¼-Kreise mit 15 dieser LEDs durchtickerte war der Plan schnell klar: 4 ¼-Kreise á 15 LEDs macht 60 LEDs. Passend für eine Uhr. Mal schauen, ob es auch funktioniert.
Zur Zeithaltung kommt ein DS3231 zum Einsatz – ein I²C-Chip, welcher speziell für Uhren gedacht ist und genauer funktioniert als die internen Taktgeber der üblichen µCs.

Inhalt:

  • 00:00 LED-Module & Aufbauplan
  • 08:22 LED-Test mit Adafruit-Library
  • 12:32 Warum RTC statt Systemtakt / millis()?
  • 17:05 Blick auf die Software
  • 34:13 Uhr in Aktion

Code:

Links:

16 Gedanken zu „BitBastelei #234 – WS2812B (Neopixel) Uhr“

  1. Grüße Dich,

    Ich versucher gerade deinen Code zu compalieren, leider spuck mir Arduino einen fehler aus:

    neoclock.ino: In function ‘void chkSer()’:

    neoclock:242: error: ‘setTime’ was not declared in this scope

    setTime(iH,iM,iS,id,im,iy);

    ^

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

    Die Libs habe Ich Installiert derzeit mache Ich das mit der Aktuellen Arduino Version 1.8.1

    Hast du einen Tipp für mich?

    Grüße

    Andreas

  2. Hallo Florian,

    ich hab Deine Uhr nachgebaut und sie gefällt mir sehr gut .
    Danke dafür.

    Ich habe festgestellt, dass sie pro Minute 3 Sekunden verliert (geht nach). Habe es über einen Sync mit der Echtzeituhr alle 15 Sekunden kompensiert.

    Sie tut aber was sie soll!

    Grüsse
    Jens

  3. Hallo,
    bin ein begeisterter Bitbastelei Kanal Fan.
    Auch wenn vieleicht off topic aber wie bekomme ich die fünf Minuten LED eingeschalted?
    Vielen dank schonmal im vorraus für die Hilfe
    MfG
    Ulf Thalheim

  4. Vielen Dank für die schnelle Antwort nur was ich nicht Verstehe wie oder wo
    schalte ich die Option ein oder aus? Sorry ich sehe da grad den Wald vor Bäumen nicht. 🙁

    MfG
    Ulf

  5. Moin,
    wo genau kommt der DS3231 an den Uno?
    GND und 5V ist klar, aber die Datenpins?

    Soll spätestens zum 34c3 fertig werden 😉

    Danke
    Sascha

  6. echt toll geworden…
    das meiste kann ich auch nachvollziehen, nur die Einstellung der Farben erschliesst sich mir nicht.
    durch ausprobieren kann ich zwar rot grün und blau zwischen den Zeigern wechseln (0/1/2) aber wie ich zum Beispiel die Stundenmarker auf weiß bekommen soll bleibt mir ein Rätsel.
    genauer gesagt wollte ich die Helligkeit und die Farbe der drei zeiger und der stundenmarker durch Potis verändern können.

    1. Die Farbwerte, die ich bei addPixelColor nutze, ist eine Anzahl von 8-Bit-Shifts. Daraus ergibt sich: 0 = blau, 1 = grün, 2 = rot. Andere Farben sind so nicht möglich, da müsste man die Funktion passend ändern.
      Der Stundenmarker wird aktuell über die Serielle Schnittstelle festgelegt (Zeile 260) – kann man aber auch am Anfang des Programms oder sonstwo passend setzen – analog zu den anderen.

  7. Hallo und danke das du dein projekt teilst.

    ich habe folgendes problem. ich nutze für die uhr eine RTC 1307 und leider spuckt mir dein programm trotz der nutzung der sync funktion “S” immer wieder die uhrzeit “15:49:10” aus.

    hättest du einen ansatz woran das liegen kann????

    mfg

    1. Hm – hast du es mal direkt mit den Beispielen versucht? Damit könnte man testen, ob da ein Softwareproblem vorliegt oder das Modul ein Problem hat. Läuft die Uhr immer falsch oder erst nachdem der Strom weg war? Wenn letzteres klingt das nach leerer Batterie.

  8. die uhr läuft mit anderen programmen richtig und behält auch die zeit erst wenn ich diesen sketch aufspiele springt die uhrzeit.
    und wenn es 16 uhr auf der uhr ist fängt sie wieder bei 15:46 an

    ich nutze übrigens einen nano kann das damit zusammenhängern?

    im übrigen funktioniert der sketzt überhaupt erst wenn ich die lib benutze wenn ich die weg lasse kommt folgende:

    C:\Users\philc\Documents\Arduino\xv\xv.ino: In function ‘void calcTime()’:

    xv:97: error: ‘now’ was not declared in this scope

    utc = now();

    ^

    xv:99: error: ‘hour’ was not declared in this scope

    ohour = hour(utc);

    ^

    xv:100: error: ‘minute’ was not declared in this scope

    ominute = minute(utc);

    ^

    xv:101: error: ‘second’ was not declared in this scope

    if(osecond != second(utc)) {

    ^

    C:\Users\philc\Documents\Arduino\xv\xv.ino: In function ‘void timeSync()’:

    xv:184: error: ‘setTime’ was not declared in this scope

    setTime(dt.Hour(),dt.Minute(),dt.Second(),dt.Day(),dt.Month(),dt.Year());

    ^

    C:\Users\philc\Documents\Arduino\xv\xv.ino: In function ‘void timeSave()’:

    xv:201: error: ‘now’ was not declared in this scope

    utc = now();

    ^

    xv:203: error: ‘year’ was not declared in this scope

    RtcDateTime store = RtcDateTime(year(utc), month(utc), day(utc), hour(utc), minute(utc), second(utc));

    ^

    xv:203: error: ‘month’ was not declared in this scope

    RtcDateTime store = RtcDateTime(year(utc), month(utc), day(utc), hour(utc), minute(utc), second(utc));

    ^

    xv:203: error: ‘day’ was not declared in this scope

    RtcDateTime store = RtcDateTime(year(utc), month(utc), day(utc), hour(utc), minute(utc), second(utc));

    ^

    xv:203: error: ‘hour’ was not declared in this scope

    RtcDateTime store = RtcDateTime(year(utc), month(utc), day(utc), hour(utc), minute(utc), second(utc));

    ^

    xv:203: error: ‘minute’ was not declared in this scope

    RtcDateTime store = RtcDateTime(year(utc), month(utc), day(utc), hour(utc), minute(utc), second(utc));

    ^

    xv:203: error: ‘second’ was not declared in this scope

    RtcDateTime store = RtcDateTime(year(utc), month(utc), day(utc), hour(utc), minute(utc), second(utc));

    ^

    C:\Users\philc\Documents\Arduino\xv\xv.ino: In function ‘void chkSer()’:

    xv:246: error: ‘setTime’ was not declared in this scope

    setTime(iH,iM,iS,id,im,iy);

    ^

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

  9. damit startet übrigens der serielle monitor

    RTC was not actively running, starting now
    RTC lost confidence in the DateTime!
    Synced to: 2009-85-165-37-165-85

  10. ersteinmal danke für deine hilfe ich habe den fehler gefunden,

    es lag erstmal nicht an der RTC ich musste den code an die Lib für die RTC1307 etwas anpassen und die Softwarewire pins umsetzen und dann ging es.

    danke das du uns an deinem projekt hast teilhaben lassen.

    mfg

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.