Geketend mood light met behulp van krachtige RGB LED's (9 / 11 stap)

Stap 9: Aansluiten van de master lamp


De slave-lampen werken niet zonder de meester van het bestuur. Het kan een goed idee om eerst de meester lamp werkt, voor het monteren van alle de slaven, maar moet heb ik u gezegd dat eerdere should't I. Oh goed, ik ben zeker dat u bedacht dat uit jezelf.

Het enige ding verschillend van de master lamp naar de slave-lampen is dat er een verschillende microcontroller is in (of u kunt ook arduinos in alle slave lampen en de code (aangepast) slaaf uploaden naar de slave-lampen). Het is ook de enige lamp die beschikt over een USB-aansluiting en een IR-ontvanger.
Ik de originele mini-USB-aansluiting van het bord verwijderd en gebruikt wire wrap kabels (alle andere kleine kabels zal wel goed) om opnieuw aan met 5cm lange kabel ertussen. Ik gebruikte de dremel gereedschap om een gaatje te maken in de lamp aan de USB-aansluiting, zodat ik de master software bijwerken kunt zonder het openen van de lamp. Aan de andere kant maakte ik een gat groot genoeg voor de IR ontvanger maar klein genoeg zodat van buitenaf het net ziet als een kleine zwarte knop eruit. Het is een goed idee om het plaatsen van de IR ontvanger over in het midden tussen de naad van de twee helften en de onderkant van de lamp.
De IR ontvanger verbinden met 5V, GND en de output signaal naar pin op de arduino digitale pin 8 (die is verbonden met de timer1 input capture-interrupt).

Haak de transistor NFET aan de Arduino: de poort verbinden met digitale pin 13 en de bron naar GND. De afvoer verbindt met de negatieve ingang van de ventilator. De positieve inbreng van de ventilator aansluiten van de Arduino 5V pin. Ja, het is 'n fan van 12V maar op 5V creëert voldoende luchtstroom te houden van de LED gekoeld en het maakt bijna geen geluid. Als uw ventilator niet op 5V werkt, aansluiten op de 12V-lijn (die ook geldt voor alle lampen van de slaaf door de manier).

Gebruik twee 1,5 k Ohm weerstanden en sluit ze als pullups: ene SDA (analoge pin 4) naar 5V en ene SCL (analoge pin 5) naar 5V. Dit zijn de pullups voor de I2C communicatie bus. Als u ze vergeten, werkt de seriële communicatie niet. Gebruik geen van de Arduino interne pullups, ze zijn te zwak (negeren van deze zin, als je niet over de interne pullups van de Arduino weet, ze worden geactiveerd door de software en het maakt niet uit als ze worden geactiveerd of niet als u externe pullups soldeer).

Het PWM-signalen worden gegenereerd met behulp van timer1 (rood en groen) en timer2 (blauw). De pinnen gecontroleerd zijn digitale pin 9 (rood), digitale pin 10 (groen) en digitale pin 11 (blauw).
Timer1 is een 16-bits timer, waardoor u 65'536 kleur stappen, dat meer dan genoeg is (boven 12 bit u ziet geen "kleur springt" wanneer dimmen) maar timer1 is slechts een 8 bits timer. In het begin had ik zowel uitgevoerd in 8 bits modus maar die keek een beetje crappy omdat onze ogen logaritmische zijn en de LED lineair is, wat betekent dat u een overgang van 2 naar 4 waarnemen als een grotere verandering in helderheid dan een verandering van 200 tot en met 255. In werkelijkheid de 256 helderheid stappen, wanneer in een logaritmische manier gedaan alleen geven u over 12-13 kleurwaarden (in theorie, in werkelijkheid is het een paar meer) per kanaal, resulterend in een totaal van 13 ^ 3 = 2197 te onderscheiden kleuren. Klinkt als een hoop, maar het is niet.

Ik ga een beetje in detail treden over de code nu, als u niet bekend bent met hardware timing en timer spullen, overslaan.
Ik heb het web gezocht voor een paar uur proberen te vinden van een software-methode om te verhogen van de 8 bits timer, maar alle van hen voeren jitter fouten ten gevolge van de vertraging van de software, die leidt tot te frequent knipperen van een led dat niet aanvaardbaar is. Toen ik ging zitten en schreef mijn eigen code om te krijgen een hogere resolutie. Ik vond dat voor de lagere waarden, software vertragingen zijn te traag, ook interrupts niet snel genoeg (we hebben enkele cpu klok precisie hier). Het zou misschien zijn gedaan in assembler, maar ik wilde niet te gaan op die weg, nee meneer.
In plaats daarvan gebruikte ik een truc (die ik bij toeval ontdekt, en nu ben erg trots op) die de timers niet onmiddellijk bijwerken de vergelijk overeenkomen met registreren maar hebben een buffer, actualisering ervan alleen op de volgende timer overflow. Met dit in gedachten, ik gebruik de overflow timer2 timers te synchroniseren en een up naar 16-bits timer uit elke 8 bits timer kan maken, maar kan ook hebben lijkt het 12bits of 13bits. Dit voegt een heleboel CPU-belasting, maar de meester lamp alleen moet luisteren naar de IR, het verzenden van opdrachten uit en het genereren van PWM, die alle meestal in hardware wordt gedaan, dus er is genoeg tijd doen kleur berekeningen en spullen in de tussentijd. Met een arduino CPU klok van 16Mhz en een timer prescaler van 8 (met een prescaler van 1 de processorbelasting elke 256 timer teken te hoog als gevolg van interrupts krijgt) is de frequentie PWM 2MHz/(2^13) = 244 Hz (voor de slave-lampen er slechts 122 Hz sinds ze draaien op 8 Mhz) die is prima (100 Hz is het minimum om de flikkering gratis lichten).

