Advertentie
Als je veel films op je pc of mediacenter bekijkt, weet ik zeker dat je voor het verlichtingsdilemma staat. schakel je alle lichten volledig uit? Houd je ze op volle toeren? Of gebruik je een dimmer om ergens een dofgele gloed te behouden? Nou, lijd niet meer.
Voor minder dan $ 100 kun je een geweldig verlichtingssysteem opzetten dat weergeeft wat er op het scherm te zien is; als de video een blauwe nachtscène is, zijn de lichten blauw; wanneer een vuur van oranje vuur aangaat, zullen je lichten dat ook doen. Welkom in de wereld van RGB-sfeerverlichting.
Componenten
- RGB-lichtstrip - dit is een strook van 5 meter RGB-LED's die op eBay kan worden gekocht en voor minder dan £ 20 per stuk uit Hong Kong kan worden verzonden. Als u in elektronicawinkels koopt, betaalt u per meter en een haspel van 5 m kost drie of vier keer zoveel, dus koop online. Dit type ledstrips kan in elke kleur worden veranderd, maar alleen in één keer - ze kunnen niet individueel worden aangepast.
- 12v voeding - het benodigde vermogen (ampère) hangt af van het aantal ledstrips dat u gaat aansluiten. Elke meter trekt ongeveer 0,6 ampère, maar dit hangt af van de dichtheid van uw LED's, dus zorg ervoor dat u uw specifieke LED-strip controleert. 3A zou voldoende zijn voor de 5 meter lange strip die ik hierboven heb gekoppeld, en losse voedingen kunnen worden gekocht voor ongeveer £ 10 als je die niet ergens anders kunt vinden.
- 3 x MOSFET N-transistors - je kunt waarschijnlijk goedkoper vinden, maar ik heb een pakket van 6 gekocht (type STP16NF06FP) voor ongeveer £ 10. Deze worden gebruikt om de stroom van de Arduino te isoleren - door de strips rechtstreeks op de Arduino aan te sluiten, zou deze worden gebakken met de hoeveelheid stroom die ze trekken. Je hebt 1 MOSFET-transistor nodig per LED-kleurkanaal, voor rood, groen en blauw.
- Arduino Wat is Arduino en wat kun je ermee?De Arduino is een opmerkelijk klein elektronisch apparaat, maar als je er nog nooit een hebt gebruikt, wat zijn dat dan precies en wat kun je ermee doen? Lees verder - Ik heb de kosten van dit item niet meegerekend, omdat wordt aangenomen dat je er al een hebt, en er zijn verschillende klonen die je kunt kopen als je geen officiële kunt betalen.
De totale kosten waren dus rond £40 exclusief de Arduino.
Invoering
Het project bestaat uit twee delen. Eerst gaan we een basis Arduino-circuit maken dat luistert naar opdrachten van de computer en de RGB-leds op de juiste kleur instelt. De tweede betreft het gebruik van een nieuwe applicatie genaamd Verwerken en Java aan de computerzijde - om uit te zoeken welke kleuren momenteel op het scherm staan, deze gemiddeld te maken en naar de seriële communicatiepoort te sturen waarop de Arduino kan reageren.
Deel 1: Circuit en Arduino
Het circuit dat we gebruiken is heel eenvoudig, zoals je kunt zien in het onderstaande diagram. De ledstrip moet worden geleverd met een mannelijke stekker aan één uiteinde die u rechtstreeks in de breadboard kunt plaatsen.

