En 15-LED RGB klocka med Arduino kärna (3 / 5 steg)

Steg 3: Programvara överväganden


Jag kommer inte ge fullt skissa här eftersom, för det första, den utvecklades för särskilt anpassad maskinvara och så fungerar inte med din enhet och för det andra, eftersom det finns ingen rocket science där – grundläggande RGB klockan är ganska enkel att (är du välkommen att ställa några frågor om du har problem, dock). Det finns dock några överväganden nämnvärt.

1. gör RGB rätt

RGB klockan visar tiden genom att bara blanda grundläggande färger-röd, grön och blå. Med tanke på att varje grundfärg drivs av sin egen datakanal sätt att programmera detta verkar ganska enkelt-aktivera bara röda för timmar, sedan grönt och blått för protokollet. Färgblandning kommer att ske av lysdioder för sig själva. Enkel, rätt?

Fel!

Medan denna lösning ser utmärkt från programmering synvinkel inte är det att bra om visuella estetik och strömförbrukningen är ansedda. En RGB-LED är i huvudsak tre lysdioder i ett paket. Detta innebär att om det visar rött, fungerar endast en LED. Om det växlar till gul, två lysdioder är påslagna och med vita lyser i alla tre. Gul är alltså två gånger ljusare än någon grundläggande färg och vit är tre gånger ljusare. Detta verkligen inte ser bra ut (och det är en av anledningarna till att HSV modellen aldrig användas med lysdioder, men det är en annan historia för en framtida artikel) och den använder för mycket makt – i själva verket, när alla 15 lysdioder är vita (vid 5:30) enheten förbrukar 900mA och kommer inte ens arbeta bort en USB-port (500 mA).

Det andra skälet du måste "handplocka" färgerna det att lysdioderna inte är färg-kalibrerad och olika klasar kan variera kraftigt på det sätt de utgång samma färger. Det är en bra idé att göra vissa färgkalibrering för hand för att få exakt färgnyanser du vill, även när du arbetar med till synes enkla 7 färger.

Hur som helst, det är bättre att vända på varje LED individuellt med vällagad värden. I min skiss jag först beräkna vilka färger måste vara på och skriva det i en liten mängd byte (med tre längst till höger bitar som används), sedan skicka beredda värdena till lysdioderna därmed. Här är kodstycken:

Byte förberedelser:

för (k = 0;
k < 15; k ++) disp15 [k] = 0; Rensa alla byte

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

{

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

}

om (minut < 16) för (k = 0; k

annat

om (minut < 31)

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

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

annat

om (minut < 46)

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

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

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

LED-lampor tända:

för (k = 0; k < 15; k ++)
{
Switch (disp15[k])
{
fall B000: setRGBpoint (k, 0, 0, 0); bryta;
fall B100: setRGBpoint (k, 3600, 0, 0); bryta;
fall B010: setRGBpoint (k, 0, 3000, 0); bryta;
fall B001: setRGBpoint (k, 0, 0, 3600); bryta;
fall B110: setRGBpoint (k, 1800, 1200, 0); bryta;
fall B011: setRGBpoint (k, 0, 2000, 1500); bryta;
fall B101: setRGBpoint (k, 1900, 0, 1700); bryta;
fall B111: setRGBpoint (k, 1200, 1000, 1000); bryta;
}
}

2. klocka

Använd inte Time.h biblioteket. Medan det kan få tid ur den externa RTC chipet, det är overstuffed med onödiga saker: det förvandlar din Arduino till en klocka, äta resurser och minne (ca 5 Kb av det i faktum!). Bara få de nödvändiga funktionerna ur det och använda wire.h biblioteket bara.

Dessa är de bärgade funktioner behöver du:

byte bcdToDec(byte val)
{
tillbaka ((val/16 * 10) + (val % 16));
}

byte decToBcd(byte val)
{
tillbaka ((val/10 * 16) + (val % 10));
}

void getTime)
{
Wire.beginTransmission(0x68);
Wire.write(byte(0));
Wire.endTransmission();
Wire.requestFrom(0x68, 3);
för det andra = bcdToDec (Wire.read());
minuter = bcdToDec (Wire.read());
timme = bcdToDec(Wire.read()) % 12. 12 timmars tid
}

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();
}

