Hallo und fast ein Neujahrs-Gruß

Es ist mittlerweile fast ein Jahr vergangen und endlich habe ich etwas Zeit ( trotz Bereitschafts-/ Notdienst) in dieser Sache weiter zu machen.

Die Neue Arbeit hat halt ihren Tribut gefordert.

Der Reihe nach.

1. Die LPT-/ Druckerschnittstelle-Schaltung läuft schon etwas länger ( ca. seit Mitte des Jahres ) und nach einigen zeitlich begrenzten Versuchen den Fehler zu finden, habe ich die Schaltung noch einmal komplett neu aufgebaut und siehe da, es funzt . Habe aber seit dem nicht recht die Zeit gefunden weiter zu machen in dieser Sache.

2. Habe ja vorgehabt das ganze autark mit einem Solarpanel und Akku plus Ladesschaltung/Akkusaver zu betreiben.
Durch eine LED Schaltung aus dem Jahr 2005 hatte ich noch 5mm RGB Led´s von Kingbright mit 2x Gem. Kathode ( siehe Bascom Programm Listing ) und die angedachte Reihenschaltung war hiermit nicht möglich, ohne zu große Leistungsverluste in kauf zu nehmen.
Zumal nun in dieser vergangenen Zeit Leistungsfähigere Power LED´s und fertige Controller ( Chromoflex ) am Markt verfügbar waren, habe ich umdisponiert.
Aber die vorhandenen LED´s schreien trotzdem nach Weiterverarbeitung.

EDIT 30.12.07 / 19:27 Uhr:
3. Habe mir aber im laufe des Jahres doch die Bascom Vollversion per IN Download ( was ohne Probs abgelaufen ist ) geholt da mir die Begrenzung doch schon einige Probleme bereitet hat.

Und beim weiteren testen der in den Threads angebotenen Programmen, fand ich es für meine Vorstellungen etwas schwierig die Farben und Intensität einzustellen.
Bin hier bei auf das HSV Farbmodell gestoßen und wollte es einmal hiermit probieren.
Das ganze ist als 3 Kanal Hardware PWM ( durch den Chromoflex Controller angefixt ) ausgeführt und kann mit einer RC5 Kompatiblen Infrarot Fernbedienung, einfachst in den einzelnen Werten verändert werden.
Das ganze soll als Grundlage dienen für weitere Versuche.
Evtl. sind auch 2-3 komplette RGB Kanäle ( als Software PWM drin ), aber das ist später dran.

Hier einmal der Link zum Wikipedia Link in Bezug zur HSV Farbraum Beschreibung nach der ich vor gegangen bin.
Link : http://de.wikipedia.org/wiki/HSV-Farbraum


Und hier das Listing in Bascom für den ATMega32, vielleicht hilft es dem ein oder anderen in seinen Versuchen.


Code:
' Demo einer 3 Kanal Hardware PWM ( 1 x Rot, 1 x Gruen , 1 x Blaue LED )  und Steuerung durch eine RC5 Kompatibele Infrarot Fernbedienung
' Das ganze ist mit einem Pollin Board " Atmel Evaluations-Board Version 2.0" und einem ATMega32 Prozessor realisiert.
' Als RGB LED wurde eine [5mm, 6 Pin, Fullcolor LED verwandt mit 2 x Blaue + 1 x Rot + 1 Gruene LED bei 2 x Gem. Kathode] von
' Kingbright Part No. LF5WAEMBGMBC (Klar Version) oder Part No. LF5WAEMBGMBW (Diffuse Version) genommen.
' Umrechnungsgrundlage von HSV zu RGB ist in Wikipedia zu finden Link: http://de.wikipedia.org/wiki/HSV-Farbraum
' und wurde in den Wertebereichen 360° = 255 Dezimal und 100% = 255 Dezimal angepasst, um mit Byte Variablen arbeiten zu können.
' geschrieben am 30.12.2007 durch Martin Derks.
'---------------------------------------------------------------------------------------------------------------------------------------------


$regfile = "m32def.dat"
$crystal = 8000000
$baud = 9600

$framesize = 512                                            ' Reichlich hoch gesetzt um Reserven zu haben
$swstack = 512                                              ' Reichlich hoch gesetzt um Reserven zu haben
$hwstack = 512                                              ' Reichlich hoch gesetzt um Reserven zu haben


$lib "mcsbyte.lbx"                                          'mcsbyte library um etwas kuerzeren Code zu generieren


Config Rc5 = Pinc.6                                         ' Eingangs Pin für Infrarotempfaenger Baustein [(AtMega32 IC Pin 28) und (Pollin Board J4 Stecker Pin 24)]                                      '


Config Portd = &B10110000                                   ' Port Bits d 4,5,7 auf High setzen