Je ledstrip kan variëren, maar als je goed kijkt, zie je het 12v, R, G, B ergens op de rails geschreven. Deze strips kunnen eigenlijk op deze koperen punten worden gesneden (elke 3 LED's op degene die ik heb), dus als je de strips wilt knippen op de hoeken van uw tv kunt u dat veilig doen - u hoeft ook niet de hele 5 meter te gebruiken, dus misschien heeft u nog wat over voor een toekomst project. Sluit de positieve 12V direct aan op de externe voeding.

De MOSFET's hebben drie pinnen; poort, afvoer, en bron. De poort is als de elektronische schakelaar die de Arduino zal besturen. Dit bepaalt vervolgens de stroom die stroomt tussen de bron en de afvoer. De afvoer van elke MOSFET moet worden aangesloten op de aarde van de Arduino en op de aarde van de voeding, terwijl de bron wordt aangesloten op de LED-stripkanalen.

Wanneer je het circuit hebt voltooid, download en voer dit uit test code (oorspronkelijk van LadyAda, pinnen gewijzigd). U zou uw ledstrip door verschillende kleuren moeten zien dwarrelen.

Deel 2: Verwerking
Downloaden Verwerken en loop. Het zal je misschien verbazen dat het eruitziet bijna precies zoals de Arduino ontwikkelomgeving; dat komt omdat de Arduino-omgeving erop was gebaseerd, hoewel ze allebei verschillende functies hebben. Pak deze code – oorspronkelijk door Silicon Republic maar sterk aangepast door mij om de instellingen voor de schermgrootte automatisch en met een betere kleurweergave te maken - en neem even de tijd om erover te kijken. In principe gebruikt het een Java-klasse genaamd Robot om elke keer een schermopname te maken 10ms; het selecteert vervolgens elke oneven pixel en middelt de totale kleur. Als prestaties een probleem voor je zijn, verhoog dan de skipValue variabel naar 3 of 4 om meer pixels over te slaan - het algehele effect zou hetzelfde moeten zijn, maar het zal sneller lopen omdat het minder pixels onderzoekt. Ten slotte heb ik een filter toegevoegd dat helpt om de kleur te verzadigen door het maximum te verhogen en de gevonden minimum RGB-waarden te verlagen (zonder dit vond ik de kleuren te wit).
Voer de app uit; de eerste keer krijg je waarschijnlijk een foutmelding als het probeert toegang te krijgen tot de verkeerde seriële poort.

Controleer het foutopsporingsvenster voor een lijst met huidige seriële poorten en noteer het nummer naast waar uw Arduino op is aangesloten. In mijn geval op een Mac is de USB-aansluiting poort 4. Wijzig het nummer in deze regel in de juiste poort:
port = new Serial (dit, Serial.list () [4], 9600); // baudrate instellen
Opslaan en opnieuw uitvoeren; je zou een klein venster moeten zien verschijnen - dit vertegenwoordigt de gemiddelde kleur van alles op het scherm. Start een schilderij-app of iets met sterke kleuren om het te testen, anders geeft het waarschijnlijk alleen een duistere grijstint weer. Stop de applicatie als je klaar bent met testen, want we hebben toegang tot de seriële poort nodig om de Arduino te programmeren.

Tenslotte laad deze code op je Arduino. In plaats van willekeurige kleuren naar de LED-strip te sturen, leest deze code de waarden van de seriële poort (die Processing uitvoert). Het is vrij gemakkelijk te begrijpen, het enige moeilijke deel is misschien het gebruik van een marker in de seriële gegevens:
if (Serial.available ()> = 4) { if (Serial.read () == 0xff) { rood = Serial.read (); groen = Serial.read (); blauw = Serial.read (); } }
Dit zorgt ervoor dat we de juiste bytewaarden lezen - de Processing-app voert een markering uit als een "breekpunt" tussen elke set waarden, zodat de Arduino niet uit de pas loopt en denkt dat de groene waarde voor is blauw etc.
Zodra de Arduino-code is geüpload (er zou aanvankelijk geen uitvoer op de LED-strip moeten zijn), kunt u de Processing-app laden en uitvoeren; onmiddellijk zou je je omgevingslicht moeten zien werken.
Hier is een videodemo van hoe het voor mij is gelukt met een willekeurige trippy muziekvideo.
Wat denk je?! Hoewel het niet zo indrukwekkend is als iets dat elk deel van het scherm analyseert en gebruikt individuele LED-pixels, het is een stuk goedkoper en veel helderder. Het enige nadeel hiervan is dat alles op je mediacenter-computer moet worden uitgevoerd - het werkt bijvoorbeeld niet met gewone tv-uitzendingen of je Xbox 360. Als u problemen, vragen of suggesties heeft, vraag het dan gerust; of misschien een link naar een video van uw voltooide installatie.
James heeft een BSc in Artificial Intelligence en is CompTIA A + en Network + gecertificeerd. Hij is de hoofdontwikkelaar van MakeUseOf en brengt zijn vrije tijd door met het spelen van VR paintball en bordspellen. Hij bouwt al pc's sinds hij een kind was.