Archiv verlassen und diese Seite im Standarddesign anzeigen : ATMega32 BascomAVR variable PWM via Timer2-0 für RGB LED
Hallo und frohes und glückliches Neues Jahr an alle.
Zur Vorstellung, ich bin 41 Jahre alt und habe in der Vergangenheit kleinere Sachen mit dem 8051/ 6502 und Z80 gemacht und jetzt nach 6
Jahren das erste mal wieder "hart am Prozessor dran" ;-) Beruflich bin ich im Elektro/ Elektronikbereich tätig und Funkamateur.
Ich habe rein privates Interesse um meine angedachte Solargespeiste erassenbeleuchtung mit Multicolor/RGB/Vollfarb - LED's zum
laufen zu bekommen.
Ich habe mir das Atmel-Evaluation-Board von Pollin gekauft um mich etwas mit den AVR´s zu beschäftigen.
Im speziellen mit dem ATMega32 ( WEIL: habe einige im DIP Gehäuse
für 0 Euro geschenkt bekommen :-) und sind aber schon einige male geflasht worden ).
Zusätzlich habe ich auch noch zwei neue ATMega32 im DIP Gehäuse gekauft.
Des weiteren nutze ich BascomAVR in der Demo Version 1.11.8.3.
Ich möchte gerne drei unterschiedliche PWM Signale ( variables Puls/ Pausenverhältnis ) generieren um eine Multi/RGB - LED anzusteuern.
Laut Atmel Datenblatt soll der ATMega32 ja bis zu vier PWM Kanäle bieten.
Mit der IDE von BascomAVR und der Help /- Bedienungseitung ist es mir auch binnen kürzester Zeit gelungen den Timer1 um die beiden Ausgänge
OC1A und OC1B am µC als PWM Ausgänge zu nutzen.
Aber ich bekomme das mit dem dritten PWM Kanal und dem Timer2 nicht hin.
Zur Info:
Ich bin in Bezug zum ATMega32 und BascomAVR Newbie und möchte nicht tiefer in Assembler oder C einsteigen.
Anbei ein Programm-Listing mit dem ich für's erste die Programmierung abgebrochen habe. ( Programmgrundgerüst zu diesem Problem )
Ich habe in den letzten Wochen drei Email's an MSCElectronic verschickt.
Bisher ohne Antwort, was ja absolut verständlich ist ( da ja Demo Nutzer ) und es auch in den AGB's etc. zur Demo Version steht.
Die Help /- Bedienungsanleitung zu BascomAVR IDE ergibt für mich in diesem Fall auch keine schlüssige Erklärung.
Ich habe schon einige Sachen probiert und ja, ich habe es auch mit den neuen µC's getestet ( um zu häufiges flashen der geschenkten µC's auszuschließen ).
Deshalb meine Frage an die Forennutzer, was muß ich tun um den dritten PWM Kanal unter BascomAVR mit variablem Puls-Pausenverhältnis per Timer2
( oder Timer0 ) zum laufen zu bekommen.
Als Software PWM via Interrupt wäre es auf alle Fälle möglich, aber ich möchte es doch Hardwaremäßig mit den µC möglichkeiten hin bekommen.
Ich drehe mich seit ca. 5 Tagen mit diesem Problem ( und zig Simulationen und geflashten ATMega32 ) im Kreis.
Vielen Dank schon einmal für eure Zeit diesen Thread zu lesen und für eure Lösungsansätze.
MfG Martin
BTW: Ich habe mir eine Schaltung mit dem 74HC244 aufgebaut um via LPT vom PC das Pollin Eval Board ( nach der Seite vom Programmierer von PonyProg
und schon einigen Änderungen an der Verdrahtung/Bauteile durch geführt ) um es via ISP Schnittstelle zu programmieren was mir aber bisher nicht mit
PonyProg und BascomAVR geglückt ist.
Ich messe und sehe mit dem Ozsi/Scope das auf allen Datenleitungen vom µC und der LPT Schnittstelle Daten gesendet werden aber es funzt nicht.
( etliche Schnittstellen Einstellungen bei beiden Prog's vorgenommen. Am Kopf kratz, scheint ein Timingproblem zu sein? )
Natürlich habe ich die Serielle Verbindung vom Board zum PC hier bei abgezogen.
Hat schon jemand dieses Board mit entsprechendem LPT Programmer zum laufen bekommen?
Wenn ja mit welchem Adapter/Programmer und welcher Software und den Einstellungen.
Letzteres ist eine nicht so wichtig da ich ja per RS232 das Eval Board proggen kann.
Hallo RamJam,
zu deinem Softwareproblem kann ich dir jetzt hier auch keine Lösung anbieten, aber das Pollin-Board V2.0 progge ich mit einem selbstgebautem LPT-Progger (mit dem HCT244) direkt von Bascom aus; total problemlos.
cu
Matula
Hallo Matula.
Danke für deine Antwort auf mein noch nebensächliches Problem. ;-) ( nichts negatives gegen dich, aber das mit dem
dritten PWM drückt mich im Moment mehr. Aber wenn ich das Progger-Problem via LPT lösen kann, bin ich dir auch sehr dankbar )
Ohne zu weit und damit OT zu gehen würde es mich interessiern mit welcher Schaltung ( kannst du einen Link posten ? )
und mit welchen Einstellungen du es, unter den Optionen bei BascomAVR, zum laufen bekommen hast?
In meinem Fall z.B. V. 1.11.8.3 DEMO und schon vieles auf meinem kleinen Hobbyrechner (PII 4000Mhz) probiert
Wäre nett wen du es ( in Anbetracht des Threads und um nicht OT zu werden ) hier kurz posten könntest.
Alles weitere dann wenn gewünscht per PN/PM.
Vielen Dank schon mal @Matula.
MfG Martin
...
Hat schon jemand dieses Board mit entsprechendem LPT Programmer zum laufen bekommen?
Wenn ja mit welchem Adapter/Programmer und welcher Software und den Einstellungen.
Letzteres ist eine nicht so wichtig da ich ja per RS232 das Eval Board proggen kann.
Ja, das Bord läuft bei mir mit dem RN-Dongle, den es hier zu kaufen gibt problemlos (auch über Pony).
73 de REB
Link zum Dongle:
http://www.shop.robotikhardware.de/shop/catalog/product_info.php?products_id=60&osCsid=1f8885df136d48b3c799daca9cd991e9
Hi RamJam,
als erstes der Link zum Progger:
http://rumil.de/hardware/avrisp.html
Ich benutze die Schaltung unter der Zeile:
--- Atmel AVR ISP für STK200 und STK300 ---
(die mit dem 10-poligem Anschluss)
Ich verwende ebenfalls die V1.11.8.3, aber als Vollversion.
Bei der Programmer-Auswahl in Bascom verwende ich den
-> STK200 / STK300 Programmer
-> LPT-Adress 378
-> Port-Delay 1
Es funzt ohne Probleme...
cu
Matula
Bluesmash
08.01.2007, 23:10
Hallo RamJam!
Herzlich willkommen im Form! :)
dafür brauchst du nicht zwingend hardware PWM geht auch ganz gut über Soft PWM hab hier ne kleine leuchte gebastelt mit 5 RGB LED's.... die Software habe ich auch im tread gepostet... vielleicht hilft dir das weiter...
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=25733&highlight=
gruss bluesmash
Hallo RamJam,
4 Kanal Hardware PWM Beispiel für M32.
Config Portb = &B00001000
Config Portd = &B10110000
Config Timer0 = Pwm , Pwm = On , Compare = Clear , Prescale = 1
' 8 Bit PWM Ausgang Portb.3
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
' 8 Bit PWM Ausgang Portd.4 und Portd.5
Config Timer2 = Pwm , Pwm = On , Compare = Clear , Prescale = 1
' 8 Bit PWM Ausgang Portd.7
Enable Timer0
Enable Timer1
Enable Timer2
Enable Interrupts
Compare1a = Wert (0 - 255)
Compare1b = Wert (0 - 255)
Ocr0 = Wert (0 - 255)
Ocr2 = Wert (0 - 255)
@ all.
Erst einmal vielen vielen herzlichen Dank für eure sehr schnellen und hilfreichen Info's.
Ich kann im Moment nur kurz antworten und Danke sagen.
Bin gerade erst von der "Schaffe" zurück und jetzt ist die Familie dran.
Werde mich in den nächsten Tagen wieder melden wenn ich es probiert und getestet habe
oder evtl. den "Bock" aus meinem LPT-Progger beseitigt habe.
Ansonsten ordere ich den RN-Dongle, aber erst mal Fehlersuchen und Preis einholen.
Vielen Dank euch allen erst einmal und ich melde mich wieder.
MfG Martin
@ all.
So, ich bin gestern endlich dazu gekommen die Programmvorschläge zu probieren.
Jepp, jetzt kann ich weiter machen. Mir reicht im Moment die Hardware PWM möglichkeit des ATM32 aber das mit der SW PWM für 5 verschiedene
Kreise wird sicherlich noch "Auswirkungen" haben ;-).
Das die HW PWM mit Bascom programmiert eine solche Syntax erwartet wäre mir mit den vorhandenen Unterlagen nicht in den Sinn gekommen.
Danke @albundy + @Bluesmash
Das mit dem LPT Progger wird noch etwas warten müßen. ( Arbeitsplatzwechsel hat Vorrang )
Melde mich aber wieder wenn es Neuigkeiten gibt.
Schönes Wochenende euch allen.
MfG Martin
Hallo.
Ein kleiner Zwischenbericht.
Aufgrund meines Arbeitsplatzwechsels bin ich, seit der letzten Antwort, nicht mehr zu viel gekommen. ( Wird noch etwas dauern bis ich
wieder Zeit habe, aber Brötchen verdienen geht nun mal vor und ewig Spaghetti mit Ketchup ist öde ;-) )
Habe mir die offizielle BascomAVR von MCS Electronics angeschafft weil die 4Kb Grenze schon erreicht wurde.
@ Matula: Sobald s.o. Zeit werde ich auch dieses Proplem angehen.
Würde mich entlasten und mir den Weg in die Kellerwerkstatt
ersparen. ( Nein, bin nicht faul :-) nur praktisch ;-) )
@Bluesmash: Wie schon geschrieben, hast du mich angefixt. Ich probiere sobald Zeit da ist, etwas damit herum ( das eröffnet doch noch ganz
andere möglichkeiten und ich werde meine IR-FB anpassen müßen ).
Auf alle Fälle wird dies nicht ohne Einwilligung deinerseits von statten gehen, wenn ich Teile deines Source-Codes nutzen werde
( absolut privat ).
In diesem Sinne, euch allen ( auch den ungennanten ) vielen Dank für eure Hilfe.
MfG Martin
Bluesmash
06.02.2007, 18:45
was heisst den angefixt??? :)
ja klar kanst du meinen code benützen! ist ja schliesslich nichts spezielles...
viel spass damit und schönen gruss
@ Bluesmash, hui das ging schnell mit deiner Antwort. Vielen Dank für dein Entgegenkommen.
Da ich ja sehr neu in diesem Forum bin, und auch generell aus meiner Sichtweise gesehen ist es dein geistiges Eigentum.
Deshalb meine Anfrage.
Danke @BM =D> ( irgendwie haut das mit den klatschenden Händen nicht hin )
MfG Martin
btw: Habe heute etwas Zeit ( jippie ) und kann sogar unmittelbar antworten.
Hallo,
hast du das mit den 3 PWMs hinbekommen?
Gruss reredur
@ reredur.
Sorry aber wie schon zwei Threads vorher geschrieben bin ich im Moment
ziemlich eingespannt und habe seit dem auch noch keine Zeit mehr gefunden
mich mit diesem Problem/ Thema zu beschäftigen.
Das wird auch noch einige Zeit so bleiben.
Sobald ich in der Sache Zeit finde und grundlegende Schritte, zum von mir
gesetzten Ziel mache, werde ich es hier posten.
Zum Zeitpunkt als ich dieses Thema eröffnet habe, war noch kein Gedanke
oder bewusster Arbeitsplatzwechsel in Sicht oder angedacht.
Hat sich alles überraschend ergeben und führt zu solchen Sachen, wie
diesen Thread. So leid es mir tut :-s :( . ( Auch im eigenen privaten Sinne,
Familienleben und Kraftschöpfen für den Beruf sind im Moment wichtiger.
MfG Martin
btw: Über Thread Eingänge werde ich schon noch informiert :-)
/************************************************** ***
This program was produced by the
CodeWizardAVR V1.24.8d Professional
Automatic Program Generator
© Copyright 1998-2006 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project : test2pwms
Version :
Date : 07.03.2007
Author : F4CG
Company : F4CG
Comments:
Chip type : ATmega32
Program type : Application
Clock frequency : 16.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 512
************************************************** ***/
#include <mega32.h>
// Standard Input/Output functions
#include <delay.h>
#include <stdio.h>
#define ADC_VREF_TYPE 0x00
// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
// Declare your global variables here
unsigned char ROT;
unsigned char GRUEN;
unsigned char BLAU;
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=0 State4=0 State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0xFF;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 2000.000 kHz
// Mode: Ph. correct PWM top=00FFh
// OC1A output: Non-Inv.
// OC1B output: Non-Inv.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xA1;
TCCR1B=0x02;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x62;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x67;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC Clock frequency: 1000.000 kHz
// ADC Voltage Reference: AREF pin
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x84;
while (1)
{
// Place your code here
GRUEN=read_adc(0);
BLAU=read_adc(1);
ROT=read_adc(2);
OCR1AL=BLAU;
OCR1BL=ROT;
OCR2=GRUEN;
printf("\rROT: %-u ",ROT);
printf(" GRUEN: %-u ",GRUEN);
printf(" BLAU: %-u ",BLAU);
};
}
viel spass!gruss reredur
Hallo und fast ein Neujahrs-Gruß :-b
Es ist mittlerweile fast ein Jahr vergangen und endlich habe ich etwas Zeit ( trotz Bereitschafts-/ Notdienst) in dieser Sache weiter zu machen. O:)
Die Neue Arbeit hat halt ihren Tribut gefordert. :-b
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 =P~ . 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.
' 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. :^o =P~
In diesem Sinne, euch allen einen Guten Rutsch ins Neue Jahr.
Sobald Zeit und Fortschritte da sind werde ich wieder berichten.
MfG Martin
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.