Annonse

mediesenterlysHvis du ser på mange filmer på din PC eller mediesenter, er jeg sikker på at du har møtt lysdilemmaet; slår du helt av alle lysene? Holder du dem på full blest? Eller bruker du en dimmerbryter for å holde en kjedelig gul glød et sted? Vel, lider ikke mer.

For under 100 dollar kan du sette opp et fantastisk lyssystem som kommer til å gjenspeile hva som er på skjermen; hvis videoen er en blå nattscene, vil lysene være blå; når en flammende oransje ild blinker på, så vil lysene dine også være. Velkommen til en verden av ambisiøs RGB-belysning.

komponenter

  • RGB lysstrimmel - dette er en 5 meter stripe med RGB LED som kan kjøpes på eBay og sendes fra Hong Kong for under 20 pund hver. Hvis du kjøper i elektronikkbutikker, betaler du ved måleren, og en rulle på 5m vil koste tre eller fire ganger så, kjøp online. Denne typen LED-strips kan endres til hvilken som helst farge, men bare på en gang - de kan ikke justeres individuelt.
  • 12v strømforsyning - kraften (ampage) som kreves avhenger av hvor mange lysdioder du kobler til. Hver meter trekker omtrent 0,6 ampere, men dette avhenger av tettheten til dine LED-er, så sørg for å sjekke din spesielle LED-stripe. 3A ville være tilstrekkelig for 5m stripe jeg koblet ovenfor, og separate strømforsyninger kan kjøpes for rundt £ 10 hvis du ikke kan skaffe et annet sted.
    instagram viewer
  • 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 - ved å koble stripene direkte til Arduino ville det 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?Arduino er et bemerkelsesverdig lite elektronikkapparat, men hvis du aldri har brukt en før, hva er de egentlig, og hva kan du gjøre med en? Les mer - Jeg har ikke inkludert kostnadene for denne varen, fordi det antas at du allerede har en, og det er 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 lager vi en grunnleggende Arduino-krets som lytter til kommandoer fra datamaskinen, og setter RGB-LED-ene til en passende farge. Det andre innebærer å bruke en ny applikasjon som heter Behandling og Java på datamaskinsiden - for å finne ut hvilke farger som for øyeblikket er på skjermen, gjennomsnitt dem og sende det ut til den serielle kommunikasjonsporten for Arduino å reagere på.

Del 1: Circuit and Arduino

Kretsen vi bruker er veldig enkel som du ser av diagrammet nedenfor. LED-stripen skal leveres med en hannplugg i den ene enden som du kan plassere direkte i brødbordet.

mediesenterlys

LED-stripen din kan variere, men hvis du ser nøye vil du se 12v, R, G, B skrevet på skinnene et eller annet sted. Disse stripene kan faktisk kuttes på disse kobberpunktene (hver 3 LED på de jeg har), så hvis du vil kutte stripene på hjørnene på TV-en din kan du trygt gjøre det - du trenger ikke bruke hele 5m heller, så du kan ha litt igjen for en fremtid prosjekt. Koble den positive 12v direkte til den eksterne strømforsyningen.

dynamisk omgivelsesbelysning

MOSFET-ene har tre pinner; Port, tappe, og kilde. Porten er som den elektroniske bryteren som Arduino vil kontrollere. Dette bestemmer deretter strømmen som strømmer mellom kilden og avløpet. Avløpet til hver MOSFET skal kobles bakken til Arduino og bakken på strømforsyningen, mens kilden kobles til LED-stripekanalene.

dynamisk omgivelsesbelysning

Når du har fullført kretsen, last ned og kjør dette testkode (opprinnelig fra LadyAda, pinner modifisert). Du bør se din LED-stripe sirkle gjennom en rekke farger.

dynamisk omgivelsesbelysning

Del 2: Bearbeiding

nedlasting Behandling og løp. Du kan bli overrasket over at den ser ut nesten nøyaktig som Arduino utviklingsmiljø; det er fordi Arduino-miljøet var basert på det, selv om de begge utfører forskjellige funksjoner. Ta tak i denne kodenopprinnelig av Silicon Republic men kraftig modifisert av meg for å gjøre skjermstørrelsesinnstillingene automatiske og med bedre fargegjengivelse - og ta et øyeblikk til å se over det. I utgangspunktet bruker den en Java-klasse som heter Robot å gjøre en skjermdump hver 10ms; den plukker deretter ut hver merkelige piksel og gjennomsnitt den totale fargen. Hvis ytelse er et problem for deg, øker du skipValue variabel til 3 eller 4 for å hoppe over flere piksler - den samlede effekten skal være den samme, men den vil løpe raskere da den undersøker mindre piksler. Til slutt la jeg til et filter som hjelper til å mette fargen ved å øke maksimalt og redusere de minste RGB-verdiene som ble funnet (uten dette syntes jeg fargene var for hvite).

Kjør appen; første gang vil du sannsynligvis få en feil da den prøver å få tilgang til feil serieport.

dynamisk omgivelsesbelysning

Sjekk feilsøkingsvinduet for en liste over gjeldende serielle porter, og noter nummeret ved siden av hva Arduino er koblet til. I mitt tilfelle på en Mac er USB-tilkoblingen port 4. Endre nummeret på denne linjen til riktig port:

port = new Serial (dette, Serial.list () [4], 9600); // angi baudrate

Lagre og kjør på nytt; du bør se et lite vindu dukke opp - dette representerer den gjennomsnittlige fargen på alt på skjermen. Start en maleri-app eller noe med sterke farger for å teste den, ellers vil den sannsynligvis bare vise en grumsk nyanse. Stopp applikasjonen når du er ferdig med å teste, da vi trenger seriell porttilgang for å programmere Arduino.

mediesenterlys

Til slutt, last inn denne koden videre til din Arduino. I stedet for å sende tilfeldige farger til LED-stripen, leser denne koden verdiene fra serieporten (som Processing sender ut til). Det er ganske enkelt å forstå, den eneste vanskelige delen kan være bruken av en markør i seriedataene:

if (Serial.available ()> = 4) { if (Serial.read () == 0xff) { rød = Serial.read (); grønn = Serial.read (); blå = Serial.read (); } }

Dette sikrer at vi leser de riktige byteverdiene - Prosessering-appen sender ut en markør som et "breakpoint" mellom hvert sett med verdier slik at Arduino ikke kommer ut av synkronisering og tenker at den grønne verdien er til blå etc.

Når Arduino-koden er lastet opp (det skal ikke være utgang på LED-stripen i utgangspunktet), kan du laste og kjøre Processing-appen; straks skal du se omgivelseslyset ditt fungere.

Her er en video-demo av hvordan det fungerte for meg med en 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, det er mye billigere og mye lysere. Den eneste ulempen med dette er at alt må kjøres på mediasenterdatamaskinen - det fungerer ikke med vanlig TV-kringkasting eller Xbox 360, for eksempel. Hvis du har noen problemer, spørsmål eller forslag, kan du spørre bort; eller kanskje lenke til en video av det fullførte oppsettet.

James har en BSc i kunstig intelligens, og er CompTIA A + og Network + sertifisert. Han er hovedutvikler av MakeUseOf, og bruker fritiden sin på å spille VR paintball og brettspill. Han har bygd pc-er siden han var liten.