Goed, dus we een software-hardware combinatie PWM-uitgang met een 13-bits resolutie hebben, geven ons 8191 lineaire kleur stappen voor elk licht, dit geeft ons 254 logaritmische stappen (de resolutie is eigenlijk te hoog en de lagere waarden gebruiken hetzelfde aantal timer teken) resulteerde in 16'387 ' 064 verschillende kleuren! Dit geeft mooi en glad kleurwijzigingen.

OK, genoeg over de code en kleur theorie. Haak de 12V-voeding aan de arduino. Neem de machtskabel en zet het via een van de twee kleinere gaten in de bodem van de lamp. Sluit deze aan op de AC-ingang van de voedingsspanning van 12V, zorg ervoor dat u warmte krimpen slangen op de gesoldeerd gewrichten van de kabel. Alle elektronica mooi rangschikken in de twee houten schalen en repareren met lijm, zoals beschreven voor de slave-lampen. Dubbel te controleren dat de 230V-lijnen zijn beveiligd en goed geïsoleerd. Nu u het kunt aansluiten (ik gebruik een verlengsnoer met een schakelaar, ook van IKEA). Wees nu extra voorzichtig heeft de lamp nog sommige plaatsen (op de voeding) met blootgestelde 230V delen.

Het werkt niet zoals verwacht? Gotcha. U wilt commentaar uit alle updatelamp(x); opdrachten in de code van de arduino (ook van alle functies!), met x wordt van 1 tot en met 5 (alleen update lamp 0, de kapitein). De opdrachten van de updatelamp wacht tot het juiste antwoord van de slaaf en probeer te verzenden van opdrachten als het mislukt, zodat het programma in een oneindige lus valt. Kun je in een time-out in de opdracht updatelamp indien gewenst, ik wilde niet te doen dus geen lamp alle kleuren slaat.
Oh en terwijl je bezig bent de meester lamp, in drie pulldown (met GND) weerstanden van laat zeggen ongeveer 2k ohm op elk van de PWM signaal pinnen. Ik vergat om dat te doen en tijdens het opstarten van de arduino de master lamp knippert in helder wit licht voor ongeveer een halve seconde, waarin zij would't als ik niet die pulldowns vergeten had...

Als alles werkt, is het nu tijd om de aansluiting van de slaven. Ik hoop dat u hebt gemarkeerd die u geprogrammeerd met het adres van de slaaf nummer één.

Opmerking: Ik weet dat er zijn nog enkele bugs in de code als u vinden, gelieve te aan me rapporteren (en als je hoe het weet te repareren, vertel me). Ook mijn programmering vaardigheden zijn matig op zijn best, en de code is een puinhoop, maar ik geprobeerd toe te voegen in commentaren op de meeste van de lijnen (mogelijk in het Duits in sommige delen, sorry voor dat). Het is nog steeds een work in progress (welke code is niet?) en niet volledig opgeschoond.
Aanvullingen of suggesties aan de code zijn welkom.

Gerelateerde Artikelen

Met behulp van een RGB-LED te detecteren kleuren

Met behulp van een RGB-LED te detecteren kleuren

I 'm gonna Toon u hoe u kunt een RGB LED en een fotocel cd's als de sensor van een kleur voor een micro-controller. Ik zal illustreren de methode om op te halen van een kleur met behulp van Arduino, en ik zal u tonen hoe u kunt controleren of de kleu
BloodBowl zet teller met behulp van 7-segment LED's

BloodBowl zet teller met behulp van 7-segment LED's

dit project was voor een BloodBowl spel beurt counter met zes Charlieplexed 7-segment LED's.Stap 1: Concept Een vriend van mij vroeg me over ideeën voor het bouwen van Bloodbowl beurt teller voor zijn spel. Niet wetende wat dit was, en wat hij wilde,
Auto nacht Lamp met behulp van High Power LEDs

Auto nacht Lamp met behulp van High Power LEDs

