Action
Changes the defined output pin at run time
Syntax
RB_CHANGEPIN Port , Pin
Remarks
Port |
A numeric variable or constant with the I/O address of the port. Notice that this is an absolute memory address. For ports in the normal IO range, you need to add a value of &H20 to the address.
Example : Const nprt=varptr(portb) + &H20 Rb_ChangePIN nprt, 1 |
Led |
A numeric variable or constant with the pin number in the range from 0-7 |
When you want to use multiple stripes with the same color, it would require CONFIG RAINBOW to set up all these stripes.
But each configured pin will use memory for the RGB information. When you change the pin at run time, you will use the color information of one stripe.
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_SETTABLECOLOR , RB_GETCOLOR , RB_LOOKUPCOLOR , RB_COPY , RB_COLOR
Example
'-------------------------------------------------------------------------------
' rainbow_ws2812_Demo.bas
'-------------------------------------------------------------------------------
$Regfile = "m88pdef.dat"
$Crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32
Config RAINBOW=1, RB0_LEN=8, RB0_PORT=PORTB,rb0_pin=0
' ^ connected to pin 0
' ^------------ connected to portB
' ^-------------------------- 8 leds on stripe
' ^------------------------------------- 1 channel
'Global Color-variables
Dim Color(3) as Byte
R alias Color(_base) : G alias Color(_base + 1) : B alias Color(_base + 2)
'CONST
const numLeds=8
'----[MAIN]---------------------------------------------------------------------
Dim n as Byte, state as Byte, tel as Byte
state=0 : tel=0
RB_SelectChannel 0 ' select first channel
R = 50 : G = 0 : B = 100 ' define a color
RB_SetColor 0 , color(1) ' update led on the left
RB_SetColor 7 , color(1) ' update led on the right
RB_Send
Do
For n = 1 to Numleds/2 - 1
rb_Shiftright 0 , Numleds/2 'shift to the right
rb_Shiftleft 4 , Numleds/2 'shift to the left all leds except the last one
Waitms 100
RB_Send
Next
For n = 1 to Numleds/2 - 1
rb_Shiftleft 0 , Numleds/2 'shift to the left all leds except the last one
rb_Shiftright 4 , Numleds/2 'shift to the right
Waitms 100
RB_Send
Next
'waitms 500 'wait a bit
select case state
case 0 : r=r+5 : Rb_AddColor 0, color(1) : rb_send: tel=tel+1
case 1: g=g+5 : Rb_subColor 0, color(1) : rb_send:tel=tel+1
case 2: b=b+5 : Rb_orColor 0, color(1) : rb_send: tel=tel+1
case 3: Rb_ClearStripe : tel=4
case 4: rb_send : tel=5
case 5: Rb_Fill color(1) : tel=5
case 6: const nprt=varptr(portb) + &H20 : Rb_ChangePIN nprt, 1
case else
state=0
end select
if tel>=2 then
state=state+1 : tel=0
end if
Loop