Glöm inte att #include och Wire.begin(); i setup() och förklara det andra minut och timme variabler.

3. en knapp

Det rekommenderas att lägga till en knapp i RGB klockan: det kan vara användbart för clock setup eller visualisering läget ändras om du har mer än en. I mitt projekt används knappen för lägen förändring (kort tryck), installation (långt tryck, 1 sekund) och ljusstyrka setup (ännu längre press, 2 sekunder). Det finns också en orientering setup (att välja vilken sida av klockan är på botten)-det slås av två kort pressar följt av en lång en. För att göra frågor enklare du använder mer än en knapp.

Detta leder till en fråga om kombinera tid visualisering med väntar en knapptryckningar. Igen, korrekt programmering svar (tilldela ett avbrott till knappen) är inte nödvändigtvis rätt i vårt fall. Vad händer om du vill läsa några sensor – till exempel ett fotomotstånd – för att ändra enhet? Vad händer om du vill styra enheten med en IR-fjärr?

Eftersom detta inte är strikt relaterade till viss enkel RGB klocka projektet detta instructable jag ska vara kort. Visualisering rutinerna i mina projekt är inte loopas i själva: de bara sätta upp en skärm och sedan tillbaka kontrollen till den viktigaste loop() cykel som gör sånt kontroll knappar eller sensorer eller något annat, då loopar och kallar visualisering igen. Jag använder en global variabel modeCounter att hålla reda på den aktuella visualisering positionen för animerade lägen (i princip är det samma som for(,,,) men utan innesluten slingan). Detaljerna är verkligen frågan för en annan artikel, hoppas denna lilla snutt hjälper (och igen, Välkommen att ställa frågor).

Se Steg
Relaterade Ämnen

LED ring klocka med Arduino

Titta på pchretien's Fibonacci klocka förra veckan, beslutat jag att dela mitt LED ring klocka projekt.Som ni kan se tiden representeras på två WS2812 LED ringar.I den yttre ringen finns 24 lysdioder, det visar timmar från 0 till 24. De olika färgern...

8 x 40 LED matris klocka med kalender med fjärrkontrollen

Idag ska jag visa hur man gör rullning och animerade LED matris klocka med kalender för arduino. Detta projekt har följande funktionerVad är nytt i Version 2.0Extra IR-fjärr baserade justera tid/datumSmidig animationMånga buggfixar i programvaraVersi...

LED Rubiks kub med Arduino

I detta instructable jag ska visa dig hur du kan bygga din egen LED Rubiks kub. Detta projekt var gjort för en inledande elektronik kurs på Pomona College. Grupper fick cirka två månader att slutföra ett projekt som de valt, det enda kravet är att pr...

USB-brons sätta en klocka på slående klocka (med Arduino)

irritera dina medarbetare: leda dem in i ber dig att stänga av din speciella PC-klocka!Denna lilla riggen infact gränssnitt via USB till din PC-klocka och genererar halv timmar dings på en riktig brons sätta en klocka på. Bra grejer i din office och...

Stor, auto dim, rum klocka (med arduino och WS2811)

Första Hej instructables.Detta är min första kontakt med:InstructablesArduinoenProgrammerbara lysdioderSå du inte trow stenar på mig för noobish misstag.Att hålla det i åtanke jag väntar att läsa dina kommentarer med riv intresse och jag är öppen för...

Kontrollera en RGB ledde med Arduino och bearbetning

detta instructable (min första inte mindre) visar hur man styr en RGB ledde med bearbetning och arduino.Den viktiga funktionen att vara färg markeras genom att klicka på en bild, RGB-värdet för den pixel du klickar på bearbetas och skickas till den a...

Hemmagjord klocka med Arduino

Idag kommer jag visa dig hur man gör en hemmagjord klocka med en Arduino!Steg 1: Material + inställningar för ArduinoMaterial--SMA420564 sju Segment display-Vid minst 12 Sunfounder startkablar-Arduino Uno-Bredboard-2 knappar-2 220 Ohm motstånd-Källan...

