Een 15-LED RGB klok met Arduino kern (3 / 5 stap)

Stap 3: Software overwegingen

Ik zal niet bieden de volledige sketch in hier omdat, in de eerste plaats werd ontwikkeld voor de specifieke aangepaste hardware en dus niet zal werken met uw apparaat en ten tweede omdat er geen rocket science daar is – de fundamentele RGB klok is vrij eenvoudig te (aarzel niet om te vragen of u problemen, hoewel hebt). Er zijn echter enkele punten waarmee waard het vermelden.

1. het doen van RGB-recht

De RGB-klok geeft tijd door het enkel mengen basiskleuren – rood, groen en blauw. Gezien het feit dat elke basiskleur wordt gedreven door zijn eigen gegevenskanaal lijkt de weg naar dit programma vrij eenvoudig-gewoon weer op rood voor uren, dan groen en blauw voor de notulen. Kleur mengen zal worden gedaan door de LEDs zelf. Eenvoudig, juist?

Verkeerd!

Hoewel deze oplossing ziet er uitstekend uit programmering oogpunt, die het is niet dat goed als visuele esthetiek en stroomverbruik worden beschouwd. Een RGB-LED is in wezen drie LEDs in één pakket. Dit betekent dat als rood wordt weergegeven, is slechts één LED werken. Als er wordt overgeschakeld naar geel, twee LED's zijn ingeschakeld, en met wit alle drie zijn glanzend. Geel is dus twee keer helderder dan elke basiskleur en wit is drie keer helderder. Dit echt niet mooi (en dat is een van de redenen HSV model mag nooit worden gebruikt met LEDs, maar dat is een ander verhaal voor een toekomstig artikel) en het maakt gebruik van te veel macht-in feite, wanneer alle 15 LEDs zijn wit (op 5:30) het apparaat zal verbruiken 900mA en zelfs uit een USB-poort werkt niet (500 mA).

De andere reden die je moet 'hand-pick' de kleuren het het feit dat de LEDs niet kleur-gekalibreerd en verschillende zijn trossen kan verschillen in de manier waarop die ze uitgang dezelfde kleuren. Het is een goed idee om te doen sommige kleurkalibratie met de hand om de exacte kleur tinten die je wilt, zelfs wanneer u te met schijnbaar eenvoudige 7 kleuren maken.

Hoe dan ook, het is beter om elke LED individueel met zorgvuldig voorbereide waarden inschakelen. In mijn schets die ik eerst berekenen welke kleuren moeten worden op en schrijf het in een kleine matrix van bytes (met de drie meest rechtse bits gebruikt), en vervolgens de bereid waarden verzenden de LEDs dienovereenkomstig. Hier zijn codefragmenten:

Byte voorbereiding:

voor (k = 0;
k < 15; k ++) disp15 [k] = 0; Schakel alle bytes

voor (k = 1; k < 6; k ++)

{

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

}

