#include #include "ws2801.h" uint8_t message[3 * MAX_NUM_MODULES]; uint32_t ws2801_num_modules; void ws2801_init(void) { ws2801_num_modules = MAX_NUM_MODULES; SPI.begin(); } void ws2801_set_colour(uint32_t module, uint8_t red, uint8_t green, uint8_t blue) { message[3*module + 0] = red; message[3*module + 1] = blue; message[3*module + 2] = green; } void ws2801_send_update(void) { SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0)); for(uint32_t i = 0; i < 3*ws2801_num_modules; i++) { SPI.transfer(message[i]); } SPI.endTransaction(); } void ws2801_set_num_modules(uint32_t n) { if(n <= MAX_NUM_MODULES) { ws2801_num_modules = n; } }