LED Christmas sweater med Arduino

Vi fick göra interaktiva objekt med Arduino för ett skolprojekt. Och eftersom det är alltid dags för jul-tröjor jag beslutat att göra en denna lilla prototypen.Det är en perfekt docka storlek tröja! Det är också super söt Juldekoration eller en rolig...

Återställer ditt circadian klocka "biologiska organ klocka" med Arduino

Inspiration till lägga rätt din biologiska kroppsklocka och förbättra din hälsa och sömn hygien med ArduinoEn dygnsrytm klocka är inte en klocka som vi tittar på att tala om tid. Det är snarare en tid keeper och en oscillator inom vår kropp organisme...

RGB LED Strip krets med Arduino

Detta Instructable omfattar montering av en krets kan PWM-ning (puls bredd modulerande) en 9-12v RGB LED strip och programmering en Arduino att cykla genom en rad olika färger. Jag kommer att diskutera hur man montera en transistor till en kylfläns &...

Hårddisk Clock (HDD klocka med Arduino Uno)

Detta är ett roligt projekt som kan göras enkelt och också billigt. I detta instructable vi kommer att förklara steg för steg hur man gör denna vackra POV klocka.Använda materialet:Arduino Uno,Tiny RTC modul,ULN 2003,IR diod och IR transistor (använd...

Ren binär LED väggklocka med Arduino

Min binära Väggklocka är inspirerad från många binära klockor jag hittade på InstructablesLänkar:Lilypad Arduino klocka:Binär klocka:Plus några andra binär klocka instructables.Men...Vad jag fann saknas i dem var omfattningen och storleken på display...

En nätverksansluten LED Strip Controller med Arduino och Android

jag är fascinerande från belysningen verkställer sedan barn och en gång hittade på Ebay en billigt multicolor LED strip har jag börjat titta hur kontroll det, letar efter en Ethernet aktiverat kontroll som gör remsorna en uppsättning nätverk objekt,...

Bass lyhörd RGB lysdioder med Arduino

Denna tutoiral visar dig hur du använder Arduino och styra en uppsättning av lysdioder med musik från datorn. Denna handledning kräver:-Arduino (jag använde en leonardo)-liten skärbräda med bygel ledningar (kit är det bästa)-rgb led strip (jag använd...

E-checkar klocka med Arduino Yun och hur returneras olästa e-postmeddelanden som ett heltal.

I denna video vi kommer att använda en Arduino Yun (eller leonardo med en wifi sköld) för att kontrollera din e-post konto (eller valda etikett) och returnera antalet olästa e-postmeddelanden som ett heltal som ska användas i ett annat projekt eller...

LED dör med Arduino

detta projekt är en dö som du kommer att göra med 7 lysdioder, 8 resistorer och en liten switch. När du konstruerar dö, du kommer att ansluta den till en Arduino hårdvara att ladda ner programmet och du kan använda matrisen genom att manipulera en li...

Kommer det att leda elektricitet? med Arduino

Åh nej! Ledningar som upprätthålla stationens syre nätaggregat har försvunnit. En rogue asteroid kraschade och skära rent igenom trådarna! Vi kunde förlora livet-stöd i pod 6 om du inte agerar snabbt. Rummet har du ligger nära skadan och är full av a...

8-LED Larson Scanner med Arduino

detta är ett enkelt sätt att göra en Larson Scanner med en Arduino, med extra förmåga att scanningen klassar med en potentiometer.Minsta reservdelslista:(1) Arduino Duemilanove (eller motsvarande / kompatibel)(8) LED av ditt val. Jag använde 5mm T1-3...

LED blinkar ljus med Arduino

måste du först installera Arduino på datorn och har startpaket.Steg 1: material Arduino UNOUSB-sladdWireResistor 300 ohmLED ljusSkärbrädaSteg 2: montering Plug USB till din datorFå skärbrädaSätta ljus under den röda linjenLägga en tråd under första p...