Hvis du ser mange film på din pc eller mediecenter, er du sikker på at du har konfronteret lysdilemmet; slukker du helt for alle lys? Holder du dem på fuld blast? Eller bruger du en lysdæmper til at holde en kedelig gul glød et sted? Nå, lider ikke mere.
For mindre end $ 100 kan du oprette et fantastisk belysningssystem, der afspejler, hvad der er på skærmen; hvis videoen er en blå nat scene, lysene vil være blå; når en flamme af orange ild blinker på, så vil dine lys. Velkommen til verden af omgivende RGB belysning.
komponenter
- RGB lys stripe - Dette er en 5 meter stribe RGB LED'er, som kan købes på eBay og afsendes fra Hong Kong for mindre end £ 20 hver. Hvis du køber i elektronikbutikker betaler du af måleren og en spole på 5m koster tre eller fire gange det, så køb online. Disse typer LED-strimler kan ændres til enhver farve, men kun alt på én gang - de kan ikke justeres individuelt.
- 12V strømforsyning - den nødvendige effekt (ampage) afhænger af, hvor mange strimler af LED'er du vil forbinde. Hver meter trækker ca. 0, 6 ampere, men det afhænger af din LEDs tæthed, så sørg for at tjekke din særlige LED strip. 3A ville være tilstrækkeligt til den 5m strimmel, jeg linkede ovenfor, og separate strømforsyninger kan købes for omkring 10 £, hvis du ikke kan kilden et andet sted.
- 3 x MOSFET N transistorer - du kan probaby finde billigere, men jeg købte en pakke med 6 (type STP16NF06FP) for omkring £ 10. Disse bruges til at isolere strømmen fra Arduino - at forbinde strimlerne direkte til Arduino vil fryse det med den mængde strøm, de tegner. Du har brug for 1 MOSFET-transistor pr. LED-farvekanal til rød, grøn og blå.
- Arduino Hvad er Arduino & Hvad kan du gøre med det? Hvad er Arduino & Hvad kan du gøre med det? Arduino er en bemærkelsesværdig lille elektronik enhed, men hvis du aldrig har brugt en før, hvad præcist er de, og hvad kan du gøre med en? Læs mere - Jeg har ikke inkluderet prisen på denne vare, da det antages, at du allerede har en, og der er en række kloner du kan købe, hvis du ikke har råd til en officiel.
De samlede omkostninger var derfor omkring 40 £, ikke inklusive Arduino.
Introduktion
Projektet består af to dele. Først skal vi oprette et grundlæggende Arduino kredsløb, der lytter til kommandoer fra computeren og sætter RGB LED'erne i en passende farve. Det andet indebærer at bruge en ny applikation kaldet Processing og Java på computersiden - for at finde ud af, hvilke farver der aktuelt er på skærmen, gennemsnit dem og output det til den serielle kommunikationsport, som Arduino skal reagere på.
Del 1: Circuit og Arduino
Kredsløbet vi bruger er meget enkelt, som du kan se fra diagrammet nedenfor. LED-strimlen skal forsynes med en hanstik i den ene ende, som du kan placere direkte i brødbrættet.
Din LED-stribe kan variere, men hvis du ser tæt på, vil du se 12v, R, G, B skrevet på skinnerne et eller andet sted. Disse strimler kan faktisk skæres ved disse kobberpunkter (hver 3 lysdioder på dem jeg har), så hvis du vil klippe strimlerne i hjørnerne på dit tv, kan du sikkert gøre det - du behøver ikke bruge hele 5m enten, så du kan have nogle tilbage til et fremtidigt projekt. Tilslut den positive 12v direkte til den eksterne strømforsyning.
MOSFET'erne har tre ben; port, dræn og kilde . Porten er som den elektroniske switch, som Arduino vil styre. Dette bestemmer så strømmen strømmer mellem kilden og drænet. Afløbet af hver MOSFET skal forbindes med jordens arduino og jordens strømforsyning, mens kilden forbinder med LED-stripkanalerne.
Når du har gennemført kredsløbet, skal du downloade og køre denne testkode (oprindeligt fra LadyAda, stifter ændret). Du bør se din LED stripe hvirvel gennem en række farver.
Del 2: Behandling
Download Behandling og kørsel. Du kan blive overrasket over at finde det ser næsten ud som Arduino udviklingsmiljøet; Det skyldes, at Arduino-miljøet var baseret på det, selvom de begge udfører forskellige funktioner. Grib denne kode - oprindeligt af Silicon Republic, men stærkt modificeret af mig for at gøre indstillingerne for skærmstørrelse automatisk og med bedre farverepræsentation - og tag et øjeblik at se over det. Dybest set bruger den en Java-klasse kaldet Robot til at lave et skærmbillede hver 10ms ; det henter derefter alle ulige pixel og gennemsnitlig den samlede farve. Hvis performance er et problem for dig, skal du øge skipValue- variablen til 3 eller 4 for at springe over flere pixels - den samlede effekt skal være den samme, men den løber hurtigere, da den undersøger mindre pixels. Endelig tilføjede jeg et filter, der hjælper med at mætte farven ved at øge maksimumet og mindske de mindst forekomme RGB-værdier (uden at jeg fandt farverne for hvide).
Kør appen; første gang vil du sandsynligvis få en fejl, da den forsøger at få adgang til den forkerte seriel port.
Kontroller fejlfindingsvinduet for en liste over aktuelle serielle porte, og bemærk nummeret ved siden af, hvad din Arduino er tilsluttet. I mit tilfælde på en Mac er USB-forbindelsen port 4. Skift nummer i denne linje til den korrekte port:
port = nyt serielt (dette, serial.list () [4], 9600); // sæt baud rate
Gem og genkør; du bør se et lille vindue pop op - dette repræsenterer den gennemsnitlige farve af alt på skærmen. Start et maleri app eller noget med stærke farver for at teste det, ellers vil det nok kun vise en skum af grå. Stop applikationen, når du er færdig med at teste, da vi har brug for seriel portadgang for at programmere Arduino.
Endelig skal du indlæse denne kode på din Arduino. I stedet for at sende tilfældige farver til LED-strimlen, læser denne kode værdierne fra den serielle port (hvilken behandling er udgang til). Det er ret let at forstå, den eneste vanskelige del kan være brugen af en markør i serielle data:
if (Serial.available()>=4) { if(Serial.read() == 0xff){ red = Serial.read(); green= Serial.read(); blue = Serial.read(); } }
Dette sikrer, at vi læser de korrekte byte værdier - Processing app udsender en markør som et "breakpoint" mellem hvert sæt værdier, så Arduino ikke kommer ud af synkronisering og tror, at den grønne værdi er for blå osv.
Når Arduino-koden er uploadet (der skal først være output på LED-strimlen), så kan du indlæse og køre Processing app; straks skal du se dit omgivende lys arbejder.
Her er en video demo om, hvordan det fungerede for mig med nogle tilfældige trippy musikvideoer.
Hvad synes du?! Selv om det ikke er helt så imponerende som noget, der analyserer hver del af skærmen og bruger individuelle LED-pixels, er det meget billigere og meget lysere. Den eneste ulempe ved dette er, at alt skal køres på din mediecenter computer - det vil ikke fungere med regelmæssig tv-udsendelse eller din Xbox 360, for eksempel. Hvis du har problemer, spørgsmål eller forslag, så spørg venligst væk; eller måske link til en video af din færdige opsætning.