Als (minuut < 16) voor (k = 0; k

anders

Als (minuut < 31)

{voor (k = 0; k < 16; k ++) disp15 [k] | = B010;

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

anders

Als (minuut < 46)

{voor (k = 0; k < 16; k ++) disp15 [k] | = B001;

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

anders (k=(minute-45); k < 15; k ++) disp15 [k] | = B001;

LED's inschakelen:

 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. de klok

Gebruik niet de Time.h bibliotheek. Terwijl de tijd uit de externe RTC-chip krijgen kan, het is overstuffed met overbodige dingen: het draait je Arduino in een klok ook eten van middelen en geheugen (ongeveer 5 Kb van het in feite!). Gewoon de benodigde functies eruit en wire.h bibliotheek alleen gebruiken.

Dit zijn de geborgen functies die je nodig hebt:

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

Vergeet niet om #include en Wire.begin(); in Setup en ten tweede, minuut en uur variabelen declareren.

3. een knop

Het is aanbevolen om een knop toevoegen aan de RGB-klok: op annuleerteken zitten nuttig voor klok setup of visualisatie modus wijzigingen hebt u meer dan één. In mijn project wordt de knop gebruikt voor modi wijzigen (kort indrukken), tijd setup (lang indrukken, 1 seconde) en helderheid setup (zelfs langer press, 2 seconden). Er is ook een opstelling van de richting (te selecteren welke kant van de klok aan de onderkant is)-het is ingeschakeld door twee korte persen, gevolgd door een lange. Zaken eenvoudiger dat kunt u overwegen met behulp van meer dan één knop om te maken.

Dit leidt tot een vraag van het combineren van tijd visualisatie met wachten op een knop drukt. Nogmaals, de juiste programmering antwoord (een interrupt toewijzen aan de knop) is niet noodzakelijkerwijs goed in ons geval. Wat als u wilt lezen enkele sensor – bijvoorbeeld een fotoweerstand – als het gedrag van het apparaat wilt wijzigen? Wat als u wilt om het apparaat met een externe IR te controleren?

Als dit is niet strikt gerelateerd aan het bijzonder eenvoudige RGB klok project van dit instructable zal ik kort. De routines van de visualisatie in mijn projecten zijn niet een lus op zichzelf: zij enkel opstelling een weergave en vervolgens de besturing wordt teruggegeven aan de belangrijkste loop cyclus die spullen zoals het controleren van de knoppen of sensoren of iets anders, dan loops en roept de visualisatie opnieuw. Ik gebruik een globale variabele modeCounter om de huidige positie van de visualisatie voor geanimeerde modi (het fundamenteel is het zelfde als for(,,,) maar dan zonder de ingeperkte lus) bij te houden. De details zijn echt de zaak voor een ander artikel, hoop dit kleine fragment zal helpen (en nogmaals, voel je vrij om vragen te stellen).

Gerelateerde Artikelen

Een Networked LED Strip Controller met Arduino en Android

Een Networked LED Strip Controller met Arduino en Android

ik ben fascinerende van verlichting effect sinds kind en eenmaal gevonden op Ebay een goedkope multicolor LED strip ik ben begonnen op zoek hoe besturingselement het, op zoek naar een Ethernet ingeschakeld besturingselement dat maakt de strips een se
RGB LED Strip Circuit met Arduino

RGB LED Strip Circuit met Arduino

Dit Instructable heeft betrekking op de vergadering van een circuit PWM-ing (pulse breedte modulerende) staat een 9-12v RGB LED-strip en programmeren van een Arduino aan cyclus door een scala aan kleuren. Ik zal bespreken hoe te monteren een transist
E-mail controleren klok met Arduino Yun en hoe ongelezen E-mails terug te keren als een geheel getal.

E-mail controleren klok met Arduino Yun en hoe ongelezen E-mails terug te keren als een geheel getal.

In deze video zullen we gebruiken een Arduino Yun (of leonardo met een wifi-schild) om te controleren uw e-mail account (of gekozen label) en retourneert het aantal ongelezen e-mails als integer worden gebruikt in een ander project of (in dit geval)
LED ring klokje met Arduino

LED ring klokje met Arduino

Kijken naar de pchretien van Fibonacci klok vorige week, besloten heb ik om het delen van mijn LED-ring klok-project.Zoals u dat de tijd wordt weergegeven op twee WS2812 LED ringen zien kunt.In de buitenste ring zijn er 24 LED's, toont de uren van 0
Klok van de harde schijf (HDD klok met Arduino Uno)

Klok van de harde schijf (HDD klok met Arduino Uno)

Dit is een leuke project dat kan voordelig ook. In dit instructable zullen we uitleggen stap voor stap hoe te maken van deze mooie POV klok.Gebruikt materiaal:Arduino Uno,Tiny RTC modul,ULN 2003,IR diode en transistor van IR (gebruikt als een sensor,
LED Rubiks kubus met Arduino

LED Rubiks kubus met Arduino

In dit instructable ik zal je laten zien hoe u kunt bouwen uw eigen LED Rubiks kubus. Dit project werd gedaan voor een inleidende Elektronicacursus aan het Pomona College. Groepen kregen ongeveer twee maanden om een project van hun keuze, de enige ve
USB-brons bell opvallend klok (met Arduino)

USB-brons bell opvallend klok (met Arduino)

Annoy uw medewerkers: leiden hen naar u voor zwenking vandoor uw speciale PC klok bedelen!Deze kleine tuig infact poorten via USB naar uw PC klok en genereert uur en een half uur dings op een echte bronzen klok. Geweldig spul om te brengen in uw kant
Een ATtiny44/45/84/85 met Arduino Program

Een ATtiny44/45/84/85 met Arduino Program

Deze tutorial geeft stapsgewijze instructies instellen, program en testen van een ATtiny44/45/84/85 met een Arduino. Het is ook verstrekt sommige uitleg de binnenwerkingen van AVR chips in het algemeen.Stap 1: AVR en ISP uitgelegd Veel tutorials kunn
LED Kerst trui met Arduino

LED Kerst trui met Arduino

Voor een schoolproject die we moesten maken van een interactief object met Arduino. En omdat het is altijd tijd voor Kerstmis Truien heb ik besloten om deze kleine prototype.Het is een perfecte pop formaat trui! Het is ook super leuke Kerstdecoratie,
Maak een ThinkPad toetsenbord USB-adapter met Arduino

Maak een ThinkPad toetsenbord USB-adapter met Arduino

Onder de business klasse laptops hebben ThinkPads de beste toetsenborden. Zelfs met de wijziging eiland stijl toetsenborden, zou ik zeggen dat ThinkPad toetsenborden nog verslaan alle haar laptop concurrenten handen naar beneden in de afdeling van he
Reset uw circadiane klok "biologische lichaam klok" met Arduino

Reset uw circadiane klok "biologische lichaam klok" met Arduino

Inspiratie voor het opnieuw instellen van uw biologische klok van het lichaam en verbeteren van uw gezondheid en slaap hygiëne met ArduinoEen circadiane klok is niet een klok, die we kijken naar de tijd te vertellen. Het is nogal een tijd keeper en e
TinyDice LED sterven (compatibel met Arduino)

TinyDice LED sterven (compatibel met Arduino)

ik een ATtiny25 om te controleren enkele LEDs gebruikt, het een aantal willekeurig gegenereerd en weergegeven als een dobbelsteen.Het toont eerste lichte reeks, dan de willekeurig getal en het gaat ten slotte om te slapen, verbruiken minder dan 0.1uA
Bouwen van een kat strooisel vak ventilator met Arduino

Bouwen van een kat strooisel vak ventilator met Arduino

een schuilplaats kat kattenbak is een geweldige manier om uw appartement eruit een verblijfsvergunning voor volwassenen in plaats van crazy cat dames. Een verborgen strooisel vak in een kast, onder een gootsteen, of ingebouwd in sommige andere meubel
Zelfgemaakte klok met Arduino

Zelfgemaakte klok met Arduino

Vandaag zal ik u tonen hoe maak je een zelfgemaakte klok met een Arduino!Stap 1: Materialen + Arduino Code SetupMaterialen--SMA420564 7-Segment display-At ten minste 12 Sunfounder jumper kabels-Arduino Uno-Bredboard-2 knoppen-2 220 Ohm weerstanden-Br