Dies ist eine alte Version des Dokuments!
http://www.welcomeonboard.ch/sideprojects/led/
Links zu Thementreuer Software
apt-get install openjdk-6-jre openjdk-6-jre-lib pavucontrol
Auf der Processing Webseite die „LINUX“ Version runterladen und entpacken.
Um PulseAudio support in Processing zu haben, müssen jetzt files aus den oben installierten System Paketen in den entpackten Prozessing Ordner kopiert werden.
cp /usr/lib/jvm/java-6-openjdk/jre/lib/ext/pulse-java.jar ./processing-<versions nummer>/java/lib/ext/ cp /usr/lib/jvm/java-6-openjdk/jre/lib/i386/libpulse-java.so ./processing-<versions nummer>/java/lib/i386/
Mit pavucontrol
den „Monitor“ Kanal der gewünschen Audio Sink als Source für das Programm einstellen.
Ein Mikrocontroller ohne Aufdruck empfängt IR signale und steuert per PWM die LEDs. Er hat vermutlich eine Frequenz von 8Mhz. Es sind noch andere, für das Ziel uninteresante Komponenten auf der Platine. Für jeden der drei Farbkanäle gibt es die Folgende Ansteuerungsschaltung.
(Der Circuit Simulator Queltext zum importieren http://pastebin.com/emEJ5TZF)
An der Angegebene stelle wurde die Verbindung zwischen Mikrocontroller und der LED Steuerschaltung aufgetrennt und beide Seiten (jeweils aller drei Kanäle) an eine Buchsenleiste ausgeführt. An ihr kann man nun entweder eigene Steuersignale einspeisen, die orginal Signale Auswerten oder mit Brücken den Normalbetrieb herstellen.
Werden alle Farben mit 100% duty-cycle gleichzeitig betrieben (also schlich alles mit dauerstrom an), so ergibt sich ein verbrauch von 26W. Das entspricht fast der Werbung. Allerdings ist mit dem mitgelieferten controller diese ansteuerung nicht möglich. Da sobald eine weitere farbe ins spiel kommt keine farbe mit 100% duty-cycle leuft. D.h. für einen kurzen moment (zu begin der periode) können 26W vom netzteil gefordert werden, jedoch wird das licht nie eine helligkeit von 26W haben. Wie gut meine messungen sind weis ich nicht, da ich nicht weis wie gut das messgerät mit gepulsten strömen umgehen kann, auf jedenfall hatt die anzeige nicht geflackert.
Die PWM Frequenz ist 438Hz (die Periodendauer 2,282ms).
Der duty-cycle bei 100% rot/grün/blau ist in den Helligkeitsstufen:
100%; 88,2%; 78,4%; 59%; 49,2%; 39,48%; 29,76%; 20%; 10,3%
OK, als erstes hilft uns ein bash einzeiler um die passenen mC zu finden (Wir brauchen welche mit 16 bit timern die mindestens 3 OCR haben).
( find /usr/avr/include/avr -name 'io*.h' | while read file ; do grepf -P 'define.*OCR.*_SFR_(IO|MEM)16' $file | grepf -o 'OCR[A-Z0-9]*' | cut -c 4 | sort | uniq -c -w 1 | while read line ; do if [ $(echo $line | cut -d ' ' -f 1) -ge 3 ] ; then echo -en "${file:23:-2} \\tOCR${line:2} -- " ; echo $(grepf 'definitions for' $file | cut -d ' ' -f 6- ) ; fi ; done ; done ) | sort -n
und das Ergebniss:
canxx OCR1 -- AT90CAN32, AT90CAN64 and AT90CAN128 */ canxx OCR3 -- AT90CAN32, AT90CAN64 and AT90CAN128 */ m128 OCR1 -- m128 OCR3 -- m128rfa1 OCR1 -- ATmega128RFA1 */ m128rfa1 OCR3 -- ATmega128RFA1 */ m128rfa1 OCR4 -- ATmega128RFA1 */ m128rfa1 OCR5 -- ATmega128RFA1 */ m16m1 OCR0 -- ATmega16M1 */ m16m1 OCR1 -- ATmega16M1 */ m16m1 OCR2 -- ATmega16M1 */ m16u2 OCR1 -- ATmega16U2 */ m16u4 OCR1 -- ATmega16U4 */ m16u4 OCR3 -- ATmega16U4 */ m3000 OCR1 -- M3000 from Intelligent Motion Systems . */ m32m1 OCR0 -- ATmega32M1 */ m32m1 OCR1 -- ATmega32M1 */ m32m1 OCR2 -- ATmega32M1 */ m32u2 OCR1 -- ATmega32U2 */ m32u4 OCR1 -- ATmega32U4. */ m32u4 OCR3 -- ATmega32U4. */ m32u6 OCR1 -- ATmega32U6 */ m32u6 OCR3 -- ATmega32U6 */ m64m1 OCR0 -- ATmega64M1 */ m64m1 OCR1 -- ATmega64M1 */ m64m1 OCR2 -- ATmega64M1 */ m64 OCR1 -- m64 OCR3 -- m8u2 OCR1 -- ATmega8U2 */ mxx0_1 OCR1 -- ATmega640, Atmega1280, ATmega1281, mxx0_1 OCR3 -- ATmega640, Atmega1280, ATmega1281, mxx0_1 OCR4 -- ATmega640, Atmega1280, ATmega1281, mxx0_1 OCR5 -- ATmega640, Atmega1280, ATmega1281, tn2313 OCR1 -- ATtiny2313 */ usbxx2 OCR1 -- AT90USB82 and AT90USB162. */ usbxx6_7 OCR1 -- AT90USB646, AT90USB647, AT90USB1286 usbxx6_7 OCR3 -- AT90USB646, AT90USB647, AT90USB1286 90pwm1 OCR0 -- AT90PWM1 device */ 90pwm1 OCR2 -- AT90PWM1 device */ 90pwm216 OCR0 -- AT90PWM216 */ 90pwm216 OCR1 -- AT90PWM216 */ 90pwm216 OCR2 -- AT90PWM216 */ 90pwm2b OCR0 -- AT90PWM2B */ 90pwm2b OCR1 -- AT90PWM2B */ 90pwm2b OCR2 -- AT90PWM2B */ 90pwm316 OCR0 -- AT90PWM316 */ 90pwm316 OCR1 -- AT90PWM316 */ 90pwm316 OCR2 -- AT90PWM316 */ 90pwm3b OCR0 -- AT90PWM3B */ 90pwm3b OCR1 -- AT90PWM3B */ 90pwm3b OCR2 -- AT90PWM3B */ 90pwm81 OCR0 -- AT90PWM81 */ 90pwm81 OCR2 -- AT90PWM81 */ 90pwmx OCR0 -- AT90PWM2(B) and AT90PWM3(B) */ 90pwmx OCR1 -- AT90PWM2(B) and AT90PWM3(B) */ 90pwmx OCR2 -- AT90PWM2(B) and AT90PWM3(B) */
AWESOME *blink* *blink* *blink* … jetzt kann ich endlich wieder wie zu den guten alten ACAB Zeiten mit dem Epilepsi Faktor Arbeiten.
CPU auslastung von 100% nerft. Mit hörem nice wert läst sich aber wunderbar paralel arbeiten (auch wenn der PC viel heiße luft produziert).
Kein flackern oder ruckeln der LED. Ersteres war mit einer Frequenz von 100Hz nerfig. Nachdem es ca. verfünffacht wurde ist es OK. Es muss jedoch nochmal überprüft werden wie groß die schaltverluste sind. Das ruckeln war mit einer Baudrate von 9600 sichtbar (ca. 137Hz bei Farb updates). Mit doppelter baudrate und somit frequenz fält das nicht mehr auf.
Eine Gamma Korektur hat Große auswirkungen!
Dubstep ist perfekt für die Visualisierung mit dem Akuellen Programm (welches noch viel Raum für verbesserungen hat)