Search
Product Info
Button Pad Controller SPI
sku: WIG-09022
Description: The Button Pad Controller SPI was designed to compliment the Button Pad Controller USB; though it can also be used as a standalone device. The board is 4”x4” and has 16 tri-color LEDs and 16 corresponding button pads (i.e. The button pad surrounds the LED). The boards communicate via an SPI bus, and up to 10 Button Pad Controllers can be connected in a system (including one Button Pad Controller USB). The default firmware uses a 24 bit color scheme. Each board comes configured to work as a standalone unit and must be reconfigured for multiple board systems.We do not sell the frames shown in the photograph. We put those together for our own use as a demonstration of what two units look like, boxed up together.
Unit comes fully assembled and tested as shown. Unit does not include top button pad (listed below).
Note: We're using new RGB LEDs which have the blue and green pins swapped. When setting the LED color, you'll need to swap the blue and green values in the command structure. Visually, nothing on the board has changed.
Documents:
Pricing
Comments
13 comments
Feeds
Currency
Display prices in
Feedback
If you would like to tell us more, you can fill out our form if you need some psycho-suggestive questions. Go to the form.


























I wish these things could do faster SPI. I'm hopeful that since ryowens84 has updated the LED matrix backpack for faster SPI, that this hardware (and software!) will get some love soon.
http://www.youtube.com/watch?v=SguUqEBonNg
Here is the relevant snippet of code:
if(row == 0) frame_num = (frame_num + 1) & (COLOR_DEPTH);
frame_num can never be greater than COLOR_DEPTH which I already showed is defined as 7.
Therefore, this line inhibits true 8 bit depth per color:
if(greenf[LED] > frame_num) lineByte |= (1 << (column + GREEN_POS));
The values of each individual LED are stored in greenf[] and should be able to vary from 0 to 255 for true 8 bit color. However, frame_num can never be greater than 7 as I showed earlier, so any value of greenf[] greater than frame_num is treated exactly the same - maximum brightness. Values between 0 and 7 are truly different, but setting any element of any of the color arrays to a value greater than 7 will yield the exact same brightness.
The firmware is capable of 24 bit color, but not the way it is currently presented. Either the define needs to be changed or the description needs to say 9 bit color.
if(NUMBER_OF_BOARDS == 0 || NUMBER_OF_BOARDS > 16)
NUMBER_OF_BOARDS = 1;
I also gave a quick glance over the algorithm and there is nothing limiting this to just 10 (or 16) except that line. It could be a function of speed as the main loops are somewhat clunky, but the hardware should be able to support it unless they've got something else limiting it that I didn't see.
One other thing - it's not a good programming practice to write variables as all caps. That is universally accepted as the form of a #define.