Der Stargate-Timer für Kinder

Viele kennen mit Sicherheit die Serie Stargate mit Richard Dean Anderson. In dieser gibt es ein Sternentor zur Reise zwischen den Planeten. Es ist Rund und hat bewegliche Teile die sich drehen und an manchen Stellen leuchtet es auf. Warum ich das erzähle? Das Stargate hat mich inspiriert einen Timer für meine Kinder zu bauen. Da die beiden (2 und 5 Jahre) sind  recht Jung und haben dadurch noch kein großes Gefühl für die Zeit. Deshalb kam die Idee einen Timer zu bauen der die noch verbleibende Zeit visualisiert.

Aus diesem Grund habe ich mich ein wenig umgeschaut und habe einen NeoPixel-Ring mit 12 RGB-LED’s gefunden der perfekt für dieses Projekt ist. Adafruit hat eine übersichtliche Anleitung (Link) erstellt, wie die NeoPixels am besten genutzt werden. Hiervon inspiriert habe ich mich auf die Suche nach dem passenden Aufbau gemacht. Einen ersten Entwurf habe ich in Fritzing erstellt. 

Aufbau des Timers in einem Fritzing Schema mit Breadboard
Aufbau und Verwendete Materialien

Die verwendeten Materialien:

  • Arduino Uno
  • NeoPixel-Ring mit 12 LED’s
  • 1000 µF Kondensator
  • 470 Ohm Widerstand
  • einige Kabel

Zwischen dem 5V Eingang (VCC) und GRD sollte ein Kondensator gebaut werden, damit die erste LED beim einschalten nicht beschädigt wird. Zwischen dem digitalen Ausgang des Arduino und dem Eingang am NeoPixel-Ring sollte ein Widerstand gesetzt werden. Die Empfehlung liegt bei 100 bis 500 Ohm, damit Spannungsspitzen abgefangen werden und die erste LED nicht beschädigt wird. Für den ersten Versuchsaufbau kann man gut ein Breadboard nutzen. Da ich diesen Aufbau gerne in ein Gehäuse bauen möchte, habe ich das ganze direkt gelötet.

Löten des Versuchsaufbau
Löten des Versuchsaufbau
Erste Versuche und ein sinnvolles Programm

Nachdem ich alles gelötet habe, haben mein Sohn und ich erste Versuche unternommen. Als erstes haben wir einen Punkt im Kreis wandern lassen, welcher dabei zufällig die Farbe gewechselt hat. Das hat zu großer Begeisterung geführt. Abends mit etwas Ruhe habe ich einen ersten Entwurf für das eigentlich Programm gemacht.

Derzeit kann der Timer nur 5 Minuten anzeigen. Sobald wir ihn gestartet haben sind 12 grüne LED’s zu sehen. Entsprechend der Zeit die bereits vergangen ist, reduziert sich die Anzahl der LED’s um die bereits vergangene Zeit. Sobald die diese ganz abgelaufen ist leuchten alle LED’s Rot auf.

NeoPixel-Ring in Aktion mit grün leuchtenden LED's
Grell leuchtende LED’s
Beispiel-Programm für den 5 Minuten Timer

Im nachfolgenden Code-Beispiel findet ihr den Timer für eine 5 Minuten Variante (entsprechend 30.000 ms). Dieses Beispiel könnt ihr natürlich noch anpassen.

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif

#define PIN 9
#define NUMPIXELS 12

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

long timer = 300000;
int maxi = 12, i;

long startMillis, currentMillis, diffMillis;

void setup() {
  // put your setup code here, to run once:
  pixels.begin();
  Serial.begin(9600);
  startMillis = millis();
}

void loop() {
  // put your main code here, to run repeatedly:
  currentMillis = millis();
  diffMillis = currentMillis - startMillis;
  float percent = (float)diffMillis / (float)timer;
  int less = (int)NUMPIXELS * percent;
  maxi = 12 -less;
  Serial.println(maxi);
  if (maxi > 0) {
    for (i=0; i<maxi; i++) {
      pixels.setPixelColor(i, pixels.Color(0, 250, 0));
      pixels.show();
    }
    for (int j = maxi; j<=12; j++) {
      pixels.setPixelColor(j, pixels.Color(0, 0, 0));
      pixels.show();
    }
  }
  if (maxi <= 0) {
    for(int o=0; o<=12; o++) {
      pixels.setPixelColor(o, pixels.Color(250, 0, 0));
      pixels.show();
    }
  }
  delay(1000);
}
Ausblick

Die erste Version habe ich nun fertiggestellt. Das Resultat ist aber noch nicht so ganz Kleinkind gerecht. Aus diesem Grund werde ich in den nächsten Tagen ein Gehäuse entwerfen und das Design um einige Tasten erweitern. Mit diesen werden wir Eltern, oder die beiden Jungs, unterschiedliche Zeiten einstellen und den Timer anschließend starten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert