Driving an array of WS2812 LEDs is not all that difficult, however, it can present problems for some platforms, like the Raspberry PI, Beaglebone, or the Edison; and it can also create timing problems in your projects, if for example, you are doing several real-time tasks like audio or motion control in addition to controlling the LEDs.
We decided to make it very simple (and inexpensive) for people to drive arrays of WS2812 LEDs using the Cypress PSoC, configured as an I2C (or SPI) memory device. That way, all the specific real-time timing problems of driving WS2812 LEDs are eliminated, and you simply access the LEDs as you would a standard memory device.
The TSOC_NEOLED driver board incorporates a Cypress PSoC4 device with a 74HCT245 driver chip to support longer wires for your LED arrays. The same firmware project can be loaded in any Cypress CY8CKIT-049 prototyping board as well.
The TSOC_NEOLED driver board can either be used as standalone LED driver, or in conjunction with other thingSoC, or Mikrobus boards. It can also be used with Arduino, Raspberry Pi, Beaglebone, and other platforms as an I2C peripheral.
The TSOC_NEOLED looks to the Arduino like an I2C SRAM (memory) of 2048 bytes in size. Simply writing to the TSOC_NEOLED like an I2C memory caues the corresponding LED to light up on the display.
If the LEDs are RGB only type, then the Yellow channel is not used, however the addressing remains the same, that is to say, memory is reserved for the Yellow/White channel, even if it is not used.
If the LED string (or matrix panel) is less than 64 LEDs (i.e. string of 30 or 60), then the extra LED positions are not used, however the addressing remains the same, that is to say, memory is reserved for 64 LEDs per string, even if it is less than that.
The Default I2C address for the TSOC_NEOLED is 8 (Seven bits).
The Arduino IDE example lights each color of each LED in sequence, from low addresses to high addresses.
The TSOC_NEOLED (default configuration) can drive up to eight (8) panels of Adafruit NeoPixel Arrays, for a total of 512 color LEDs, arranged as an 64 x 8 pixel array.
The TSOC_NEOLED (default configuration) can also drive large numbers of Adafruit Neopixel Rings or standard strings of 30 to 60 LEDs per string.
Comments