Bygg din egen dynamiske omgivende belysning for et mediasenter
Hvis du ser mange filmer på PC eller mediasenter, er jeg sikker på at du har møtt lysproblemet; slår du helt av alle lysene? Holder du dem på full blast? Eller bruker du en dimmerbryter for å holde en kjedelig gul glød et sted? Vel, lider ikke mer.
For mindre enn $ 100 kan du sette opp et fantastisk belysningssystem som skal gjenspeile hva som er på skjermen. hvis videoen er en blå nattscene, vil lysene være blå; når en brann med oransje brann blinker på, så vil også lysene dine. Velkommen til verden av omgivende RGB-belysning.
komponenter
- RGB lys stripe - dette er en 5 meter stripe med RGB LED som kan kjøpes på eBay og sendes fra Hong Kong for mindre enn £ 20 hver. Hvis du kjøper i elektronikkbutikker betaler du av måleren og en hjul på 5m koster tre eller fire ganger det, så kjøp online. Disse typer LED-striper kan endres til hvilken som helst farge, men bare alle samtidig - de kan ikke justeres individuelt.
- 12V strømforsyning - Kraften (ampere) som kreves, avhenger av hvor mange strimler av lysdioder du vil koble til. Hver meter trekker omtrent 0,6 ampere, men dette avhenger av tettheten av lysdiodene dine, så sørg for å sjekke din bestemte LED-stripe. 3A vil være tilstrekkelig for 5m stripen jeg koblet over, og separate strømforsyninger kan kjøpes for rundt £ 10 hvis du ikke kan kilden et annet sted.
- 3 x MOSFET N transistorer - du kan finne billigere, men jeg kjøpte en pakke med 6 (type STP16NF06FP) for rundt £ 10. Disse brukes til å isolere strømmen fra Arduino - forbinder strimlene direkte til Arduino vil steke den med mengden strøm de trekker. Du trenger 1 MOSFET transistor per LED-fargekanal, for rød, grønn og blå.
- Arduino Hva er Arduino og hva kan du gjøre med det? Hva er Arduino og hva kan du gjøre med det? Arduino er en bemerkelsesverdig liten elektronikk enhet, men hvis du aldri har brukt en før, akkurat hva er de, og hva kan du gjøre med en? Les mer - Jeg har ikke medtatt prisen på dette elementet, da det antas at du allerede har en, og det finnes en rekke kloner du kan kjøpe hvis du ikke har råd til en offisiell.
Den totale kostnaden var derfor rundt £ 40 ikke inkludert Arduino.
Introduksjon
Prosjektet består av to deler. Først skal vi lage en grunnleggende Arduino-krets som lytter til kommandoer fra datamaskinen, og setter RGB-lysdiodene til en passende farge. Det andre innebærer å bruke en ny applikasjon kalt Behandling og Java på datamaskinens side - for å finne ut hvilke farger som er på skjermen, gjennomsnittlig dem og utdata det til seriell kommunikasjonsport for Arduino å reagere på.
Del 1: Krets og Arduino
Kretsen vi bruker er veldig enkel som du kan se fra diagrammet nedenfor. LED-stripen skal leveres med en hanplugg i den ene enden som du kan plassere direkte inn i brødbrettet.
Din LED-stripe kan variere, men hvis du ser nøye ut, vil du se 12v, R, G, B skrevet på skinner et sted. Disse strimlene kan faktisk kuttes ved disse koblingspunktene (hver 3 lysdioder på de jeg har), så hvis du vil kutte stripene i hjørnene på TVen din, kan du trygt gjøre det - du trenger ikke bruke hele 5m heller , så du kan ha noen igjen for et fremtidig prosjekt. Koble den positive 12v direkte til den eksterne strømforsyningen.
MOSFETene har tre pinner; Port, avløp, og kilde. Porten er som den elektroniske bryteren som Arduino vil kontrollere. Dette bestemmer da strømmen flyter mellom kilde og drenering. Dreneringen av hver MOSFET skal kobles til grunnen til Arduino, og bakken for strømforsyningen, mens kilden kobles til LED-stripkanaler.
Når du har fullført kretsen, last ned og kjør denne testkoden (opprinnelig fra LadyAda, pinner endret). Du bør se din LED stripe virvle gjennom en rekke farger.
Del 2: Behandling
Last ned Prosessering og kjøring. Du kan bli overrasket over å finne det ser ut nesten nøyaktig som Arduino utviklingsmiljøet; Det er fordi Arduino-miljøet var basert på det, selv om de begge utfører forskjellige funksjoner. Ta tak i denne koden - opprinnelig av Silicon Republic, men tungmodifisert av meg for å gjøre innstillingene for skjermstørrelsen automatisk og med bedre fargepresentasjon - og ta et øyeblikk å se over det. I utgangspunktet bruker den en Java-klasse som heter Robot å gjøre en skjermbilde hver 10ms; Den plukker deretter ut hver eneste piksel og gjennomsnittlig den totale fargen. Hvis ytelsen er et problem for deg, øker du skipValue variabel til 3 eller 4 for å hoppe over flere piksler - den totale effekten bør være den samme, men den går raskere ettersom den undersøker mindre piksler. Til slutt la jeg til et filter som bidrar til å mette fargene ved å øke maksimumet og redusere de minste RGB-verdiene som er funnet (uten dette fant jeg fargene til å være for hvite).
Kjør appen; første gang vil du sannsynligvis få en feil da den prøver å få tilgang til feil seriell port.
Kontroller feilsøkingsvinduet for en liste over gjeldende serielle porter, og merk nummeret ved siden av hva Arduino er koblet til. I mitt tilfelle på en Mac er USB-tilkoblingen port 4. Endre nummeret i denne linjen til riktig port:
port = ny seriell (dette, seriell.list () [4], 9600); // sett baud rate
Lagre og re-run; du bør se et lite vindu dukker opp - dette representerer gjennomsnittsfargen på alt på skjermen. Start en maleri-app eller noe med sterke farger for å teste det, ellers vil det nok bare vise en skummel gråton. Stopp applikasjonen når du er ferdig med å teste da vi trenger tilgang til seriell port for å programmere Arduino.
Til slutt, legg inn denne koden på din Arduino. I stedet for å sende tilfeldige farger til LED-stripen, leser denne koden verdiene fra serieporten (hvilken prosessering overføres til). Det er ganske enkelt å forstå, den eneste vanskelige delen kan være bruk av en markør i seriell data:
hvis (Serial.available ()> = 4) hvis (Serial.read () == 0xff) rød = Serial.read (); grønn = Serial.read (); blå = Serial.read ();
Dette sikrer at vi leser de riktige byteverdiene - Processing app utfører en markør som en “stoppunkt” mellom hvert sett med verdier slik at Arduino ikke kommer ut av synkronisering og tror at den grønne verdien er for blå osv.
Når Arduino-koden er lastet opp (det burde ikke være utgang på LED-stripen først), så kan du laste inn og kjøre Behandlingsprogrammet; umiddelbart bør du se ditt omgivende lys fungerer.
Her er en videodemo av hvordan det virket for meg med noen tilfeldig trippy musikkvideo.
Hva tror du?! Selv om det ikke er så imponerende som noe som analyserer hver del av skjermen og bruker individuelle LED-piksler, er det mye billigere og mye lysere. Den eneste ulempen ved dette er at alt må kjøres på mediasenterdatamaskinen din - det vil ikke fungere med vanlig TV-kringkasting eller Xbox 360, for eksempel. Hvis du har problemer, spørsmål eller forslag, vennligst spør deg bort; eller kanskje lenke til en video av det ferdige oppsettet ditt.
Utforsk mer om: Arduino, Media Player.