RB_SETTABLECOLOR new 2079

Top  Previous  Next

Action

Set the color of a LED using a lookup table.

 

 

Syntax

RB_SETTABLECOLOR LED , Index [, Label]

 

 

Remarks

LED

The index of the LED of the active channel which color need to be changed. The first LED number is 0.

Index

A byte variable or constant that holds the index of the table.

The table need to be identified by a label. This is either a user defined label, or a label named RAINBOW_COLORS

The table has the R, G, B format. Example:

 

Rainbow_Colors:

         ' R ,    G ,      B      index

Data &HFF , &H00 , &H00 'Red 0

Data &H00 , &HFF , &H00 'Green 1

Data &H00 , &H00 , &HFF 'Blue 2

Data &HFF , &HA5 , &H00 'Orange 3

Data &HFF , &HFF , &H00 'Yellow 4

Data &HFF , &H69 , &HB4 'HotPink 5

Label

The label name of the table. This is an optional value. If the label name is not specified, the name RAINBOW_COLORS will be used.

 

 

 

 

See also

CONFIG RAINBOW , RB_ADDCOLOR, RB_ANDCOLOR, RB_ORCOLOR, RB_SUBCOLOR, RB_CLEARSTRIPE , RB_CLEARCOLORS , RB_FILL , RB_FILLCOLORS , RB_FILLSTRIPE , RB_SELECTCHANNEL, RB_SEND, RB_SETCOLOR , RB_SWAPCOLOR , RB_ROTATELEFT, RB_ROTATERIGHT, RB_SHIFTLEFT, RB_SHIFTRIGHT , RB_CHANGEPIN , RB_GETCOLOR , RB_LOOKUPCOLOR , RB_COPY , RB_COLOR

 

 

 

 

Example

'-------------------------------------------------------------------------------
'                   rainbow_ws2812_Trafficlights.bas
'
' This example  simulates two simple Trafficlights.
' It shows how switch between two Stripes with just one defined Rainbow.
' The active output gets changed by the RB_ChangePin statement.
' Thus the use of memory is small.
'
'-------------------------------------------------------------------------------
'(
Following situation:
The one way route from the Weststreet to Nothstreet and vice versa is the main route
and cars on these roads have priority.The corresponding light will show green light normally.
In our simple world, every five seconds a car wants to drive from the Eaststreet to the Northstreet.
Thus, the trafficflow from the main street has to stop, to let the cars pass.
'              Northstreet
'
'               |     |
'               |     |
'               |     | ooo
'         ------'     '------
'                              EastStreet
'          --->        ------
WestStreet            |
'         -----------/
'              ooo
'
'
')
$Regfile = "m88pdef.dat"
$Crystal=8000000
$hwstack=40
$swstack=16
$framesize=32
'We use just one Channel for both Trafficlights, cause LED stripes are static
Config RAINBOW= 1, RB0_LEN=3, RB0_PORT=PORTB,rb0_pin=0
Rb_SelectChannel 0   'we use the defined Channel
 
'Port+Pin combinations, formed to a word
Const MainStreet_0 = (((varptr(portb) + &H20) *256) OR PB0)
Const EastStreet_1 = (((varptr(portb) + &H20) *256) OR PB1)
'----[MAIN]---------------------------------------------------------------------
Dim PortPin as Word
Dim Street as Byte 'selects the current PortPin cofiguration
Const Mainstreet = 0
Const Eaststreet = 1
'Index for LED and colors also
Const Red = 0
Const Yellow = 1
Const Green = 2
Gosub inital_state
Do
  Gosub Wait_for_car
  'Trafficlight turns to Red
  Street =  Mainstreet
  Gosub Turn_to_Red
  'Trafficlight turns to green
  Street = Eaststreet
  Gosub Turn_to_green
  Gosub Wait_for_car 'let some cars passing
  Gosub Turn_to_red
  'Mainstreet becomes green
  Street =  Mainstreet
  Gosub Turn_to_green
Loop
 
Wait_for_car:
  Wait 5
Return
 
Turn_to_Green:
  Gosub Change_Port_Pin
  RB_SettableColor Yellow,Yellow,Light   'load and set color from table
  RB_Send                                 'refresh stripe
  Wait 1
  RB_clearcolors                         'clear colors in memory
  RB_SettableColor green,green,Light     'load and set color from table
  RB_Send                                 'refresh stripe
  Wait 2
Return
 
Turn_to_red:
  Gosub Change_Port_Pin
  RB_clearcolors                         'clear colors in memory
  RB_SettableColor Yellow,Yellow,Light   'load and set color from table
  RB_Send                                 'refresh stripe
  Wait 3
  RB_clearcolors                         'clear colors in memory
  RB_SettableColor red,red,Light         'load and set color from table
  RB_Send                                 'refresh stripe
  Wait 2
Return
 
Inital_State:
'select Mainstreet, green
  Street = Mainstreet
  Gosub Change_Port_Pin
  RB_clearcolors
  RB_SettableColor green,green,Light
  RB_Send
'select Eaststreet, red
  Street = Eaststreet
  Gosub Change_Port_Pin
  RB_clearcolors
  RB_SettableColor Red,Red,Light
  RB_Send
Return
 
Change_PORT_PIN:
  PortPin = Lookup(Street,PortPin_Tbl)   'get PortPin comination
  RB_ChangePin High(PortPin),PortPin     'use PortPin
Return
 
PortPin_Tbl:
  Data MainStreet_0%
  Data EastStreet_1%
 
Light:
  Data 150,0,0     'Red
  Data 100,50,0     'Yello
  Data 0,150,0     'Green