Ein 15-LED RGB-Uhr mit Arduino Kern (3 / 5 schritt)


Schritt 3: Software Überlegungen

Ich wird nicht bieten voll skizzieren hier weil, Erstens, es wurde für bestimmte benutzerdefinierte Hardware entwickelt und so mit Ihrem Gerät funktioniert nicht und zweitens, weil es kein Hexenwerk drin gibt – die grundlegende RGB-Uhr ist ziemlich einfach zu (Bitte zögern tun, Fragen zu stellen, wenn Sie Probleme haben). Allerdings gibt es einige Überlegungen erwähnenswert.

(1) RGB richtig zu tun.

Die RGB-Uhr zeigt Zeit durch nur grundlegende Farben – rot, grün und Blau mischen. Wenn man bedenkt, dass jede Grundfarbe angetrieben wird durch eine eigene Daten-Kanal die Möglichkeit, dieses Programm scheint ziemlich einfach – nur Rotweine für Stunden, dann grün und blau für entsprechende Minuten einzuschalten. Farbmischung wird durch LEDs selbst erfolgen. Ganz einfach, oder?

Falsch!

Während diese Lösung ausgezeichnet von Programmierung Sicht ist es nicht sieht so gut, wenn visuelle Ästhetik und Stromverbrauch angesehen werden. Eine RGB-LED ist im Wesentlichen drei LEDs in einem Paket. Dies bedeutet, dass wenn rot angezeigt wird, nur eine LED funktioniert. Schaltet sie auf gelb, zwei LEDs eingeschaltet sind, und mit weißen leuchten alle drei. So gelb ist zwei Mal heller als jede Grundfarbe und weiße ist drei Mal heller. Das sieht nicht wirklich gut aus (und das ist einer der Gründe, HSV Modell sollte nie mit LEDs verwendet werden, aber das ist eine andere Geschichte für einen zukünftigen Artikel) und es wird zu viel Strom – in der Tat, wenn alle 15 LEDs weiß (bei 05:30) sind das Gerät verbraucht 900mA und sogar von einem USB-Anschluss funktioniert nicht (500 mA).

Der andere Grund, warum müsst ihr "Hand-die Farben Pick" kann es, was die Tatsache, dass LEDs keine Farbe kalibriert und verschiedenen Trauben in der Weise variieren sie dieselbe Farben ausgegeben. Es ist eine gute Idee zu tun einige Farbkalibrierung von hand, um die genaue Farbtöne zu erhalten möchten, obwohl Sie scheinbar einfachen 7 Farben beschäftigen.

Jedenfalls ist es besser, jede LED einzeln mit sorgfältig ausgearbeiteten Werte aktivieren. In meiner Skizze, die ich zuerst berechnen, welche Farben müssen auf und schreiben Sie es in ein kleines Array von Bytes (mit drei am weitesten rechts liegenden Bits verwendet), dann senden Sie die vorbereitete Werte zu den LEDs entsprechend. Hier werden Code-Schnipsel:

Byte-Zubereitung:

für (k = 0;
k < 15; k ++) disp15 [k] = 0; Deaktivieren Sie alle bytes

für (k = 1; k < 6; k ++)

{

Wenn ((hour%6) >(k-1)) {disp15 [k-1] = B100; disp15 [k + 4] = B100; disp15 [k + 9] = B100;};

}

