Einleitung
Die hier beschriebene Library, soll den BASCOM Programmierer bei der Ansteuerung von RGB-Led Streifen auf Basis des Typs WS2812(b) unterstützen und liefert dazu die grundlegenden Elemente und noch mehr. Dazu gehören insbesondere die Generierung des erforderlichen Datenstroms, sowie einfach anzuwendende Routinen, bezüglich der Farbgebung einzelner LED oder einer Musterbildung.
Eine geschickte Kopplung dieser Routinen ermöglicht eine hohe Vielfalt an Möglichkeiten. Die Library vereinfacht die Verwendung von LED-Streifen. Dazu dimensioniert, verwaltet und bedient die Library die nötigen Speicherräume.
Seit der Version 2.0.7.9 ist die Rainbow-Library in Gestalt der RainbowBSC.Lib, Bestandteil von BASCOM-AVR. Zur Implementierung der Rainbow-Funktionen in die BASCOM-Umgebung und um Namenskonflikte mit bestehenden BASCOM-Befehlen auch in Zukunft auszuschließen, wurde die RainbowBSC-Library entsprechend angepasst. Ferner ist es nach heutigem Stand nicht geplant, die ursprüngliche Lib weiter zu entwickeln. Eventuelle Korrekturen sind davon natürlich ausgeschlossen.
Hardware
Chips vom Typ WS2812 und WS2812b basieren auf der Technik des IC WS2811 - ein RGB-LED Treiber mit Pulsweitenmodellierung und Ein-Drahtschnittstelle.
In einem WS2812er sind bereits eine RGB-LED und die Funktionalität eines WS2811 in einem Gehäuse kombiniert.
Diese Bauteile gibt es einzeln oder bereits als Lichterkette fertig montiert, in unterschiedlichen Längen erhältlich. Auch gibt es Angebote, bei denen diese LED-Typen in Ringform auf einer Leiterkarte aufgebracht sind und vieles mehr.
Eine wirklich angenehme Eigenschaft dieses IC ist sein Konzept der DaisyChain Topologie.
Obendrein, wird außer der Spannungsversorgung nur ein Pin vom Mikroprozessor in Anspuch genommen. Damit sind diese LED's gegenüber einer LED-Matrix eine echte Alternative, was die Prozessorlast und auch die Belegung von IO-Pins anbelangt.
ws2812b_1.jpg
ws2812b_2.jpg
Beispielschaltung
beispiel.GIF
Implementierung
Um die Library in einem BASCOM-Programm verwenden zu können, sind die folgenden Zeilen in den Programmcode zu integrieren:
Damit ist die Basisimplementierung abgeschlossen. Zu dieser Basis gehören drei Routinen:
Alle weiteren zur Verfügung stehenden Routinen sind, wie im Folgenden gezeigt zu implementieren:
Alles anzeigen
Wird eine Routine oder Funktion nicht benötigt, kann die entsprechende Zeile auskommentiert oder gelöscht werden, um den ansonsten benötigten Programmspeicherplatz freizugeben. Davon ausgenommen sind die drei Routinen Select_Rainbow(), SetColor() und Send(), deren Deklaration vorausgesetzt wird.
Mit dieser Library können bis zu 8 LED-Streifen unabhängig voneinander bedient werden. Dazu verwaltet die „Rainbow.Lib“ ebenso viele Farbdatenspeicher und Konfigurationsdaten, die zusammen jeweils einen Rainbow oder Kanal bilden.
Um die Routinen der Library auf einen LED-Streifen anwenden zu können, muss mindestens ein Kanal implementiert werden.
So wird ein Kanal erzeugt:
Und so ein weiterer:
Die Konstantennamen sind fest vorgegeben und beginnen „Rainbow“, gefolgt von einer Kanalnummer, z.B. 0 ,1 ,2 usw. bis 7 und mit der durch einen Unterstrich getrennten Zweckbindung, z.B. „Port“.
Ein explizites Konfigurieren eines Pins als Ausgang ist nicht erforderlich, - das erledigt der folgende Befehl gleich mit.
Hinweis : Alle Indizes wie ChannelNr oder LedNr sind nullbasierend
Solange der Kanal nicht gewechselt werden soll, oder es wird nur ein Kanal verwendet, genügt es, diesen Befehl nur einmal auszuführen. Als Parameter erhält dieser Befehl die Kanalnummer.
Das folgende Beispiel fasst die obigen Ausführungen zusammen:
Alles anzeigen
Einführungsbeispiel
Die einfachste Methode um einer LED eine Farbe zuzuordnen stellt die Routine SetColor dar. Als Parameter wird ein 0-basierender LED-Index und ein Array der Länge 3 des Typs Byte erwartet. Zuvor muss also ein Array beliebigen namens erstellt werden, das die RGB Farbanteile aufnimmt und SetColor übergeben werden kann.
Byte1 des Array repräsentiert dabei den Rot-, Byte 2 den Grün und Byte 3 den Blau-Anteil. Für die einfachere Handhabung empfiehlt es sich Verweise auf die einzelnen Elemente anzulegen.
Soll nun die erste LED einer Kette in einer bestimmten Farbe, zB. Orange erstrahlen, kann man so vorgehen:
Bis hierhin wurde allerdings nur die Farbinformation an den Farbspeicher des Kanal übertragen, eine Ausgabe an die LED-Kette erfolgt dann noch mit Send() Wir fassen wieder zusammen:
Alles anzeigen
Beispiel - Blinken
Ein einfaches Programmbeispiel das eine LED rot blinken lässt.
Alles anzeigen
Beispiel - Knight-Rider
Dieses Beispiel erzeugt mittels Shift-Befehlen den bekannten Knight-Rider Effekt.
Alles anzeigen
Befehlsreferenz
Hinweis : Alle Indizes wie ChannelNr oder LedNr sind nullbasierend
select_Rainbow()
setColor()
send()
clear_stripe()
clear_colors()
fill()
fill_colors()
fill_stripe()
swap_color()
rotate_left()
rotate_right()
shift_right()
shift_left()
and_color()
or_color()
add_color()
sub_color()
change_pin()
setTableColor()
getColor()
lookUp_color()
FAQ
History
Downloads
Datenblatt
Library
Die hier beschriebene Library, soll den BASCOM Programmierer bei der Ansteuerung von RGB-Led Streifen auf Basis des Typs WS2812(b) unterstützen und liefert dazu die grundlegenden Elemente und noch mehr. Dazu gehören insbesondere die Generierung des erforderlichen Datenstroms, sowie einfach anzuwendende Routinen, bezüglich der Farbgebung einzelner LED oder einer Musterbildung.
Eine geschickte Kopplung dieser Routinen ermöglicht eine hohe Vielfalt an Möglichkeiten. Die Library vereinfacht die Verwendung von LED-Streifen. Dazu dimensioniert, verwaltet und bedient die Library die nötigen Speicherräume.
Seit der Version 2.0.7.9 ist die Rainbow-Library in Gestalt der RainbowBSC.Lib, Bestandteil von BASCOM-AVR. Zur Implementierung der Rainbow-Funktionen in die BASCOM-Umgebung und um Namenskonflikte mit bestehenden BASCOM-Befehlen auch in Zukunft auszuschließen, wurde die RainbowBSC-Library entsprechend angepasst. Ferner ist es nach heutigem Stand nicht geplant, die ursprüngliche Lib weiter zu entwickeln. Eventuelle Korrekturen sind davon natürlich ausgeschlossen.
Hardware
Chips vom Typ WS2812 und WS2812b basieren auf der Technik des IC WS2811 - ein RGB-LED Treiber mit Pulsweitenmodellierung und Ein-Drahtschnittstelle.
In einem WS2812er sind bereits eine RGB-LED und die Funktionalität eines WS2811 in einem Gehäuse kombiniert.
Diese Bauteile gibt es einzeln oder bereits als Lichterkette fertig montiert, in unterschiedlichen Längen erhältlich. Auch gibt es Angebote, bei denen diese LED-Typen in Ringform auf einer Leiterkarte aufgebracht sind und vieles mehr.
Eine wirklich angenehme Eigenschaft dieses IC ist sein Konzept der DaisyChain Topologie.
Obendrein, wird außer der Spannungsversorgung nur ein Pin vom Mikroprozessor in Anspuch genommen. Damit sind diese LED's gegenüber einer LED-Matrix eine echte Alternative, was die Prozessorlast und auch die Belegung von IO-Pins anbelangt.
ws2812b_1.jpg
ws2812b_2.jpg
Beispielschaltung
beispiel.GIF
Implementierung
Um die Library in einem BASCOM-Programm verwenden zu können, sind die folgenden Zeilen in den Programmcode zu integrieren:
Damit ist die Basisimplementierung abgeschlossen. Zu dieser Basis gehören drei Routinen:
Alle weiteren zur Verfügung stehenden Routinen sind, wie im Folgenden gezeigt zu implementieren:
BASCOM-Quellcode
- Declare Sub Fill(Color() as Byte):$external USE_FILL
- Declare Sub Fill_Colors(Color() as Byte) : $external USE_FILL' new v1.2
- Declare Sub Fill_Stripe(Color() as Byte) : $external USE_FILL_Stripe ' new v1.2
- Declare Sub Clear_Stripe() : $external Use_Clear_Stripe
- Declare Sub Clear_Colors() : $external Use_Clear_Colors
- Declare Sub Swap_Color (byval LedNr1 As Word , Byval LedNr2 As Word):$external USE_SWap_Color
- Declare Sub Rotate_Left (byval Left_index As Word , Byval Width As Word) :$external USE_Rotate_Left
- Declare Sub Rotate_Right (byval Left_index As Word , Byval Width As Word) :$external USE_Rotate_Right
- Declare Sub Shift_Right (byval Left_index As Word , Byval Width As Word) :$external USE_Shift_Right
- Declare Sub Shift_Left (byval Left_index As Word , Byval Width As Word) :$external USE_Shift_Left
- Declare Sub AND_Color (byval LedNr As Word , Color() as Byte) :$external USE_AND_Color
- Declare Sub OR_Color (byval LedNr As Word , Color() as Byte) :$external USE_OR_Color
- Declare Sub ADD_Color (byval LedNr As Word , Color() as Byte) :$external USE_ADD_Color
- Declare Sub SUB_Color (byval LedNr As Word , Color() as Byte) :$external USE_SUB_Color
- Declare Sub Change_Pin (Byval Port as Byte , Byval Pin as Byte) :$external USE_Change_Pin
- Declare Sub SetTableColor (byval LedNr As Word , Byval index As Byte) :$external USE_SetTableColor
- Declare Function GetColor (byval LedNr As Word)as Byte:$external USE_GetColor
- Declare Function LookUp_Color(Byval index As Byte) as Byte : $external USE_LookUp_Color 'new v1.2
Wird eine Routine oder Funktion nicht benötigt, kann die entsprechende Zeile auskommentiert oder gelöscht werden, um den ansonsten benötigten Programmspeicherplatz freizugeben. Davon ausgenommen sind die drei Routinen Select_Rainbow(), SetColor() und Send(), deren Deklaration vorausgesetzt wird.
Mit dieser Library können bis zu 8 LED-Streifen unabhängig voneinander bedient werden. Dazu verwaltet die „Rainbow.Lib“ ebenso viele Farbdatenspeicher und Konfigurationsdaten, die zusammen jeweils einen Rainbow oder Kanal bilden.
Um die Routinen der Library auf einen LED-Streifen anwenden zu können, muss mindestens ein Kanal implementiert werden.
So wird ein Kanal erzeugt:
Und so ein weiterer:
Die Konstantennamen sind fest vorgegeben und beginnen „Rainbow“, gefolgt von einer Kanalnummer, z.B. 0 ,1 ,2 usw. bis 7 und mit der durch einen Unterstrich getrennten Zweckbindung, z.B. „Port“.
- Rainbow1_Len : Die Anzahl der LED die der Kanal verwalten soll, bzw. die Länge des LED-Streifens.
- Rainbow1_Port : Der Port der dem der Kanal zugeordnet werden sollen.
- Rainbow1_Pin : Der Portpin, von 0 bis 7 oder in der Form P[A..][0..7] Es ist durchaus möglich gleich mehrere Kanäle auf denselben Pin anzuwenden, oder den Pin bei Bedarf zur Laufzeit zu wechseln.
Ein explizites Konfigurieren eines Pins als Ausgang ist nicht erforderlich, - das erledigt der folgende Befehl gleich mit.
Hinweis : Alle Indizes wie ChannelNr oder LedNr sind nullbasierend
Solange der Kanal nicht gewechselt werden soll, oder es wird nur ein Kanal verwendet, genügt es, diesen Befehl nur einmal auszuführen. Als Parameter erhält dieser Befehl die Kanalnummer.
Das folgende Beispiel fasst die obigen Ausführungen zusammen:
BASCOM-Quellcode
Einführungsbeispiel
Die einfachste Methode um einer LED eine Farbe zuzuordnen stellt die Routine SetColor dar. Als Parameter wird ein 0-basierender LED-Index und ein Array der Länge 3 des Typs Byte erwartet. Zuvor muss also ein Array beliebigen namens erstellt werden, das die RGB Farbanteile aufnimmt und SetColor übergeben werden kann.
Byte1 des Array repräsentiert dabei den Rot-, Byte 2 den Grün und Byte 3 den Blau-Anteil. Für die einfachere Handhabung empfiehlt es sich Verweise auf die einzelnen Elemente anzulegen.
Soll nun die erste LED einer Kette in einer bestimmten Farbe, zB. Orange erstrahlen, kann man so vorgehen:
Bis hierhin wurde allerdings nur die Farbinformation an den Farbspeicher des Kanal übertragen, eine Ausgabe an die LED-Kette erfolgt dann noch mit Send() Wir fassen wieder zusammen:
BASCOM-Quellcode
- $Lib "Rainbow.lib"
- $external WS2812b
- Declare Sub Select_Rainbow(byval Channel As Byte)
- Declare Sub SetColor(byval LedNr As Word , Color() as Byte)
- Declare Sub Send()
- '#Rainbow0
- Const Rainbow0_Len = 8
- Const Rainbow0_Port = PORTB
- Const Rainbow0_Pin = PB0
- Dim Farbe(3) as Byte
- ROT alias Farbe (_Base)
- GRN alias Farbe (_Base +1)
- BLU alias Farbe (_Base +2)
- Call Select_Rainbow(0)
- ROT = 200 : GRN = 200 : BLU = 0
- Call SetColor(0, Farbe())
- Call Send()
- End
Beispiel - Blinken
Ein einfaches Programmbeispiel das eine LED rot blinken lässt.
BASCOM-Quellcode
- 'PROGRAM:RAINBOW_EXPL_Blink_I
- 'DESCRIPTION: Blinking Red
- $Regfile = "m88def.dat"
- $Crystal = 16000000
- $hwstack = 40
- $swstack = 16
- $framesize = 32
- '----[IMPLEMENT RAINBOW]--------------------------------------------------------
- $Lib "Rainbow.lib"
- $external WS2812b
- Declare Sub Select_Rainbow(byval Channel As Byte)
- Declare Sub SetColor(byval LedNr As Word , Color() as Byte) Declare Sub Send()
- '#Rainbow0
- Const Rainbow0_Len = 1'just 1 Led
- Const Rainbow0_Port = PORTB
- Const Rainbow0_Pin = PB0
- 'Global Color-variables
- Dim Color(3) as Byte
- R alias Color(_base) : G alias Color(_base+1) : B alias Color(_base+2)
- '----[MAIN]--------------------------------------------------------------------
- Call Select_Rainbow(0)'select Rainbow
- Do
- R = not R'alternately red and dark
- Call SetColor(0 , color())
- Call Send()
- Waitms 500
- Loop
- End
Beispiel - Knight-Rider
Dieses Beispiel erzeugt mittels Shift-Befehlen den bekannten Knight-Rider Effekt.
BASCOM-Quellcode
- 'PROGRAMM:RAINBOW_EXPL_Shift
- 'DESCRIPTION: Knight-Rider effect
- $Regfile = "m88def.dat"
- $Crystal = 16000000
- $hwstack = 40
- $swstack = 16
- $framesize = 32
- '----[IMPLEMENT RAINBOW]--------------------------------------------------------
- $Lib "Rainbow.lib"
- $external WS2812b
- Declare Sub Select_Rainbow(byval Channel As Byte)
- Declare Sub SetColor(byval LedNr As Word , Color() as Byte)
- Declare Sub Send()
- Declare Sub Shift_Left(byval Left_index As Word , Byval Width As Word) : $external USE_Shift_Left
- Declare Sub Shift_Right(byval Left_index As Word , Byval Width As Word) : $external USE_Shift_Right
- '#Rainbow0
- Const Rainbow0_Len = 10
- Const Rainbow0_Port = PORTB
- Const Rainbow0_Pin = PB0
- Dim Color(3) as Byte 'gloabal Color-variables
- R alias Color(_base)
- G alias Color(_base + 1)
- B alias Color(_base + 2)
- '_______________________________________________________________________________
- '----[MAIN]---------------------------------------------------------------------
- Dim n as Byte
- Call Select_Rainbow(0) 'select Rainbow
- R = 50 : G = 0 : B = 100 'define a color
- Call SetColor(0 , color())
- Call Send()
- Do
- For n = 1 to 9
- Call Shift_right(0 , 10)
- Waitms 100
- Call Send()
- Next
- For n = 1 to 9
- Call Shift_left(0 , 10)
- Waitms 100
- Call Send()
- Next
- Loop
Befehlsreferenz
Hinweis : Alle Indizes wie ChannelNr oder LedNr sind nullbasierend
select_Rainbow()
Beschreibung | Wählt den Kanal auf den alle Routinen wirken und initialisiert den Ausgabepin gemäß der Konfiguration des angegebenen Kanals. |
Deklaration | declare sub Select_Rainbow(byval Channel As byte) |
Parameter | Die Kanalnummer vom Typ Byte, 0-7 |
Beispiel |
setColor()
Beschreibung | Setzt die Farbe einer LED |
Deklaration | declare sub SetColor(byval LedNr As word, Color() as byte) |
Parameter | LedNr.......Wordvariable oder Konstante die dem Index einer LED entspricht Color()......Bytearray der Länge 3 das die RGB Farbinformation übergibt. |
Beispiel |
send()
Beschreibung | Gibt die Farbinformation des aktiven Kanals an einen Pin aus |
Deklaration | declare sub Send() |
Parameter | |
Beispiel |
clear_stripe()
Beschreibung | Löscht die LED-Kette am Ausgangspin den aktiven Kanals. Die Farbinformationen im Speicher bleiben erhalten. Die Ausführung dieses Befehls hat direkte Auswirkungen, ein Aufruf von Send() ist also nicht nötig. |
Deklaration | declare sub Clear_Stripe() : $external Use_Clear_Stripe |
Parameter | |
Beispiel |
clear_colors()
Beschreibung | Löscht die Farbinformationen im Speicher des aktiven Kanals. |
Deklaration | declare sub Clear_Colors() : $external Use_Clear_Colors |
Parameter | |
Beispiel |
fill()
Beschreibung | Diese Routine arbeitet wie Clear_Colors(), belegt jedoch den gesamten Farbspeicher des aktiven Kanals mit einer Farbe. Die Ausführung dieses Befehls hat direkte Auswirkungen, ein Aufruf von Send() ist also nicht nötig. |
Deklaration | declare sub Fill(Color() as byte) : $external USE_FILL |
Parameter | Color()....Bytearray der Länge 3 das die RGB Fabinformation übergibt. |
Beispiel |
fill_colors()
Beschreibung | Diese Routine belegt den gesamten Farbspeicher des aktiven Kanals mit einer Farbe. |
Deklaration | declare sub Fill_Colors(Color() as byte) : $external USE_FILL |
Parameter | Color()....Bytearray der Länge 3 das die RGB Fabinformation übergibt. |
Beispiel |
fill_stripe()
Beschreibung | Diese Routine belegt den Stripe des aktiven Kanals mit einer Farbe, der Farbspeicher bleibt jedoch davon unberührt. |
Deklaration | declare sub Fill_Stripe(Color() as byte ) : $external USE_FILL_Stripe |
Parameter | Color()....Bytearray der Länge 3 das die RGB Fabinformation übergibt. |
Beispiel |
swap_color()
Beschreibung | Tauscht die Farbinformationen zweier LED gegeneinander aus. |
Deklaration | declare sub Swap_Color(byval LedNr1 as word, byval LedNr2 as word) : $external USE_Swap_Color |
Parameter | LedNr1...Wordvariable oder Konstante LedNr2...Wordvariable oder Konstante |
Beispiel |
rotate_left()
Beschreibung | Mit diesem Befehl können alle Farben eines Abschnittes einer LED-Kette nach links bewegt werden. Nach links heraus geschobene Farben werden rechts wieder eingeschoben. |
Deklaration | declare sub Rotate_Left( byval Left_index As word , byval Width as word) : $external[/b]USE_Rotate_Left[/tt] |
Parameter | Left_Index...Wordvariable oder Konstante die die erste LED des Bereiches angibt, dessen Farben einer Rotationsverschiebung unterzogen werden sollen. Width..........Wordvariable oder Konstante die die Anzahl der LED angibt, dessen Farben einer Rotationsverschiebung unterzogen werden sollen. |
Beispiel |
rotate_right()
Beschreibung | Mit diesem Befehl können alle Farben eines Abschnittes einer LED-Kette nach rechts bewegt werden. Nach rechts heraus geschobene Farben werden links wieder eingeschoben. |
Deklaration | declare Sub Rotate_Right( byval Left_index as word , byval Width as word ) : $external USE_Rotate_Right |
Parameter | Left_Index...Wordvariable oder Konstante die die erste LED des Bereiches angibt, dessen Farben einer Rotationsverschiebung unterzogen werden sollen. Width..........Wordvariable oder Konstante die die Anzahl der LED angibt, dessen Farben einer Rotationsverschiebung unterzogen werden sollen. |
Beispiel |
shift_right()
Beschreibung | Mit diesem Befehl können alle Farben oder auch nur Farben einzelner Abschnitte einer LED-Kette nach rechts bewegt werden. |
Deklaration | declare Sub Shift_Right(byval Left_index as word, byval Width as word) : $external USE_Shift_Right |
Parameter | Left_Index...Wordvariable oder Konstante die die erste LED des Bereiches angibt, dessen Farben einer Positionsverschiebung unterzogen werden sollen. Width...........Wordvariable oder Konstante die die Anzahl der LED angibt, dessen Farben einer Positionsverschiebung unterzogen werden sollen. |
Beispiel |
shift_left()
Beschreibung | Mit diesem Befehl können alle Farben oder auch nur Farben einzelner Abschnitte einer LED-Kette nach links bewegt werden. |
Deklaration | declare sub Shift_Left(byval Left_index as word, byval Width as word) : $external USE_Shift_Left |
Parameter | Left_Index....Wordvariable oder Konstante die die erste LED des Bereiches angibt, dessen Farben einer Positionsverschiebung unterzogen werden sollen. Width...........Wordvariable oder Konstante die die Anzahl der LED angibt, dessen Farben einer Positionsverschiebung unterzogen werden sollen. |
Beispiel |
and_color()
Beschreibung | Führt eine AND-Operation mit der Farbinformation einer angegebenen LED und der übergebenen Farbinformation durch. |
Deklaration | declare Sub AND_Color( byval LedNr as word ], Color() as byte ) : $external USE_AND_Color |
Parameter | LedNr....Wordvariable oder Konstante die dem Index einer LED entspricht. Color().......Bytearray der Länge 3 das die RGB Fabinformation übergibt. |
Beispiel |
or_color()
Beschreibung | Führt eine OR-Operation mit der Farbinformation einer angegebenen LED und der übergebenen Farbinformation durch. |
Deklaration | declare sub OR_Color( byval LedNr as word , Color() as Byte ) : $external USE_OR_Color |
Parameter | LedNr....Wordvariable oder Konstante die dem Index einer LED entspricht. Color().......Bytearray der Länge 3 das die RGB Fabinformation übergibt. |
Beispiel |
add_color()
Beschreibung | Führt eine Addition mit der Farbinformation einer angegebenen LED und der übergebenen Farbinformation durch. Überläufe von Farbanteilen werden unterbunden. |
Deklaration | Declare Sub ADD_Color( byval LedNr as word , Color() as byte ) : $external USE_ADD_Color |
Parameter | LedNr....Wordvariable oder Konstante die dem Index einer LED entspricht. Color().......Bytearray der Länge 3 das die RGB Fabinformation übergibt. |
Beispiel |
sub_color()
Beschreibung | Führt eine Subtraktion mit der Farbinformation einer angegebenen LED und der übergebenen Farbinformation durch. Negative Überläufe von Farbanteilen werden unterbunden. |
Deklaration | Declare Sub SUB_Color( byval LedNr as word , Color() as byte ) : $external USE_SUB_Color |
Parameter | LedNr....Wordvariable oder Konstante die dem Index einer LED entspricht. Color().......Bytearray der Länge 3 das die RGB Fabinformation übergibt. |
Beispiel |
change_pin()
Beschreibung | Ändert den Ausgabepin eines Kanals zur Laufzeit. Bedingt dadurch, dass die Port-Pin Kombination beim selektieren eines Kanals in das SRAM, bzw. in Variablen geladen wird, ist es möglich die Ausgabe eines Kanals zur Laufzeit auf einen anderen Pin umzuleiten. Hinweis: Durch Ausführung des Befehls Select_Rainbow() wird der Ausgabepin gemäß der Konfiguration des angegebenen Kanals wieder hergestellt. D.h es wird wieder der Urzustand, wie er bei der Initialisierung zugrunde lag, hergestellt. |
Deklaration | Declare Sub Change_Pin(byval Port as byte, byval Pin as byte) : $external USE_Change_Pin |
Parameter | Port....Bytevariable oder Konstante mit der IO-Adresse des Ports Pin......Bytevariable oder Konstante mit Angabe der Pinnummer (0-7) |
Beispiel |
setTableColor()
Beschreibung | RGB-Daten können in einer Tabelle angelegt werden. Die Library stellt für den einfachen Zugriff einen Befehl zum Auslesen der 3 Byte langen RGB-Daten bereit. Die Daten sind unter dem Label Rainbow_Colors: aufzuführen, siehe Beispiel. Hinweis: Wird die Deklaration in den Programmtext eingefügt (nicht auskommentiert), erwartet der Compiler das Label Rainbow_Colors: ! |
Deklaration | declare sub SetTableColor(byval LedNr as word, byval index as byte) :$external USE_SetTableColor |
Parameter | LedNr.....Wordvariable oder Konstante die dem Index einer LED entspricht.Index.....Bytevariable oder Konstante mit dem Index der Farbe. |
Beispiel | BASCOM-Quellcode |
getColor()
Beschreibung | Mit dieser Funktion kann die Farbinformation einer LED des aktiven Kanal in Form eines 3 Byte langen Arrays aus dem Farbspeicher zurück gelesen werden. |
Deklaration | declare function GetColor(byval LedNr as word)as byte :$external USE_GetColor |
Parameter | LedNr.......Wordvariable oder Konstante die dem Index einer LED entspricht |
Beispiel |
lookUp_color()
Beschreibung | Diese Funktion gibt ein RGB Array aus dem Programmspeicher zurück. Es wird keine Manipulationen am Farbspeicher oder am Stripe durchgeführt. Diese Funktion dient lediglich als Hilfsfunktion. |
Deklaration | declare function LookUp_Color(byval index as byte) as byte :$external USE_LookUp_Color |
Parameter | index.......Bytevariable oder Konstante, als Index zu den Daten einer Farbe im Programmspeicher |
Beispiel | BASCOM-Quellcode |
FAQ
- Welche Befehle haben direkt sichtbare Auswirkungen ohne einen expliziten Aufruf von Send()?
- Wie wirken sich Interrupts aus?
- Worauf muss ich achten?
History
- 05.11.2017: neue OnlineHilfe im neuen Forum
- 15.11.2016: neue OnlineHilfe (altes Forum)
- 23.01.2016: Version 1.21 Bugfix
- 17.01.2015: V1.2
- 15.01.2015: V 1.2 BETA
- 31.12.2014: Neue Version 1.12 - aufgrund einer Fehlerbehebung.
- 31.12.2014: Eine Beschreibung findet sich von nun an im WIKI.
Downloads
Datenblatt
Library
12.987 mal gelesen
Dieter -
Klasse Beschreibung, herzlichen Dank dafür