RB_CHANGEPIN new 2079

Top  Previous  Next

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