Hallo,
ich versuche mir gerade ein "Ambilight" zu bauen. Dafür gibt es eine Software, die den Bildschirminhalt ausliest und die Werte ( Hex ) an die serielle Schnittstelle sendet. Ein String davon sieht so aus:
BE 00 00 03 FF FF FF
Wobei nur die letzen 3 Hex Werte ( R G B ) interessant sind. Dies ist ein Beispiel für einen Kanal. Für 2 Kanäle sieht der String so aus:
BE 00 00 06 FF FF FF FF FF FF
Auch hier sind wieder nur die letzten 6 Werte ( RGB RGB ) interessant. Zum einlesen benutze ich folgenden Code:
Wenn ich die Software auf nur einen Kanal stelle, dann habe ich schöne Übergänge zwischen den einzelnen Farben. Sobald ich aber die Software auf 2 Kanäle umstelle ( Top und Left ), dann zucken die Farben der LED Leiste ab und zu. ( Das Programm im Atmel ist immer das selbe. Nur die Daten, welche über die serielle kommen sind anders ). Beim hoch- oder runterdimmen einer Farbe geht diese dann z.B. dauerhaft an und sofort wieder aus. Es ist nicht reproduzierbar. Ich schließe einen Hardwarefehler momentan mal aus, da mit nur einem Kanal ( Top ) alles funktioniert. Ich sitz hier nun seit 6 Stunden und finde den Fehler einfach nicht. Es wäre nett, wenn Ihr mal drüber schauen könntet. Wo könnte der Fehler sein ?Code:'--- Regfile --- $regfile = "m88def.dat" $crystal = 18432000 $baud = 38400 '--- interrupt --- On Urxc Onrxd Enable Urxc Enable Interrupts '--- Dim --- Dim Inputstring As Byte Dim Myarr(13) As Byte Dim Arridx As Byte Dim I As Byte Dim Rot_top As Byte Dim Gruen_top As Byte Dim Blau_top As Byte Dim Rot_right As Byte Dim Gruen_right As Byte Dim Blau_right As Byte Dim Rot_left As Byte Dim Gruen_left As Byte Dim Blau_left As Byte Dim Timercount As Word '--- Config --- Config Portb.1 = Output Config Portb.2 = Output Config Portb.3 = Output Config Portc.5 = Output Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1 Config Timer2 = Pwm , Pwm = On , Compare A Pwm = Clear Down , Prescale = 1 Tccr2a = &B10000001 '--- Enable --- Enable Timer0 Enable Timer1 Enable Timer2 '--- Start / boot --- Compare1b = 0 Compare1a = 0 Ocr2a = 0 Timercount = 0 '--- Main --- Main: Compare1b = Gruen_top 'Grün ansteuern Compare1a = Blau_top 'Blau ansteuern Ocr2a = Rot_top 'Rot ansteuern Goto Main '--- Interrupt Onrxd --- Onrxd: Inputbin Inputstring 'Hex einlesen If Inputstring = &HBE Then 'Wenn Sync erkannt, dann starten Timercount = 0 Arridx = 0 End If Incr Arridx Myarr(arridx) = Inputstring Rot_top = Myarr(5) 'Werte in Array packen Gruen_top = Myarr(6) Blau_top = Myarr(7) Rot_left = Myarr(8) Gruen_left = Myarr(9) Blau_left = Myarr(10) Rot_right = Myarr(11) Gruen_right = Myarr(12) Blau_right = Myarr(13) Return
Danke im Voraus
Gruß BlaueLED







Zitieren

Lesezeichen