dit is een van de zeer nuttige circuits "Auto nacht Lamp met behulp van High Power LEDs" genoemd. Dit is een eenvoudige schakeling die turns ON the LED-lampjes geïnterfacet ernaar op moment van de nacht en het wordt de verlichting automatisch ui
Arduino Mood Lamp met behulp van BlinkM

Arduino Mood Lamp met behulp van BlinkM

ThinkM is een nieuwe elektronikabedrijf dat nieuwe LED-apparaten die kan bediend vanuit de computer met behulp van een eenvoudige interface programma en connector heeft uitgebracht.In dit Instructable ik zal worden leer je hoe om te controleren van e
Wake-up light (met behulp van de microprocessor gecontroleerd dimmer)

Wake-up light (met behulp van de microprocessor gecontroleerd dimmer)

Winter is kloppen op de deur weer in Europa.Ik haat het opstaan in het donker, dus ik moet een wake-up light...Normale personen zou nu waarschijnlijk hoest de E90, - voor een Wake-Up Light van Philips.Of krijgen van een goedkope rip-off voor E40,-Maa
Met behulp van een RPi een RGB LED

Met behulp van een RPi een RGB LED

Als rahulkar vermeld in zijn tutorial, lijkt LED controle te zijn van de "Hello World" van elektronica. Het is gemakkelijk aan opstelling, leer je veel over de werking van elektronica, en in het einde, heb je een handig stukje hardware te pronke
Weerstand rekenmachine met behulp van RGB LED's

Weerstand rekenmachine met behulp van RGB LED's

Het is gebruikelijk om een heleboel rommelig verschillende weerstanden en u wilt een specifieke waarde maar je de weerstand kleurcode niet onthouden.In dit project heb ik geprobeerd om dit probleem oplossen door het maken van een circuit met behulp v
RGB LED plafond Mood Light met gehackt IR afstandsbediening

RGB LED plafond Mood Light met gehackt IR afstandsbediening

dit instructable documenten het ontwerp en de bouw van een gigantische RGB LED plafondlamp, bestuurd door een gehackte GE-afstandsbediening.Na het bouwen van een paar kleinere RGB lampen, besloten heb ik dat ik wilde zien hoe ver ik kon nemen het con
Rotatie input van Arduino met behulp van LDR (light-dependent resistor) eenheid

Rotatie input van Arduino met behulp van LDR (light-dependent resistor) eenheid

vanuit mijn ervaring, is veel van roterende invoerapparaten in Arduino afhangen van een potentiometer die een variabele weerstand biedt. in dit instructable, zullen we proberen om het zelfde effect met behulp van een LDR, LED en een strook papier die
Garage deur server met behulp van willekeurige upcycled elektronica

Garage deur server met behulp van willekeurige upcycled elektronica

eerste, een grote dank aan al de talloze mensen die ik geleerd van die hun projecten op deze website zetten.  Het heeft zeker een hele wereld aan mij geopend.  Hiervoor heb ik zou hebben nooit gebruikt een soldeerbout, of een multimeter, of gaan krij
Magic Wand POV berichtweergave met behulp van Bluetooth-Module

Magic Wand POV berichtweergave met behulp van Bluetooth-Module

A persistentie van Vision (POV) Wand is een kleine stok als instrument waarmee kan worden weergegeven berichten (volledige woorden) met behulp van slechts 5 LEDS (in dit geval) die knipperen overeenkomstig de persistentie van de visie. Hier hebben wi
Een LED dobbelsteen met behulp van een PIC 16F84 (of 16F88)

Een LED dobbelsteen met behulp van een PIC 16F84 (of 16F88)

Dit is een opnieuw afdrukken van een project dat ik een aantal jaren geleden maakte-ik was trawlvisserij het web, en ontdekte dat anderen had geboekt, dus heb ik besloten om de details hier op instructables.com - zodat anderen kunnen profiteren.Veel
3 x 3 x 3 led kubus met behulp van een 555 timer en een scala van 4020 shift IC - geen programmering (voor de complete beginner zoals ikzelf)

3 x 3 x 3 led kubus met behulp van een 555 timer en een scala van 4020 shift IC - geen programmering (voor de complete beginner zoals ikzelf)

zien van een video van een 8 x 8 x 8 led kubus op you-tube, leidde me naar de instructables website voor de eerste keer, nu ik ben verslaafd. Echter had ik of moet ik zeggen hebben een fundamenteel probleem absoluut geen ervaring of kennis van elektr
Een 3 x 3 x 3 kubus geleid voor de absolute beginner met behulp van een 555 timer en 4020 IC - No Programming

Een 3 x 3 x 3 kubus geleid voor de absolute beginner met behulp van een 555 timer en 4020 IC - No Programming

zien van een video van een 8 x 8 x 8 led kubus op you-tube, leidde me naar de instructables website voor de eerste keer, nu ik ben verslaafd. Echter had ik of moet ik zeggen hebben een fundamenteel probleem absoluut geen ervaring of kennis van elektr