Annons
Om du tittar på många filmer på din dator eller mediecenter är jag säker på att du har mött belysningsdilemmaet; stänger du helt av alla lampor? Håller du dem på full spräng? Eller använder du en dimmerbrytare för att hålla en tråkig gul glöd någonstans? Tja, lider inte mer.
För mindre än 100 $ kan du skapa ett fantastiskt belysningssystem som kommer att återspegla vad som visas på skärmen. om videon är en blå nattscen kommer lamporna att bli blå; när en flammande orange eld blinkar på, så kommer dina lampor att göra. Välkommen till en värld av omgivande RGB-belysning.
Komponenter
- RGB-ljusremsa - detta är en 5 meter lång RGB-lysdiod som kan köpas på eBay och skickas från Hong Kong för mindre än £ 20 vardera. Om du köper i elektronikbutiker betalar du med mätaren och en rulle på 5 m kostar tre eller fyra gånger så, så köp online. Denna typ av LED-remsor kan ändras till valfri färg, men bara på en gång - de kan inte justeras individuellt.
- 12V strömförsörjning - kraften (ampage) som krävs beror på hur många lysdioder du kommer att ansluta. Varje meter drar ungefär 0,6 ampere, men det beror på densiteten på dina lysdioder så se till att du kontrollerar din speciella LED-remsa. 3A skulle vara tillräckligt för 5m-remsan jag länkade ovan, och separata strömförsörjningar kan köpas för cirka 10 £ om du inte kan källa en annanstans.
- 3 x MOSFET N-transistorer - du kan hitta billigare, men jag köpte ett paket med 6 (typ STP16NF06FP) för cirka 10 £. Dessa används för att isolera strömmen från Arduino - att ansluta remsorna direkt till Arduino skulle steka den med den mängd ström de drar. Du behöver 1 MOSFET-transistor per LED-färgkanal, för röd, grön och blå.
- Arduino Vad är Arduino och vad kan du göra med det?Arduino är en anmärkningsvärd liten elektronikapparat, men om du aldrig har använt en förut, precis vad är de exakt och vad kan du göra med en? Läs mer - Jag har inte inkluderat kostnaden för den här artikeln eftersom det antas att du redan har en, och det finns en mängd olika kloner du kan köpa om du inte har råd med en officiell.
Den totala kostnaden var därför ungefär £40 inklusive Arduino.
Introduktion
Projektet består av två delar. Först skapar vi en grundläggande Arduino-krets som lyssnar på kommandon från datorn och sätter RGB-lysdioderna till en lämplig färg. Den andra handlar om att använda en ny applikation som heter bearbetning och Java på datorsidan - för att ta reda på vilka färger som för närvarande är på skärmen, i genomsnitt dem och mata ut den till den seriella kommunikationsporten för Arduino att reagera på.
Del 1: Circuit and Arduino
Kretsen vi använder är väldigt enkel som du kan se i diagrammet nedan. LED-remsan ska levereras med en hanplugg i ena änden som du kan placera direkt i brödskivan.
Din LED-remsa kan variera, men om du tittar noga ser du det 12v, R, G, B skrivet på rälsen någonstans. Dessa remsor kan faktiskt skäras på dessa kopparpunkter (var 3: e lysdioder på de jag har), så om du vill klippa remsorna på i tv: ns hörn kan du säkert göra det - du behöver inte heller använda hela 5m, så du kan ha lite kvar för en framtid projekt. Anslut den positiva 12v direkt till den externa strömförsörjningen.
MOSFET: erna har tre stift; Port, dränera, och källa. Porten är som den elektroniska omkopplaren som Arduino kommer att styra. Detta bestämmer sedan strömmen som strömmar mellan källan och avloppet. Avloppet för varje MOSFET bör anslutas till Arduino och marken till strömförsörjningen, medan källan ansluts till LED-kanalerna.
När du har slutfört kretsen, ladda ner och kör detta testkod (ursprungligen från LadyAda, stift modifierade). Du bör se din LED-remsa virvla runt i olika färger.
Del 2: Bearbetning
Ladda ner bearbetning och spring. Du kan bli förvånad över att den ser ut nästan exakt som Arduino-utvecklingsmiljön; det beror på att Arduino-miljön var baserad på den, även om de båda utför olika funktioner. Ta denna kod – ursprungligen av Silicon Republic men kraftigt modifierad av mig för att göra skärmstorleksinställningarna automatiskt och med bättre färgrepresentation - och ta ett ögonblick för att titta över det. I princip använder den en Java-klass som heter Robot att göra en skärmdump varje 10 ms; den plockar sedan ut alla udda pixlar och ger den totala färgen i genomsnitt. Om prestanda är ett problem för dig, öka skipValue variabel till 3 eller 4 för att hoppa över fler pixlar - den totala effekten bör vara densamma men den kommer att köras snabbare eftersom den undersöker mindre pixlar. Slutligen tillagde jag ett filter som hjälper till att mätta färgen genom att öka det maximala och minska de minsta RGB-värden (utan detta tyckte jag att färgerna var för vita).
Kör appen; Första gången får du antagligen ett fel eftersom det försöker komma åt fel seriell port.
Kontrollera felsökningsfönstret för en lista med aktuella serieportar och notera numret bredvid vad din Arduino är ansluten till. I mitt fall på en Mac är USB-anslutningen port 4. Ändra numret på den här raden till rätt port:
port = new Serial (detta, Serial.list () [4], 9600); // ställa in baudfrekvens
Spara och kör igen; du bör se ett litet fönster dyka upp - detta representerar den genomsnittliga färgen på allt på skärmen. Starta en målningsapp eller något med starka färger för att testa den, annars kommer den förmodligen bara att visa en grumlig nyans. Stoppa applikationen när du har testat eftersom vi behöver tillgång till seriell port för att programmera Arduino.
Slutligen, ladda den här koden vidare till din Arduino. I stället för att skicka slumpmässiga färger till LED-remsan läser denna kod värdena från den seriella porten (som Processing matar ut). Det är ganska lätt att förstå, den enda svåra delen kan vara användningen av en markör i seriedata:
if (Serial.available ()> = 4) { if (Serial.read () == 0xff) { röd = Serial.read (); grön = Seriell.read (); blå = Serial.read (); } }
Detta säkerställer att vi läser rätt bytevärden - Processing-appen matar ut en markör som en "brytpunkt" mellan varje uppsättning värden så att Arduino inte kommer ur synk och tror att det gröna värdet är för blå etc.
När Arduino-koden har laddats upp (det bör inte finnas någon utgång på LED-remsan initialt) kan du ladda och köra Processing-appen; omedelbart ska du se ditt omgivande ljus fungera.
Här är en videodemono av hur det fungerade för mig med någon slumpmässig trippy musikvideo.
Vad tror du?! Även om det inte är lika imponerande som något som analyserar varje del av skärmen och använder enskilda LED-pixlar, det är mycket billigare och mycket ljusare. Den enda nackdelen med detta är att allt måste köras på din media center-dator - det fungerar inte med vanliga TV-sändningar eller till exempel din Xbox 360. Om du har några problem, frågor eller förslag, vänligen fråga bort; eller kanske länkar till en video av din slutförda installation.
James har en kandidatexamen i artificiell intelligens och är CompTIA A + och Network + certifierad. Han är ledande utvecklare av MakeUseOf och tillbringar sin fritid med att spela VR-paintball och brädspel. Han har byggt datorer sedan han var liten.