Project: OnePixelDisplay | |
---|---|
Naam | OnePixelDisplay |
Door | SA007, BugBlue, Eightdot |
Status | Afgerond |
Madskillz | LEDstrips, wires, glas-in-lood |
Doel / Omschrijving | |
Het glas-in-lood raam boven de deur omgetoverd tot OnePixelDisplay | |
Alle Projecten - Project Toevoegen |
What is it
Aan de binnenkant tegen het kozijn van het raam zijn 16 RGB-ledstrips bevestigd, deze zitten met een draad richting het serverhok.
Deze zitten met een print op basis van een attiny45 met v-usb via USB aangesloten op kleintje2. Hierop draait wat lelijke scripts waardoor op basis van de spacestate de ledstrips bediend worden.
Electronics
De 16 ledstrips zijn common-anode strips met superflux leds, 9 per kleur per strip. Komen origineel als misproductie van niels van samenkopen.
De strips zijn niet overal 100% (meer), maar dat is in het resultaat niet-/nauwelijks zichtbaar.
Dit zit met een stuk 4-polig draad richting het serverhok. De controller daar is een zelfbouwcontroller op basis van v-usb. Een echt schema is er niet, in principe is de pinout van de attiny45:
- NC/Reset
- Blue via mosfet
- USB D-
- Ground
- Green via mosfet
- Blue via mosfet
- USB D+
- VCC
Voor de usb het een standaard schema met 3 weerstanden en 2 3.6V zeners, zie v-usb website: http://www.obdev.at/products/vusb/index.html
Software
µC Software
Download: http://hack42.sa007.nl/avr-usb-rgb.tar.gz
Software op kleintje
Deamon die spacestate in de gaten houdt en op basis daarvan dingen doet:
#!/bin/bash while true do while true do if [ "`nc igel2 667`" = "open" ] then ./start.sh break fi sleep 60 done while true do if [ "`nc igel2 667`" = "closed" ] then touch stop break fi sleep 60 done done
start.sh
#!/bin/bash screen -d -m -S "OnePixel" /usr/bin/php runled.php
runled.php
<?php // sort-of-deamon to cycle trough som fun colors, will quit if 'stop' file found. function setcolor($r,$g,$b) { //connection error, g/b switched in the actual display $r *= 5; $g *= 5; $b *= 5; exec("./set-led RGB $r $b $g"); if (file_exists("stop")) { exec("./set-led RGB 0 0 0"); unlink("stop"); exit(0); } } $sequence = array( array(51,0,0), array(51,51,0), array(0,51,0), array(0,51,51), array(0,0,51), array(51,0,51)); $currentcolor = array(0,0,0); while (true) { foreach($sequence as $color) { while ($color != $currentcolor) { for ($x = 0; $x<3; $x++) { if ($color[$x] > $currentcolor[$x]) { $currentcolor[$x]++; } else if ($color[$x] < $currentcolor[$x]) { $currentcolor[$x]--; } } setcolor($currentcolor[0],$currentcolor[1],$currentcolor[2]); usleep(250000); } } } ?>
Todo
- Foto's maken...
- Attiny45 code veranderen zodat fade in de controller kan, dit om de load op kleintje fors te verlagen.
- Alle stukken code samenvoegen om het grote hoeveelheid forken omlaag te brengen.
Dat samen zou ervoor moeten zorgen dat het kan werken met vloeiender overgangen tussen kleuren zonder kleintje op zijn knieen te drukken.