Mini Maestro and Shiftbrite

Hi,

I’m trying to use the example code, but for the life of me, can’t get a response out of the shiftbrite. It’s getting power and I know it works b/c I tested it successfully with an Arduino. I’ll attach a pic and the code. Any thoughts?

Tyler

begin
  1023    0    0 rgb  500 delay  # red 
     0 1023    0 rgb  500 delay  # green   
     0    0 1023 rgb  500 delay  # blue 
repeat
  
# Subroutine for setting the RGB value of a ShiftBrite/ShiftBar. 
# example usage: 1023 511 255 rgb 
sub rgb 
  0 send_bit # this bit does not matter 
  0 send_bit # the "address" bit - 0 means a color command 
  swap rot rot
  send_10_bit_value  
  send_10_bit_value  
  send_10_bit_value 
  0 1 8000 1 servo servo # toggle the latch pin 
  return
  
# sends a numerical value as a sequence of 10 bits 
sub send_10_bit_value 
  512 
  begin
    dup
  while
    over over bitwise_and send_bit 
    1 shift_right
  repeat
  drop drop
  return
  
# sends a single bit 
sub send_bit 
  if 8000 else 0 endif
  2 servo                # set DATA to 0 or 1 
  0 0 8000 0 servo servo # toggle CLOCK 
  return


Hello,

I see that you have not connected the EI (enable) pin. It needs to be low for the ShiftBrite to do anything.

-Paul

Bingo. For some reason, I thought it was optional. Thanks, I’m trying to learn bit banging techniques for some of the longer strings out there. I’m hoping to run a string of 4-10 programmable LEDs off of the maestro this way.

Question, could a single Mini Maestro run 4 programmable RGB LEDs through a rainbow of colors and simultaneously monitor 4 pushbuttons, alter (or “freeze”) the colors as the buttons are pressed? And then also throw a single servo in the mix as well? Or would I need two boards?

Great - I am glad that it works for you now.

I obviously have not tried that myself, but I bet a Mini Maestro will be able to handle all of that, but it will be quite a challenging programming task. This kind of thing is tricky, because even though it is natural to describe it as four things happening in parallel, you are going to have to reduce it to a sequential program. Please let me know how it goes, and feel free to ask if you need help along the way!

-Paul