Wenn (Minute < 16) für (k = 0; k

anderes

Wenn (Minute < 31)

{für (k = 0; k < 16; k ++) disp15 [k] | = B010;

für (k = 0; k <(minute-15); k ++) disp15 [k] | = B001;}

anderes

Wenn (Minute < 46)

{für (k = 0; k < 16; k ++) disp15 [k] | = B001;

für (k=(minute-30); k < 15; k ++) disp15 [k] | = B010;}

für andere (k=(minute-45); k < 15; k ++) disp15 [k] | = B001;

LED einschalten:

 for ( k=0; k<15; k++){ switch (disp15[k]) { case B000: setRGBpoint(k, 0, 0, 0); break; case B100: setRGBpoint(k, 3600, 0, 0); break; case B010: setRGBpoint(k, 0, 3000, 0); break; case B001: setRGBpoint(k, 0, 0, 3600); break; case B110: setRGBpoint(k, 1800, 1200, 0); break; case B011: setRGBpoint(k, 0, 2000, 1500); break; case B101: setRGBpoint(k, 1900, 0, 1700); break; case B111: setRGBpoint(k, 1200, 1000, 1000); break; } } 

(2) die Uhr

Verwenden Sie nicht die Bibliothek Time.h. Während es die Zeit aus dem externen RTC-Chip bekommen kann, ist es mit unnötigen Dingen überfüllte: es verwandelt Ihre Arduino in eine Uhr auch Essen, Ressourcen und Speicher (etwa 5 Kb es in der Tat!). Einfach bekommen Sie die benötigten Funktionen aus ihm heraus zu und nur wire.h Bibliothek.

Das sind die geretteten Funktionen, die Sie benötigen:

 byte bcdToDec(byte val){ return ( (val/16*10) + (val%16) ); } 
 byte decToBcd(byte val) { return ((val/10*16) + (val%10)); } 
 void getTime () { Wire.beginTransmission(0x68); Wire.write(byte(0)); Wire.endTransmission(); Wire.requestFrom(0x68, 3); second = bcdToDec (Wire.read()); minute = bcdToDec (Wire.read()); hour = bcdToDec(Wire.read())%12; //12 hour time } 
 void setTime() { Wire.beginTransmission(0x68); Wire.write(byte(0)); Wire.write(decToBcd(second)); Wire.write(decToBcd(minute)); Wire.write(decToBcd(hour)); Wire.write(byte(0)); Wire.endTransmission(); } 

Vergessen Sie nicht, #include und Wire.begin(); im setup() und Sekunde, Minute und Stunde Variablen deklarieren.

(3) eine Schaltfläche

Es wird empfohlen, eine Schaltfläche hinzufügen, um die RGB-Uhr: Es kann für Clock Setup oder Visualisierung Modusänderungen nützlich sein, wenn Sie mehr als eine haben. In meinem Projekt dient die Schaltfläche "Modi ändern (kurze Press), Einrichtung (lange Press, 1 Sekunde) und Helligkeit Setup (noch längere Press, 2 Sekunden). Es gibt auch eine Orientierung-Setup (Auswahl, welche Seite der Uhr auf der Unterseite) – durch zwei kurze Pressen, gefolgt von einem langen eingeschaltet ist. Um die Sache einfacher können Sie erwägen, mehr als eine Taste.

Dies führt zu einer Frage der Kombination von Zeitvisualisierung mit warten auf einen Knopf drückt. Die richtige Programmierung Antwort (die Schaltfläche einen Interrupt zuweisen) ist wiederum nicht unbedingt richtig, in unserem Fall. Was passiert, wenn Sie lesen einige Sensor – zum Beispiel ein Fotowiderstand – um das Gerät Verhalten ändern möchten? Was passiert, wenn Sie das Gerät mit einer IR-Fernbedienung steuern möchten?

Dies ist nicht eng mit bestimmten einfaches RGB Uhr Projekt dieser instructable ich kurz werden. Die Visualisierung Routinen in meinen Projekten sind nicht geloopt an sich selbst: sie nur eine Anzeige einrichten und dann wieder Kontrolle in den wichtigsten loop()-Zyklus, die Sachen wie Check-Tasten oder Sensoren oder irgendetwas anderes, dann Schleifen, und ruft die Visualisierung wieder. Ich benutze eine globale Variable ModeCounter behalten Sie den Überblick der aktuellen Visualisierung Position für animierte Modi (es ist im Grunde das gleiche wie for(,,,), aber ohne die geschlossene Schleife). Die Details sind wirklich die Angelegenheit für einen anderen Artikel, hoffe, dieser kleine Ausschnitt wird helfen (und wieder, fühlen Sie sich frei, Fragen zu stellen).

In Verbindung stehende Artikel

LED-Ring-Uhr mit Arduino

LED-Ring-Uhr mit Arduino

Beobachten des Pchretien Fibonacci Uhr letzte Woche, habe ich beschlossen meine LED Ring Uhr Projekt freigeben.Wie Sie sehen können, dass die Zeit auf zwei WS2812 LED-Ringe dargestellt wird.Im äußeren Ring gibt es 24 LEDs, es zeigt die Stunden von 0
Eine vernetzte LED Strip Controller mit Arduino und Android

Eine vernetzte LED Strip Controller mit Arduino und Android

ich bin fasziniert von Lichtereffekt seit Kind und einmal gefunden auf Ebay eine billige multicolor LED Strip habe suchte ich wie sie auf der Suche nach einem Ethernet aktiviert steuern, das macht die Streifen eine Reihe von vernetzten Objekt mit der
Plattenspieler-LED RGB-Uhr

Plattenspieler-LED RGB-Uhr

Ich mag Plattenspieler. Nicht nur wie sie aussehen, sondern deren Komponenten, deren Kabel, ihre Schalter, ihre Zähne. Ich mag sie so sehr, dass ich eins zu eins von meinen Wänden, als ein Kunstwerk hängen würde. Und wenn Sie das wollen, dann warum n
Machen Sie eine Mini-LED-Sirene (angetrieben von Arduino!)

Machen Sie eine Mini-LED-Sirene (angetrieben von Arduino!)

Dies ist eines der ersten Projekte ich mit Arduino habe. Es ist eine kleine Sirene mit einer LED, die verblasst und blinkt, ein- und ausschalten. Es zeigt grundlegende Verwendung von LEDs und Lautsprecher. Überprüfen Sie auch diese Artikel: 8-polige
RGB LED Strip Schaltung mit Arduino

RGB LED Strip Schaltung mit Arduino

Diese Instructable umfasst die Montage einer Schaltung PWM-Ing (Puls breite Modulation) in der Lage eine 9-12v RGB LED-Streifen und Programmierung Arduino durchlaufen eine Reihe von Farben. Ich bespreche wie einen Transistor auf einem Kühlkörper mont
USB-Bronze Glocke markante Uhr (mit Arduino)

USB-Bronze Glocke markante Uhr (mit Arduino)

Ihre Kolleginnen und Kollegen zu ärgern: führen sie zum Betteln Sie um Ihre speziellen PC-Uhr auszuschalten!Diese kleinen Rig Infact über USB-Schnittstellen für Ihre PC-Uhr und Stunden und halbe Stunden Dellen auf echte Bronzeglocke erzeugt. Tolle Sa
Festplatte-Uhr (HDD-Uhr mit Arduino Uno)

Festplatte-Uhr (HDD-Uhr mit Arduino Uno)

Dies ist ein Spaß-Projekt, das einfach und auch kostengünstig durchgeführt werden kann. In diesem instructable wir Schritt für Schritt erklären wie Sie diese wunderschöne POV-Uhr machen.Verwendetes Material:Arduino UnoWinzige RTC-modulULN 2003IR-Diod
Tondetektion RGB Lampe mit Arduino

Tondetektion RGB Lampe mit Arduino

HalloZunächst ist dieses Projekt noch nicht fertig!Ich mache in diesem Projekt eine Lampe mit mehreren Farben mit RGB-Leds. Meine Idee ist zu versuchen, lassen die Lampe, die Farbe zu ändern, wenn es einen Ton im Bereich erkennt. Wenn Sie von den wec
Einfache LED Party Lichtleisten mit Arduino

Einfache LED Party Lichtleisten mit Arduino

Inspiriert vonProjekt von GreatScottLabAll diese Teile konnte ich nicht finden, so dass ich eine Bremse Board für MSGEQ7 Chip bestellte und es in meinem bauen benutzte. Es hat auch 3 MOSFETS für RGB led Streifen.MSGEQ7 ist ein 7-Band Graphic Equalize
Lineare Uhr mit Arduino + DS1307 + Neopixel: Wiederverwendung von Hardware.

Lineare Uhr mit Arduino + DS1307 + Neopixel: Wiederverwendung von Hardware.

Aus früheren Projekten hatte ich ein Arduino UNO und ein Neopixel LED-Streifen links und wollte etwas anderes machen. Da Neopixel Streifen 60 LEDs hat, gedacht, um es als eine große Uhr verwenden.Um die Stunden anzuzeigen, wird eine rote 5-LED-Segmen
Groß, automatische Dimmen, Zimmer Uhr (mit Arduino und WS2811)

Groß, automatische Dimmen, Zimmer Uhr (mit Arduino und WS2811)

Ersten Hallo Instructables.Dies ist mein erster Kontakt mit:InstructablesArduinoProgrammierbare LEDAlso bitte nicht Trow Felsen bei mir für Noobish Fehler.Dabei, dass ich warte, reiben Sie Ihre Kommentare mit Interesse und ich bin offen für jede Anre
Programmieren einer ATtiny44/45/84/85 mit Arduino

Programmieren einer ATtiny44/45/84/85 mit Arduino

Dieses Tutorial gibt enthält die Schritte zum Einrichten, programmieren und Testen einer ATtiny44/45/84/85 mit einem Arduino. Es ist auch im Allgemeinen einige Erklärungen, das Innenleben von AVR-Chips bietet.Schritt 1: AVR und ISP erklärt Viele Tuto
8 x 8 x 8 LED-Würfel mit Arduino Mega (+ Sound + PS Controller + Spiel)

8 x 8 x 8 LED-Würfel mit Arduino Mega (+ Sound + PS Controller + Spiel)

Dies ist ein instructable basiert auf der Cubevon Chr (SuperTech-IT, (und von Das-labor.org, (http://www.das-labor.org/wiki/Borg3d_Bauanleitung...)aber ich denke, die besser und einfacher.Ich begann dieses Projekt ohne Fachkenntnisse aus Toprogrammin
4 x 4 x 4 interaktive LED-Würfel mit Arduino

4 x 4 x 4 interaktive LED-Würfel mit Arduino

um meine 4 x 4 x 4 erklären interaktive LED-Cube vor, ein bisschen mehr klar veröffentlicht, ich werde versuchen, mein ersten Schritt für Schritt instructable machen.Dieser 4 x 4 x 4-Würfel ist interaktiv mithilfe der ersten vier Ecke LEDs als LEDs s