' Timer0 nicht setzen und nutzen da Bascom diesen intern für den Befehl GetRC5 nutzt


Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
' 8 Bit PWM Ausgang
' Portd.4 = Rote LED [(AtMega32 IC Pin 18) und (Pollin Board J4 Stecker Pin 30)] und
' Portd.5 = Gruene LED [(AtMega32 IC Pin 19) und (Pollin Board J4 Stecker Pin 31)]
Config Timer2 = Pwm , Pwm = On , Compare = Clear , Prescale = 1
' 8 Bit PWM Ausgang
' Portd.7 = Blaue LED [(AtMega32 IC Pin 21) und (Pollin Board J4 Stecker Pin 33)]

Enable Timer1
Enable Timer2
Enable Interrupts


Dim R As Byte , G As Byte , B As Byte , I As Byte , F As Byte , Rot As Byte , Gruen As Byte , Blau As Byte , Z As Byte
Dim H As Byte , S As Byte , V As Byte
' H = Hue = Farbwert ; V = Value = Helligkeitsbeiwert ; S = Saturation = Sättigung

Dim P As Integer , Q As Integer , T As Integer , P1 As Integer , Q1 As Integer , T1 As Integer
Dim Address As Byte , Command As Byte



Declare Sub Hsv_to_rgb(byval H As Byte , Byval S As Byte , Byval V As Byte)

 H = 0
 S = 255
 V = 255

   Call Hsv_to_rgb(h , S , V )                              ' Erster Subrutinen Aufruf, um einen eindeutigen Farbzustand einzustellen

 Do

    Getrc5(address , Command)

      If Address = 0 Then
       Command = Command And &B01111111
       Print "Adr.: " ; Address ; " Cmd: " ; Command        ' Wer mag kann den Wert von "Adress" & "Command" via RS232 ausgeben
      End If



    Select Case Command
     Case 32 :                                              ' erhöhe Hue ; entspricht der Taste [CH+] der IR FB
     H = H + 1

     Case 33 :                                              ' verringere Hue ; entspricht der Taste [CH-] der IR FB
     H = H - 1

     Case 16 :                                              ' erhöhe Value ; entspricht der Taste [VOL+] der IR FB
     V = V + 1

     Case 17 :                                              ' verringere Value ; entspricht der taste [VOL-] der IR FB
     V = V - 1

     Case 13 :                                              ' erhöhe Saturation ; entspricht der Taste [Symbol Lautsprecher aus / Mute] der IR FB
     S = S + 1

     Case 60 :                                              ' verringere Saturation ; entspricht der Taste [Symbol 3 Striche im Bildschirm = TEXT] der IR FB
     S = S - 1

     Case 63 :                                              ' setze H,S,V auf 0 entspricht der Tast [Symbol leerer Bildschirm] der IR FB
     H = 1
     S = 1
     V = 1

     Case 46 :                                              ' setze H,S,V auf 255 entspricht der Taste [Symbol 3 unterschiedlich lange Striche im Bildschirm = Sskundäres Menue] der IR FB
     H = 255
     S = 255
     V = 255

     Case 41 :                                              ' setze H,S,V auf 128 entspricht der Taste [ Symbol Pfeil oben und unten mit 2 Strichen im Bildschirm = Speichern/Ausführen/Bestätigen] der IR FB
     H = 128
     S = 128
     V = 128

    End Select



   Call Hsv_to_rgb(h , S , V )

    Print " Rot=" ; Rot ; " " ; " Gruen =" ; Gruen ; " " ; " Blau=" ; Blau ; " " ; "   H= " ; H ; " S=" ; S ; " V=" ; V       ' Wer mag kann sich die Daten via RS232 ausgeben

    Compare1a = Rot
    Compare1b = Gruen
    Ocr2 = Blau

 Loop

End                                                         ' Ende des Hauptprogrammes







 Sub Hsv_to_rgb(byval H As Byte , Byval S As Byte , Byval V As Byte)

     If S = 0 Then
     R = V
     G = V
     B = V

     Else
     I = H / 43
     F = H Mod 43
     P = 255 - S : P1 = P * V : P = P1 / 256
     Q = S * F : Q1 = 10710 - Q : Q = Q1 / 42 : Q1 = Q * V : Q = Q1 / 256
     T1 = 42 - F : T = T1 * S : T1 = 10710 - T : T = T1 / 42 : T1 = T * V : T = T1 / 256
     End If

     Select Case I

       Case 0 :
       R = V
       G = T
       B = P

       Case 1 :
       R = Q
       G = V
       B = P

       Case 2 :
       R = P
       G = V
       B = T

       Case 3 :
       R = P
       G = Q
       B = V

       Case 4 :
       R = T
       G = P
       B = V

       Case 5 :
       R = V
       G = P
       B = Q

     End Select

     Rot = R
     Gruen = G
     Blau = B


    End Sub
Ich hoffe für euch und für mich, dass das kommende Jahr sich nicht wie 6 Monate anfühlt.

In diesem Sinne, euch allen einen Guten Rutsch ins Neue Jahr.
Sobald Zeit und Fortschritte da sind werde ich wieder berichten.

MfG Martin