Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
neopixels_spi.cpp
00001 #include "mbed.h" 00002 #include "neopixels_spi.h" 00003 #include <string.h> 00004 #include <stdio.h> 00005 00006 /* 00007 neopixel_spi v03 00008 Created By: Ivan Yohuno 00009 SSID: 200717683 00010 00011 Notes: 00012 -Code to be run on WS2812 neopixel LEDs, can run with a single pixel or a strip of max 8 leds connected together 00013 -Single LED can be connected to power source of 5V but if connected to 5V logic will need to be shifted up from 3.3V to 5V 00014 00015 Features: 00016 -SetRGBPixel // sets colour of one RGB Pixel (the first pixel connected), generally used for testing. Colour is a mix of 3 8 bit values of red, green and blue 00017 -SetRGBStrip // sets colour of RGB strip of 8 00018 -setRGBStrips //sets colours of 4 RGB strips of 8 00019 colours 2D 4x3 matrix: 00020 {{room 1 strip red, room 1 strip green, room 1 strip blue}, 00021 {room 2 strip red, room 2 strip green, room 3 strip blue}, 00022 {room 3 strip red, room 3 strip green, room 3 strip blue} 00023 } 00024 -SetRGBPixels // sets an RGB strip of 8 to individual colours using a 2D 8x3 matrix 00025 colours 2D 8x3 matrix: 00026 {{1st pixel red, 1st pixel blue, 1st pixel green}, 00027 {2nd pixel red, 2nd pixel blue, 2nd pixel green}, 00028 {3rd pixel red, 3rd pixel blue, 3rd pixel green}, 00029 {4th pixel red, 4th pixel blue, 4th pixel green}, 00030 {5th pixel red, 5th pixel blue, 5th pixel green}, 00031 {6th pixel red, 6th pixel blue, 6th pixel green}, 00032 {7th pixel red, 7th pixel blue, 7th pixel green}, 00033 {8th pixel red, 8th pixel blue, 8th pixel green} 00034 } 00035 00036 //function declarations 00037 //void setRGBPixel(int r, int g, int b); //sets colour of one RGB Pixel 00038 void setRGBStrip1(int r, int g, int b); //sets colour of a strip of 8 RGB Pixels on pin 5 00039 void setRGBStrip2(int r, int g, int b); //sets colour of a strip of 8 RGB Pixels on pin 11 00040 void setRGBPixels1(int colours[8][3]); //sets sequence of colours for a strip of 8 RGB Pixels on pin 5 00041 void setRGBPixels2(int colours[8][3]); //sets sequence of colours for a strip of 8 RGB Pixels on pin 11 00042 void spi_init(); //initializes SPI pin at correct bit length and bit rate 00043 int * decimalToBinary(int n); //converts a decimal value between 0 and 255 to an 8 bit binary array of 0xF00 (0) and 0xFF0 (1) 00044 */ 00045 //initialize pins 00046 //DigitalOut volt(p16); //pin for LV voltage 00047 SPI spi(p5, p6, p7);//pin for SPI communication - p5 MOSI p5 MISO p6 SCLK 00048 SPI spi2(p11, p12, p13);//pin for SPI communication - p5 MOSI p5 MISO p6 SCLK 00049 //NeoStrip strip(p5,8); 00050 00051 00052 void neopixels_spi::setRGBStrip1(int r, int g, int b){ 00053 int r_array[8]; 00054 int g_array[8]; 00055 int b_array[8]; 00056 memcpy(r_array, decimalToBinary(r), sizeof(r_array)); 00057 memcpy(g_array, decimalToBinary(g), sizeof(g_array)); 00058 memcpy(b_array, decimalToBinary(b), sizeof(b_array)); 00059 00060 //send commands to LED Driver 00061 //initialize SPI 00062 spi_init(); 00063 //LED0 00064 //set green bits 00065 spi.write(g_array[7]); //set g7 bit 00066 spi.write(g_array[6]); //set g6 bit 00067 spi.write(g_array[5]); //set g5 bit 00068 spi.write(g_array[4]); //set g4 bit 00069 spi.write(g_array[3]); //set g3 bit 00070 spi.write(g_array[2]); //set g2 bit 00071 spi.write(g_array[1]); //set g1 bit 00072 spi.write(g_array[0]);//set g0 bit 00073 //set red bits 00074 spi.write(r_array[7]);//set r7 bit 00075 spi.write(r_array[6]); //set r6 bit 00076 spi.write(r_array[5]); //set r5 bit 00077 spi.write(r_array[4]); //set r4 bit 00078 spi.write(r_array[3]); //set r3 bit 00079 spi.write(r_array[2]); //set r2 bit 00080 spi.write(r_array[1]); //set r1 bit 00081 spi.write(r_array[0]); //set r0 bit 00082 //set blue bits 00083 spi.write(b_array[7]); //set b7 bit 00084 spi.write(b_array[6]); //set b6 bit 00085 spi.write(b_array[5]); //set b5 bit 00086 spi.write(b_array[4]); //set b4 bit 00087 spi.write(b_array[3]); //set b3 bit 00088 spi.write(b_array[2]); //set b2 bit 00089 spi.write(b_array[1]); //set b1 bit 00090 spi.write(b_array[0]); //set b0 bit 00091 //LED1 00092 //set green bits 00093 spi.write(g_array[7]); //set g7 bit 00094 spi.write(g_array[6]); //set g6 bit 00095 spi.write(g_array[5]); //set g5 bit 00096 spi.write(g_array[4]); //set g4 bit 00097 spi.write(g_array[3]); //set g3 bit 00098 spi.write(g_array[2]); //set g2 bit 00099 spi.write(g_array[1]); //set g1 bit 00100 spi.write(g_array[0]);//set g0 bit 00101 //set red bits 00102 spi.write(r_array[7]);//set r7 bit 00103 spi.write(r_array[6]); //set r6 bit 00104 spi.write(r_array[5]); //set r5 bit 00105 spi.write(r_array[4]); //set r4 bit 00106 spi.write(r_array[3]); //set r3 bit 00107 spi.write(r_array[2]); //set r2 bit 00108 spi.write(r_array[1]); //set r1 bit 00109 spi.write(r_array[0]); //set r0 bit 00110 //set blue bits 00111 spi.write(b_array[7]); //set b7 bit 00112 spi.write(b_array[6]); //set b6 bit 00113 spi.write(b_array[5]); //set b5 bit 00114 spi.write(b_array[4]); //set b4 bit 00115 spi.write(b_array[3]); //set b3 bit 00116 spi.write(b_array[2]); //set b2 bit 00117 spi.write(b_array[1]); //set b1 bit 00118 spi.write(b_array[0]); //set b0 bit 00119 //LED2 00120 //set green bits 00121 spi.write(g_array[7]); //set g7 bit 00122 spi.write(g_array[6]); //set g6 bit 00123 spi.write(g_array[5]); //set g5 bit 00124 spi.write(g_array[4]); //set g4 bit 00125 spi.write(g_array[3]); //set g3 bit 00126 spi.write(g_array[2]); //set g2 bit 00127 spi.write(g_array[1]); //set g1 bit 00128 spi.write(g_array[0]);//set g0 bit 00129 //set red bits 00130 spi.write(r_array[7]);//set r7 bit 00131 spi.write(r_array[6]); //set r6 bit 00132 spi.write(r_array[5]); //set r5 bit 00133 spi.write(r_array[4]); //set r4 bit 00134 spi.write(r_array[3]); //set r3 bit 00135 spi.write(r_array[2]); //set r2 bit 00136 spi.write(r_array[1]); //set r1 bit 00137 spi.write(r_array[0]); //set r0 bit 00138 //set blue bits 00139 spi.write(b_array[7]); //set b7 bit 00140 spi.write(b_array[6]); //set b6 bit 00141 spi.write(b_array[5]); //set b5 bit 00142 spi.write(b_array[4]); //set b4 bit 00143 spi.write(b_array[3]); //set b3 bit 00144 spi.write(b_array[2]); //set b2 bit 00145 spi.write(b_array[1]); //set b1 bit 00146 spi.write(b_array[0]); //set b0 bit 00147 //LED3 00148 //set green bits 00149 spi.write(g_array[7]); //set g7 bit 00150 spi.write(g_array[6]); //set g6 bit 00151 spi.write(g_array[5]); //set g5 bit 00152 spi.write(g_array[4]); //set g4 bit 00153 spi.write(g_array[3]); //set g3 bit 00154 spi.write(g_array[2]); //set g2 bit 00155 spi.write(g_array[1]); //set g1 bit 00156 spi.write(g_array[0]);//set g0 bit 00157 //set red bits 00158 spi.write(r_array[7]);//set r7 bit 00159 spi.write(r_array[6]); //set r6 bit 00160 spi.write(r_array[5]); //set r5 bit 00161 spi.write(r_array[4]); //set r4 bit 00162 spi.write(r_array[3]); //set r3 bit 00163 spi.write(r_array[2]); //set r2 bit 00164 spi.write(r_array[1]); //set r1 bit 00165 spi.write(r_array[0]); //set r0 bit 00166 //set blue bits 00167 spi.write(b_array[7]); //set b7 bit 00168 spi.write(b_array[6]); //set b6 bit 00169 spi.write(b_array[5]); //set b5 bit 00170 spi.write(b_array[4]); //set b4 bit 00171 spi.write(b_array[3]); //set b3 bit 00172 spi.write(b_array[2]); //set b2 bit 00173 spi.write(b_array[1]); //set b1 bit 00174 spi.write(b_array[0]); //set b0 bit 00175 //LED4 00176 //set green bits 00177 spi.write(g_array[7]); //set g7 bit 00178 spi.write(g_array[6]); //set g6 bit 00179 spi.write(g_array[5]); //set g5 bit 00180 spi.write(g_array[4]); //set g4 bit 00181 spi.write(g_array[3]); //set g3 bit 00182 spi.write(g_array[2]); //set g2 bit 00183 spi.write(g_array[1]); //set g1 bit 00184 spi.write(g_array[0]);//set g0 bit 00185 //set red bits 00186 spi.write(r_array[7]);//set r7 bit 00187 spi.write(r_array[6]); //set r6 bit 00188 spi.write(r_array[5]); //set r5 bit 00189 spi.write(r_array[4]); //set r4 bit 00190 spi.write(r_array[3]); //set r3 bit 00191 spi.write(r_array[2]); //set r2 bit 00192 spi.write(r_array[1]); //set r1 bit 00193 spi.write(r_array[0]); //set r0 bit 00194 //set blue bits 00195 spi.write(b_array[7]); //set b7 bit 00196 spi.write(b_array[6]); //set b6 bit 00197 spi.write(b_array[5]); //set b5 bit 00198 spi.write(b_array[4]); //set b4 bit 00199 spi.write(b_array[3]); //set b3 bit 00200 spi.write(b_array[2]); //set b2 bit 00201 spi.write(b_array[1]); //set b1 bit 00202 spi.write(b_array[0]); //set b0 bit 00203 //LED5 00204 //set green bits 00205 spi.write(g_array[7]); //set g7 bit 00206 spi.write(g_array[6]); //set g6 bit 00207 spi.write(g_array[5]); //set g5 bit 00208 spi.write(g_array[4]); //set g4 bit 00209 spi.write(g_array[3]); //set g3 bit 00210 spi.write(g_array[2]); //set g2 bit 00211 spi.write(g_array[1]); //set g1 bit 00212 spi.write(g_array[0]);//set g0 bit 00213 //set red bits 00214 spi.write(r_array[7]);//set r7 bit 00215 spi.write(r_array[6]); //set r6 bit 00216 spi.write(r_array[5]); //set r5 bit 00217 spi.write(r_array[4]); //set r4 bit 00218 spi.write(r_array[3]); //set r3 bit 00219 spi.write(r_array[2]); //set r2 bit 00220 spi.write(r_array[1]); //set r1 bit 00221 spi.write(r_array[0]); //set r0 bit 00222 //set blue bits 00223 spi.write(b_array[7]); //set b7 bit 00224 spi.write(b_array[6]); //set b6 bit 00225 spi.write(b_array[5]); //set b5 bit 00226 spi.write(b_array[4]); //set b4 bit 00227 spi.write(b_array[3]); //set b3 bit 00228 spi.write(b_array[2]); //set b2 bit 00229 spi.write(b_array[1]); //set b1 bit 00230 spi.write(b_array[0]); //set b0 bit 00231 //LED6 00232 //set green bits 00233 00234 spi.write(g_array[7]); //set g7 bit 00235 spi.write(g_array[6]); //set g6 bit 00236 spi.write(g_array[5]); //set g5 bit 00237 spi.write(g_array[4]); //set g4 bit 00238 spi.write(g_array[3]); //set g3 bit 00239 spi.write(g_array[2]); //set g2 bit 00240 spi.write(g_array[1]); //set g1 bit 00241 spi.write(g_array[0]);//set g0 bit 00242 //set red bits 00243 spi.write(r_array[7]);//set r7 bit 00244 spi.write(r_array[6]); //set r6 bit 00245 spi.write(r_array[5]); //set r5 bit 00246 spi.write(r_array[4]); //set r4 bit 00247 spi.write(r_array[3]); //set r3 bit 00248 spi.write(r_array[2]); //set r2 bit 00249 spi.write(r_array[1]); //set r1 bit 00250 spi.write(r_array[0]); //set r0 bit 00251 //set blue bits 00252 spi.write(b_array[7]); //set b7 bit 00253 spi.write(b_array[6]); //set b6 bit 00254 spi.write(b_array[5]); //set b5 bit 00255 spi.write(b_array[4]); //set b4 bit 00256 spi.write(b_array[3]); //set b3 bit 00257 spi.write(b_array[2]); //set b2 bit 00258 spi.write(b_array[1]); //set b1 bit 00259 spi.write(b_array[0]); //set b0 bit 00260 //LED7 00261 //set green bits 00262 spi.write(g_array[7]); //set g7 bit 00263 spi.write(g_array[6]); //set g6 bit 00264 spi.write(g_array[5]); //set g5 bit 00265 spi.write(g_array[4]); //set g4 bit 00266 spi.write(g_array[3]); //set g3 bit 00267 spi.write(g_array[2]); //set g2 bit 00268 spi.write(g_array[1]); //set g1 bit 00269 spi.write(g_array[0]);//set g0 bit 00270 //set red bits 00271 spi.write(r_array[7]);//set r7 bit 00272 spi.write(r_array[6]); //set r6 bit 00273 spi.write(r_array[5]); //set r5 bit 00274 spi.write(r_array[4]); //set r4 bit 00275 spi.write(r_array[3]); //set r3 bit 00276 spi.write(r_array[2]); //set r2 bit 00277 spi.write(r_array[1]); //set r1 bit 00278 spi.write(r_array[0]); //set r0 bit 00279 //set blue bits 00280 spi.write(b_array[7]); //set b7 bit 00281 spi.write(b_array[6]); //set b6 bit 00282 spi.write(b_array[5]); //set b5 bit 00283 spi.write(b_array[4]); //set b4 bit 00284 spi.write(b_array[3]); //set b3 bit 00285 spi.write(b_array[2]); //set b2 bit 00286 spi.write(b_array[1]); //set b1 bit 00287 spi.write(b_array[0]); //set b0 bit 00288 00289 //wait for latch 00290 wait_us(60); 00291 } 00292 00293 void neopixels_spi::setRGBStrip2(int r, int g, int b){ 00294 int r_array[8]; 00295 int g_array[8]; 00296 int b_array[8]; 00297 memcpy(r_array, decimalToBinary(r), sizeof(r_array)); 00298 memcpy(g_array, decimalToBinary(g), sizeof(g_array)); 00299 memcpy(b_array, decimalToBinary(b), sizeof(b_array)); 00300 00301 //send commands to LED Driver 00302 //initialize spi 00303 spi_init(); 00304 //LED0 00305 //set green bits 00306 spi2.write(g_array[7]); //set g7 bit 00307 spi2.write(g_array[6]); //set g6 bit 00308 spi2.write(g_array[5]); //set g5 bit 00309 spi2.write(g_array[4]); //set g4 bit 00310 spi2.write(g_array[3]); //set g3 bit 00311 spi2.write(g_array[2]); //set g2 bit 00312 spi2.write(g_array[1]); //set g1 bit 00313 spi2.write(g_array[0]);//set g0 bit 00314 //set red bits 00315 spi2.write(r_array[7]);//set r7 bit 00316 spi2.write(r_array[6]); //set r6 bit 00317 spi2.write(r_array[5]); //set r5 bit 00318 spi2.write(r_array[4]); //set r4 bit 00319 spi2.write(r_array[3]); //set r3 bit 00320 spi2.write(r_array[2]); //set r2 bit 00321 spi2.write(r_array[1]); //set r1 bit 00322 spi2.write(r_array[0]); //set r0 bit 00323 //set blue bits 00324 spi2.write(b_array[7]); //set b7 bit 00325 spi2.write(b_array[6]); //set b6 bit 00326 spi2.write(b_array[5]); //set b5 bit 00327 spi2.write(b_array[4]); //set b4 bit 00328 spi2.write(b_array[3]); //set b3 bit 00329 spi2.write(b_array[2]); //set b2 bit 00330 spi2.write(b_array[1]); //set b1 bit 00331 spi2.write(b_array[0]); //set b0 bit 00332 //LED1 00333 //set green bits 00334 spi2.write(g_array[7]); //set g7 bit 00335 spi2.write(g_array[6]); //set g6 bit 00336 spi2.write(g_array[5]); //set g5 bit 00337 spi2.write(g_array[4]); //set g4 bit 00338 spi2.write(g_array[3]); //set g3 bit 00339 spi2.write(g_array[2]); //set g2 bit 00340 spi2.write(g_array[1]); //set g1 bit 00341 spi2.write(g_array[0]);//set g0 bit 00342 //set red bits 00343 spi2.write(r_array[7]);//set r7 bit 00344 spi2.write(r_array[6]); //set r6 bit 00345 spi2.write(r_array[5]); //set r5 bit 00346 spi2.write(r_array[4]); //set r4 bit 00347 spi2.write(r_array[3]); //set r3 bit 00348 spi2.write(r_array[2]); //set r2 bit 00349 spi2.write(r_array[1]); //set r1 bit 00350 spi2.write(r_array[0]); //set r0 bit 00351 //set blue bits 00352 spi2.write(b_array[7]); //set b7 bit 00353 spi2.write(b_array[6]); //set b6 bit 00354 spi2.write(b_array[5]); //set b5 bit 00355 spi2.write(b_array[4]); //set b4 bit 00356 spi2.write(b_array[3]); //set b3 bit 00357 spi2.write(b_array[2]); //set b2 bit 00358 spi2.write(b_array[1]); //set b1 bit 00359 spi2.write(b_array[0]); //set b0 bit 00360 //LED2 00361 //set green bits 00362 spi2.write(g_array[7]); //set g7 bit 00363 spi2.write(g_array[6]); //set g6 bit 00364 spi2.write(g_array[5]); //set g5 bit 00365 spi2.write(g_array[4]); //set g4 bit 00366 spi2.write(g_array[3]); //set g3 bit 00367 spi2.write(g_array[2]); //set g2 bit 00368 spi2.write(g_array[1]); //set g1 bit 00369 spi2.write(g_array[0]);//set g0 bit 00370 //set red bits 00371 spi2.write(r_array[7]);//set r7 bit 00372 spi2.write(r_array[6]); //set r6 bit 00373 spi2.write(r_array[5]); //set r5 bit 00374 spi2.write(r_array[4]); //set r4 bit 00375 spi2.write(r_array[3]); //set r3 bit 00376 spi2.write(r_array[2]); //set r2 bit 00377 spi2.write(r_array[1]); //set r1 bit 00378 spi2.write(r_array[0]); //set r0 bit 00379 //set blue bits 00380 spi2.write(b_array[7]); //set b7 bit 00381 spi2.write(b_array[6]); //set b6 bit 00382 spi2.write(b_array[5]); //set b5 bit 00383 spi2.write(b_array[4]); //set b4 bit 00384 spi2.write(b_array[3]); //set b3 bit 00385 spi2.write(b_array[2]); //set b2 bit 00386 spi2.write(b_array[1]); //set b1 bit 00387 spi2.write(b_array[0]); //set b0 bit 00388 //LED3 00389 //set green bits 00390 spi2.write(g_array[7]); //set g7 bit 00391 spi2.write(g_array[6]); //set g6 bit 00392 spi2.write(g_array[5]); //set g5 bit 00393 spi2.write(g_array[4]); //set g4 bit 00394 spi2.write(g_array[3]); //set g3 bit 00395 spi2.write(g_array[2]); //set g2 bit 00396 spi2.write(g_array[1]); //set g1 bit 00397 spi2.write(g_array[0]);//set g0 bit 00398 //set red bits 00399 spi2.write(r_array[7]);//set r7 bit 00400 spi2.write(r_array[6]); //set r6 bit 00401 spi2.write(r_array[5]); //set r5 bit 00402 spi2.write(r_array[4]); //set r4 bit 00403 spi2.write(r_array[3]); //set r3 bit 00404 spi2.write(r_array[2]); //set r2 bit 00405 spi2.write(r_array[1]); //set r1 bit 00406 spi2.write(r_array[0]); //set r0 bit 00407 //set blue bits 00408 spi2.write(b_array[7]); //set b7 bit 00409 spi2.write(b_array[6]); //set b6 bit 00410 spi2.write(b_array[5]); //set b5 bit 00411 spi2.write(b_array[4]); //set b4 bit 00412 spi2.write(b_array[3]); //set b3 bit 00413 spi2.write(b_array[2]); //set b2 bit 00414 spi2.write(b_array[1]); //set b1 bit 00415 spi2.write(b_array[0]); //set b0 bit 00416 //LED4 00417 //set green bits 00418 spi2.write(g_array[7]); //set g7 bit 00419 spi2.write(g_array[6]); //set g6 bit 00420 spi2.write(g_array[5]); //set g5 bit 00421 spi2.write(g_array[4]); //set g4 bit 00422 spi2.write(g_array[3]); //set g3 bit 00423 spi2.write(g_array[2]); //set g2 bit 00424 spi2.write(g_array[1]); //set g1 bit 00425 spi2.write(g_array[0]);//set g0 bit 00426 //set red bits 00427 spi2.write(r_array[7]);//set r7 bit 00428 spi2.write(r_array[6]); //set r6 bit 00429 spi2.write(r_array[5]); //set r5 bit 00430 spi2.write(r_array[4]); //set r4 bit 00431 spi2.write(r_array[3]); //set r3 bit 00432 spi2.write(r_array[2]); //set r2 bit 00433 spi2.write(r_array[1]); //set r1 bit 00434 spi2.write(r_array[0]); //set r0 bit 00435 //set blue bits 00436 spi2.write(b_array[7]); //set b7 bit 00437 spi2.write(b_array[6]); //set b6 bit 00438 spi2.write(b_array[5]); //set b5 bit 00439 spi2.write(b_array[4]); //set b4 bit 00440 spi2.write(b_array[3]); //set b3 bit 00441 spi2.write(b_array[2]); //set b2 bit 00442 spi2.write(b_array[1]); //set b1 bit 00443 spi2.write(b_array[0]); //set b0 bit 00444 //LED5 00445 //set green bits 00446 spi2.write(g_array[7]); //set g7 bit 00447 spi2.write(g_array[6]); //set g6 bit 00448 spi2.write(g_array[5]); //set g5 bit 00449 spi2.write(g_array[4]); //set g4 bit 00450 spi2.write(g_array[3]); //set g3 bit 00451 spi2.write(g_array[2]); //set g2 bit 00452 spi2.write(g_array[1]); //set g1 bit 00453 spi2.write(g_array[0]);//set g0 bit 00454 //set red bits 00455 spi2.write(r_array[7]);//set r7 bit 00456 spi2.write(r_array[6]); //set r6 bit 00457 spi2.write(r_array[5]); //set r5 bit 00458 spi2.write(r_array[4]); //set r4 bit 00459 spi2.write(r_array[3]); //set r3 bit 00460 spi2.write(r_array[2]); //set r2 bit 00461 spi2.write(r_array[1]); //set r1 bit 00462 spi2.write(r_array[0]); //set r0 bit 00463 //set blue bits 00464 spi2.write(b_array[7]); //set b7 bit 00465 spi2.write(b_array[6]); //set b6 bit 00466 spi2.write(b_array[5]); //set b5 bit 00467 spi2.write(b_array[4]); //set b4 bit 00468 spi2.write(b_array[3]); //set b3 bit 00469 spi2.write(b_array[2]); //set b2 bit 00470 spi2.write(b_array[1]); //set b1 bit 00471 spi2.write(b_array[0]); //set b0 bit 00472 //LED6 00473 //set green bits 00474 00475 spi2.write(g_array[7]); //set g7 bit 00476 spi2.write(g_array[6]); //set g6 bit 00477 spi2.write(g_array[5]); //set g5 bit 00478 spi2.write(g_array[4]); //set g4 bit 00479 spi2.write(g_array[3]); //set g3 bit 00480 spi2.write(g_array[2]); //set g2 bit 00481 spi2.write(g_array[1]); //set g1 bit 00482 spi2.write(g_array[0]);//set g0 bit 00483 //set red bits 00484 spi2.write(r_array[7]);//set r7 bit 00485 spi2.write(r_array[6]); //set r6 bit 00486 spi2.write(r_array[5]); //set r5 bit 00487 spi2.write(r_array[4]); //set r4 bit 00488 spi2.write(r_array[3]); //set r3 bit 00489 spi2.write(r_array[2]); //set r2 bit 00490 spi2.write(r_array[1]); //set r1 bit 00491 spi2.write(r_array[0]); //set r0 bit 00492 //set blue bits 00493 spi2.write(b_array[7]); //set b7 bit 00494 spi2.write(b_array[6]); //set b6 bit 00495 spi2.write(b_array[5]); //set b5 bit 00496 spi2.write(b_array[4]); //set b4 bit 00497 spi2.write(b_array[3]); //set b3 bit 00498 spi2.write(b_array[2]); //set b2 bit 00499 spi2.write(b_array[1]); //set b1 bit 00500 spi2.write(b_array[0]); //set b0 bit 00501 //LED7 00502 //set green bits 00503 spi2.write(g_array[7]); //set g7 bit 00504 spi2.write(g_array[6]); //set g6 bit 00505 spi2.write(g_array[5]); //set g5 bit 00506 spi2.write(g_array[4]); //set g4 bit 00507 spi2.write(g_array[3]); //set g3 bit 00508 spi2.write(g_array[2]); //set g2 bit 00509 spi2.write(g_array[1]); //set g1 bit 00510 spi2.write(g_array[0]);//set g0 bit 00511 //set red bits 00512 spi2.write(r_array[7]);//set r7 bit 00513 spi2.write(r_array[6]); //set r6 bit 00514 spi2.write(r_array[5]); //set r5 bit 00515 spi2.write(r_array[4]); //set r4 bit 00516 spi2.write(r_array[3]); //set r3 bit 00517 spi2.write(r_array[2]); //set r2 bit 00518 spi2.write(r_array[1]); //set r1 bit 00519 spi2.write(r_array[0]); //set r0 bit 00520 //set blue bits 00521 spi2.write(b_array[7]); //set b7 bit 00522 spi2.write(b_array[6]); //set b6 bit 00523 spi2.write(b_array[5]); //set b5 bit 00524 spi2.write(b_array[4]); //set b4 bit 00525 spi2.write(b_array[3]); //set b3 bit 00526 spi2.write(b_array[2]); //set b2 bit 00527 spi2.write(b_array[1]); //set b1 bit 00528 spi2.write(b_array[0]); //set b0 bit 00529 00530 //wait for latch 00531 wait_us(60); 00532 } 00533 00534 void neopixels_spi::setRGBPixels1(int colours[8][3]){ 00535 //translate int values to array of 0xF00 (0) and 0xFF0 (1) binary 00536 int r0_array[8]; //LED0 00537 int g0_array[8]; 00538 int b0_array[8]; 00539 memcpy(r0_array, decimalToBinary(colours[0][0]), sizeof(r0_array)); 00540 memcpy(g0_array, decimalToBinary(colours[0][1]), sizeof(g0_array)); 00541 memcpy(b0_array, decimalToBinary(colours[0][2]), sizeof(b0_array)); 00542 int r1_array[8]; //LED1 00543 int g1_array[8]; 00544 int b1_array[8]; 00545 memcpy(r1_array, decimalToBinary(colours[1][0]), sizeof(r1_array)); 00546 memcpy(g1_array, decimalToBinary(colours[1][1]), sizeof(g1_array)); 00547 memcpy(b1_array, decimalToBinary(colours[1][2]), sizeof(b1_array)); 00548 int r2_array[8]; //LED2 00549 int g2_array[8]; 00550 int b2_array[8]; 00551 memcpy(r2_array, decimalToBinary(colours[2][0]), sizeof(r2_array)); 00552 memcpy(g2_array, decimalToBinary(colours[2][1]), sizeof(g2_array)); 00553 memcpy(b2_array, decimalToBinary(colours[2][2]), sizeof(b2_array)); 00554 int r3_array[8]; //LED3 00555 int g3_array[8]; 00556 int b3_array[8]; 00557 memcpy(r3_array, decimalToBinary(colours[3][0]), sizeof(r3_array)); 00558 memcpy(g3_array, decimalToBinary(colours[3][1]), sizeof(g3_array)); 00559 memcpy(b3_array, decimalToBinary(colours[3][2]), sizeof(b3_array)); 00560 int r4_array[8]; //LED4 00561 int g4_array[8]; 00562 int b4_array[8]; 00563 memcpy(r4_array, decimalToBinary(colours[4][0]), sizeof(r4_array)); 00564 memcpy(g4_array, decimalToBinary(colours[4][1]), sizeof(g4_array)); 00565 memcpy(b4_array, decimalToBinary(colours[4][2]), sizeof(b4_array)); 00566 int r5_array[8]; //LED5 00567 int g5_array[8]; 00568 int b5_array[8]; 00569 memcpy(r5_array, decimalToBinary(colours[5][0]), sizeof(r5_array)); 00570 memcpy(g5_array, decimalToBinary(colours[5][1]), sizeof(g5_array)); 00571 memcpy(b5_array, decimalToBinary(colours[5][2]), sizeof(b5_array)); 00572 int r6_array[8]; //LED6 00573 int g6_array[8]; 00574 int b6_array[8]; 00575 memcpy(r6_array, decimalToBinary(colours[6][0]), sizeof(r6_array)); 00576 memcpy(g6_array, decimalToBinary(colours[6][1]), sizeof(g6_array)); 00577 memcpy(b6_array, decimalToBinary(colours[6][2]), sizeof(b6_array)); 00578 int r7_array[8]; //LED7 00579 int g7_array[8]; 00580 int b7_array[8]; 00581 memcpy(r7_array, decimalToBinary(colours[7][0]), sizeof(r7_array)); 00582 memcpy(g7_array, decimalToBinary(colours[7][1]), sizeof(g7_array)); 00583 memcpy(b7_array, decimalToBinary(colours[7][2]), sizeof(b7_array)); 00584 00585 //send commands to LED Driver 00586 //initialize SPI 00587 spi_init(); 00588 //LED0 00589 //set green bits 00590 spi.write(g0_array[7]); //set g7 bit 00591 spi.write(g0_array[6]); //set g6 bit 00592 spi.write(g0_array[5]); //set g5 bit 00593 spi.write(g0_array[4]); //set g4 bit 00594 spi.write(g0_array[3]); //set g3 bit 00595 spi.write(g0_array[2]); //set g2 bit 00596 spi.write(g0_array[1]); //set g1 bit 00597 spi.write(g0_array[0]);//set g0 bit 00598 //set red bits 00599 spi.write(r0_array[7]);//set r7 bit 00600 spi.write(r0_array[6]); //set r6 bit 00601 spi.write(r0_array[5]); //set r5 bit 00602 spi.write(r0_array[4]); //set r4 bit 00603 spi.write(r0_array[3]); //set r3 bit 00604 spi.write(r0_array[2]); //set r2 bit 00605 spi.write(r0_array[1]); //set r1 bit 00606 spi.write(r0_array[0]); //set r0 bit 00607 //set blue bits 00608 spi.write(b0_array[7]); //set b7 bit 00609 spi.write(b0_array[6]); //set b6 bit 00610 spi.write(b0_array[5]); //set b5 bit 00611 spi.write(b0_array[4]); //set b4 bit 00612 spi.write(b0_array[3]); //set b3 bit 00613 spi.write(b0_array[2]); //set b2 bit 00614 spi.write(b0_array[1]); //set b1 bit 00615 spi.write(b0_array[0]); //set b0 bit 00616 //LED1 00617 //set green bits 00618 spi.write(g1_array[7]); //set g7 bit 00619 spi.write(g1_array[6]); //set g6 bit 00620 spi.write(g1_array[5]); //set g5 bit 00621 spi.write(g1_array[4]); //set g4 bit 00622 spi.write(g1_array[3]); //set g3 bit 00623 spi.write(g1_array[2]); //set g2 bit 00624 spi.write(g1_array[1]); //set g1 bit 00625 spi.write(g1_array[0]);//set g0 bit 00626 //set red bits 00627 spi.write(r1_array[7]);//set r7 bit 00628 spi.write(r1_array[6]); //set r6 bit 00629 spi.write(r1_array[5]); //set r5 bit 00630 spi.write(r1_array[4]); //set r4 bit 00631 spi.write(r1_array[3]); //set r3 bit 00632 spi.write(r1_array[2]); //set r2 bit 00633 spi.write(r1_array[1]); //set r1 bit 00634 spi.write(r1_array[0]); //set r0 bit 00635 //set blue bits 00636 spi.write(b1_array[7]); //set b7 bit 00637 spi.write(b1_array[6]); //set b6 bit 00638 spi.write(b1_array[5]); //set b5 bit 00639 spi.write(b1_array[4]); //set b4 bit 00640 spi.write(b1_array[3]); //set b3 bit 00641 spi.write(b1_array[2]); //set b2 bit 00642 spi.write(b1_array[1]); //set b1 bit 00643 spi.write(b1_array[0]); //set b0 bit 00644 //LED2 00645 //set green bits 00646 spi.write(g2_array[7]); //set g7 bit 00647 spi.write(g2_array[6]); //set g6 bit 00648 spi.write(g2_array[5]); //set g5 bit 00649 spi.write(g2_array[4]); //set g4 bit 00650 spi.write(g2_array[3]); //set g3 bit 00651 spi.write(g2_array[2]); //set g2 bit 00652 spi.write(g2_array[1]); //set g1 bit 00653 spi.write(g2_array[0]);//set g0 bit 00654 //set red bits 00655 spi.write(r2_array[7]);//set r7 bit 00656 spi.write(r2_array[6]); //set r6 bit 00657 spi.write(r2_array[5]); //set r5 bit 00658 spi.write(r2_array[4]); //set r4 bit 00659 spi.write(r2_array[3]); //set r3 bit 00660 spi.write(r2_array[2]); //set r2 bit 00661 spi.write(r2_array[1]); //set r1 bit 00662 spi.write(r2_array[0]); //set r0 bit 00663 //set blue bits 00664 spi.write(b2_array[7]); //set b7 bit 00665 spi.write(b2_array[6]); //set b6 bit 00666 spi.write(b2_array[5]); //set b5 bit 00667 spi.write(b2_array[4]); //set b4 bit 00668 spi.write(b2_array[3]); //set b3 bit 00669 spi.write(b2_array[2]); //set b2 bit 00670 spi.write(b2_array[1]); //set b1 bit 00671 spi.write(b2_array[0]); //set b0 bit 00672 //LED3 00673 //set green bits 00674 spi.write(g3_array[7]); //set g7 bit 00675 spi.write(g3_array[6]); //set g6 bit 00676 spi.write(g3_array[5]); //set g5 bit 00677 spi.write(g3_array[4]); //set g4 bit 00678 spi.write(g3_array[3]); //set g3 bit 00679 spi.write(g3_array[2]); //set g2 bit 00680 spi.write(g3_array[1]); //set g1 bit 00681 spi.write(g3_array[0]);//set g0 bit 00682 //set red bits 00683 spi.write(r3_array[7]);//set r7 bit 00684 spi.write(r3_array[6]); //set r6 bit 00685 spi.write(r3_array[5]); //set r5 bit 00686 spi.write(r3_array[4]); //set r4 bit 00687 spi.write(r3_array[3]); //set r3 bit 00688 spi.write(r3_array[2]); //set r2 bit 00689 spi.write(r3_array[1]); //set r1 bit 00690 spi.write(r3_array[0]); //set r0 bit 00691 //set blue bits 00692 spi.write(b3_array[7]); //set b7 bit 00693 spi.write(b3_array[6]); //set b6 bit 00694 spi.write(b3_array[5]); //set b5 bit 00695 spi.write(b3_array[4]); //set b4 bit 00696 spi.write(b3_array[3]); //set b3 bit 00697 spi.write(b3_array[2]); //set b2 bit 00698 spi.write(b3_array[1]); //set b1 bit 00699 spi.write(b3_array[0]); //set b0 bit 00700 //LED4 00701 //set green bits 00702 spi.write(g4_array[7]); //set g7 bit 00703 spi.write(g4_array[6]); //set g6 bit 00704 spi.write(g4_array[5]); //set g5 bit 00705 spi.write(g4_array[4]); //set g4 bit 00706 spi.write(g4_array[3]); //set g3 bit 00707 spi.write(g4_array[2]); //set g2 bit 00708 spi.write(g4_array[1]); //set g1 bit 00709 spi.write(g4_array[0]);//set g0 bit 00710 //set red bits 00711 spi.write(r4_array[7]);//set r7 bit 00712 spi.write(r4_array[6]); //set r6 bit 00713 spi.write(r4_array[5]); //set r5 bit 00714 spi.write(r4_array[4]); //set r4 bit 00715 spi.write(r4_array[3]); //set r3 bit 00716 spi.write(r4_array[2]); //set r2 bit 00717 spi.write(r4_array[1]); //set r1 bit 00718 spi.write(r4_array[0]); //set r0 bit 00719 //set blue bits 00720 spi.write(b4_array[7]); //set b7 bit 00721 spi.write(b4_array[6]); //set b6 bit 00722 spi.write(b4_array[5]); //set b5 bit 00723 spi.write(b4_array[4]); //set b4 bit 00724 spi.write(b4_array[3]); //set b3 bit 00725 spi.write(b4_array[2]); //set b2 bit 00726 spi.write(b4_array[1]); //set b1 bit 00727 spi.write(b4_array[0]); //set b0 bit 00728 //LED5 00729 //set green bits 00730 spi.write(g5_array[7]); //set g7 bit 00731 spi.write(g5_array[6]); //set g6 bit 00732 spi.write(g5_array[5]); //set g5 bit 00733 spi.write(g5_array[4]); //set g4 bit 00734 spi.write(g5_array[3]); //set g3 bit 00735 spi.write(g5_array[2]); //set g2 bit 00736 spi.write(g5_array[1]); //set g1 bit 00737 spi.write(g5_array[0]);//set g0 bit 00738 //set red bits 00739 spi.write(r5_array[7]);//set r7 bit 00740 spi.write(r5_array[6]); //set r6 bit 00741 spi.write(r5_array[5]); //set r5 bit 00742 spi.write(r5_array[4]); //set r4 bit 00743 spi.write(r5_array[3]); //set r3 bit 00744 spi.write(r5_array[2]); //set r2 bit 00745 spi.write(r5_array[1]); //set r1 bit 00746 spi.write(r5_array[0]); //set r0 bit 00747 //set blue bits 00748 spi.write(b5_array[7]); //set b7 bit 00749 spi.write(b5_array[6]); //set b6 bit 00750 spi.write(b5_array[5]); //set b5 bit 00751 spi.write(b5_array[4]); //set b4 bit 00752 spi.write(b5_array[3]); //set b3 bit 00753 spi.write(b5_array[2]); //set b2 bit 00754 spi.write(b5_array[1]); //set b1 bit 00755 spi.write(b5_array[0]); //set b0 bit 00756 //LED6 00757 //set green bits 00758 spi.write(g6_array[7]); //set g7 bit 00759 spi.write(g6_array[6]); //set g6 bit 00760 spi.write(g6_array[5]); //set g5 bit 00761 spi.write(g6_array[4]); //set g4 bit 00762 spi.write(g6_array[3]); //set g3 bit 00763 spi.write(g6_array[2]); //set g2 bit 00764 spi.write(g6_array[1]); //set g1 bit 00765 spi.write(g6_array[0]);//set g0 bit 00766 //set red bits 00767 spi.write(r6_array[7]);//set r7 bit 00768 spi.write(r6_array[6]); //set r6 bit 00769 spi.write(r6_array[5]); //set r5 bit 00770 spi.write(r6_array[4]); //set r4 bit 00771 spi.write(r6_array[3]); //set r3 bit 00772 spi.write(r6_array[2]); //set r2 bit 00773 spi.write(r6_array[1]); //set r1 bit 00774 spi.write(r6_array[0]); //set r0 bit 00775 //set blue bits 00776 spi.write(b6_array[7]); //set b7 bit 00777 spi.write(b6_array[6]); //set b6 bit 00778 spi.write(b6_array[5]); //set b5 bit 00779 spi.write(b6_array[4]); //set b4 bit 00780 spi.write(b6_array[3]); //set b3 bit 00781 spi.write(b6_array[2]); //set b2 bit 00782 spi.write(b6_array[1]); //set b1 bit 00783 spi.write(b6_array[0]); //set b0 bit 00784 //LED7 00785 //set green bits 00786 spi.write(g7_array[7]); //set g7 bit 00787 spi.write(g7_array[6]); //set g6 bit 00788 spi.write(g7_array[5]); //set g5 bit 00789 spi.write(g7_array[4]); //set g4 bit 00790 spi.write(g7_array[3]); //set g3 bit 00791 spi.write(g7_array[2]); //set g2 bit 00792 spi.write(g7_array[1]); //set g1 bit 00793 spi.write(g7_array[0]);//set g0 bit 00794 //set red bits 00795 spi.write(r7_array[7]);//set r7 bit 00796 spi.write(r7_array[6]); //set r6 bit 00797 spi.write(r7_array[5]); //set r5 bit 00798 spi.write(r7_array[4]); //set r4 bit 00799 spi.write(r7_array[3]); //set r3 bit 00800 spi.write(r7_array[2]); //set r2 bit 00801 spi.write(r7_array[1]); //set r1 bit 00802 spi.write(r7_array[0]); //set r0 bit 00803 //set blue bits 00804 spi.write(b7_array[7]); //set b7 bit 00805 spi.write(b7_array[6]); //set b6 bit 00806 spi.write(b7_array[5]); //set b5 bit 00807 spi.write(b7_array[4]); //set b4 bit 00808 spi.write(b7_array[3]); //set b3 bit 00809 spi.write(b7_array[2]); //set b2 bit 00810 spi.write(b7_array[1]); //set b1 bit 00811 spi.write(b7_array[0]); //set b0 bit 00812 //wait for latch 00813 wait_us(60); 00814 } 00815 00816 void neopixels_spi::setRGBPixels2(int colours[8][3]){ 00817 //translate int values to array of 0xF00 (0) and 0xFF0 (1) binary 00818 int r0_array[8]; //LED0 00819 int g0_array[8]; 00820 int b0_array[8]; 00821 memcpy(r0_array, decimalToBinary(colours[0][0]), sizeof(r0_array)); 00822 memcpy(g0_array, decimalToBinary(colours[0][1]), sizeof(g0_array)); 00823 memcpy(b0_array, decimalToBinary(colours[0][2]), sizeof(b0_array)); 00824 int r1_array[8]; //LED1 00825 int g1_array[8]; 00826 int b1_array[8]; 00827 memcpy(r1_array, decimalToBinary(colours[1][0]), sizeof(r1_array)); 00828 memcpy(g1_array, decimalToBinary(colours[1][1]), sizeof(g1_array)); 00829 memcpy(b1_array, decimalToBinary(colours[1][2]), sizeof(b1_array)); 00830 int r2_array[8]; //LED2 00831 int g2_array[8]; 00832 int b2_array[8]; 00833 memcpy(r2_array, decimalToBinary(colours[2][0]), sizeof(r2_array)); 00834 memcpy(g2_array, decimalToBinary(colours[2][1]), sizeof(g2_array)); 00835 memcpy(b2_array, decimalToBinary(colours[2][2]), sizeof(b2_array)); 00836 int r3_array[8]; //LED3 00837 int g3_array[8]; 00838 int b3_array[8]; 00839 memcpy(r3_array, decimalToBinary(colours[3][0]), sizeof(r3_array)); 00840 memcpy(g3_array, decimalToBinary(colours[3][1]), sizeof(g3_array)); 00841 memcpy(b3_array, decimalToBinary(colours[3][2]), sizeof(b3_array)); 00842 int r4_array[8]; //LED4 00843 int g4_array[8]; 00844 int b4_array[8]; 00845 memcpy(r4_array, decimalToBinary(colours[4][0]), sizeof(r4_array)); 00846 memcpy(g4_array, decimalToBinary(colours[4][1]), sizeof(g4_array)); 00847 memcpy(b4_array, decimalToBinary(colours[4][2]), sizeof(b4_array)); 00848 int r5_array[8]; //LED5 00849 int g5_array[8]; 00850 int b5_array[8]; 00851 memcpy(r5_array, decimalToBinary(colours[5][0]), sizeof(r5_array)); 00852 memcpy(g5_array, decimalToBinary(colours[5][1]), sizeof(g5_array)); 00853 memcpy(b5_array, decimalToBinary(colours[5][2]), sizeof(b5_array)); 00854 int r6_array[8]; //LED6 00855 int g6_array[8]; 00856 int b6_array[8]; 00857 memcpy(r6_array, decimalToBinary(colours[6][0]), sizeof(r6_array)); 00858 memcpy(g6_array, decimalToBinary(colours[6][1]), sizeof(g6_array)); 00859 memcpy(b6_array, decimalToBinary(colours[6][2]), sizeof(b6_array)); 00860 int r7_array[8]; //LED7 00861 int g7_array[8]; 00862 int b7_array[8]; 00863 memcpy(r7_array, decimalToBinary(colours[7][0]), sizeof(r7_array)); 00864 memcpy(g7_array, decimalToBinary(colours[7][1]), sizeof(g7_array)); 00865 memcpy(b7_array, decimalToBinary(colours[7][2]), sizeof(b7_array)); 00866 00867 //send commands to LED Driver 00868 //initialize SPI 00869 spi_init(); 00870 //LED0 00871 //set green bits 00872 spi2.write(g0_array[7]); //set g7 bit 00873 spi2.write(g0_array[6]); //set g6 bit 00874 spi2.write(g0_array[5]); //set g5 bit 00875 spi2.write(g0_array[4]); //set g4 bit 00876 spi2.write(g0_array[3]); //set g3 bit 00877 spi2.write(g0_array[2]); //set g2 bit 00878 spi2.write(g0_array[1]); //set g1 bit 00879 spi2.write(g0_array[0]);//set g0 bit 00880 //set red bits 00881 spi2.write(r0_array[7]);//set r7 bit 00882 spi2.write(r0_array[6]); //set r6 bit 00883 spi2.write(r0_array[5]); //set r5 bit 00884 spi2.write(r0_array[4]); //set r4 bit 00885 spi2.write(r0_array[3]); //set r3 bit 00886 spi2.write(r0_array[2]); //set r2 bit 00887 spi2.write(r0_array[1]); //set r1 bit 00888 spi2.write(r0_array[0]); //set r0 bit 00889 //set blue bits 00890 spi2.write(b0_array[7]); //set b7 bit 00891 spi2.write(b0_array[6]); //set b6 bit 00892 spi2.write(b0_array[5]); //set b5 bit 00893 spi2.write(b0_array[4]); //set b4 bit 00894 spi2.write(b0_array[3]); //set b3 bit 00895 spi2.write(b0_array[2]); //set b2 bit 00896 spi2.write(b0_array[1]); //set b1 bit 00897 spi2.write(b0_array[0]); //set b0 bit 00898 //LED1 00899 //set green bits 00900 spi2.write(g1_array[7]); //set g7 bit 00901 spi2.write(g1_array[6]); //set g6 bit 00902 spi2.write(g1_array[5]); //set g5 bit 00903 spi2.write(g1_array[4]); //set g4 bit 00904 spi2.write(g1_array[3]); //set g3 bit 00905 spi2.write(g1_array[2]); //set g2 bit 00906 spi2.write(g1_array[1]); //set g1 bit 00907 spi2.write(g1_array[0]);//set g0 bit 00908 //set red bits 00909 spi2.write(r1_array[7]);//set r7 bit 00910 spi2.write(r1_array[6]); //set r6 bit 00911 spi2.write(r1_array[5]); //set r5 bit 00912 spi2.write(r1_array[4]); //set r4 bit 00913 spi2.write(r1_array[3]); //set r3 bit 00914 spi2.write(r1_array[2]); //set r2 bit 00915 spi2.write(r1_array[1]); //set r1 bit 00916 spi2.write(r1_array[0]); //set r0 bit 00917 //set blue bits 00918 spi2.write(b1_array[7]); //set b7 bit 00919 spi2.write(b1_array[6]); //set b6 bit 00920 spi2.write(b1_array[5]); //set b5 bit 00921 spi2.write(b1_array[4]); //set b4 bit 00922 spi2.write(b1_array[3]); //set b3 bit 00923 spi2.write(b1_array[2]); //set b2 bit 00924 spi2.write(b1_array[1]); //set b1 bit 00925 spi2.write(b1_array[0]); //set b0 bit 00926 //LED2 00927 //set green bits 00928 spi2.write(g2_array[7]); //set g7 bit 00929 spi2.write(g2_array[6]); //set g6 bit 00930 spi2.write(g2_array[5]); //set g5 bit 00931 spi2.write(g2_array[4]); //set g4 bit 00932 spi2.write(g2_array[3]); //set g3 bit 00933 spi2.write(g2_array[2]); //set g2 bit 00934 spi2.write(g2_array[1]); //set g1 bit 00935 spi2.write(g2_array[0]);//set g0 bit 00936 //set red bits 00937 spi2.write(r2_array[7]);//set r7 bit 00938 spi2.write(r2_array[6]); //set r6 bit 00939 spi2.write(r2_array[5]); //set r5 bit 00940 spi2.write(r2_array[4]); //set r4 bit 00941 spi2.write(r2_array[3]); //set r3 bit 00942 spi2.write(r2_array[2]); //set r2 bit 00943 spi2.write(r2_array[1]); //set r1 bit 00944 spi2.write(r2_array[0]); //set r0 bit 00945 //set blue bits 00946 spi2.write(b2_array[7]); //set b7 bit 00947 spi2.write(b2_array[6]); //set b6 bit 00948 spi2.write(b2_array[5]); //set b5 bit 00949 spi2.write(b2_array[4]); //set b4 bit 00950 spi2.write(b2_array[3]); //set b3 bit 00951 spi2.write(b2_array[2]); //set b2 bit 00952 spi2.write(b2_array[1]); //set b1 bit 00953 spi2.write(b2_array[0]); //set b0 bit 00954 //LED3 00955 //set green bits 00956 spi2.write(g3_array[7]); //set g7 bit 00957 spi2.write(g3_array[6]); //set g6 bit 00958 spi2.write(g3_array[5]); //set g5 bit 00959 spi2.write(g3_array[4]); //set g4 bit 00960 spi2.write(g3_array[3]); //set g3 bit 00961 spi2.write(g3_array[2]); //set g2 bit 00962 spi2.write(g3_array[1]); //set g1 bit 00963 spi2.write(g3_array[0]);//set g0 bit 00964 //set red bits 00965 spi2.write(r3_array[7]);//set r7 bit 00966 spi2.write(r3_array[6]); //set r6 bit 00967 spi2.write(r3_array[5]); //set r5 bit 00968 spi2.write(r3_array[4]); //set r4 bit 00969 spi2.write(r3_array[3]); //set r3 bit 00970 spi2.write(r3_array[2]); //set r2 bit 00971 spi2.write(r3_array[1]); //set r1 bit 00972 spi2.write(r3_array[0]); //set r0 bit 00973 //set blue bits 00974 spi2.write(b3_array[7]); //set b7 bit 00975 spi2.write(b3_array[6]); //set b6 bit 00976 spi2.write(b3_array[5]); //set b5 bit 00977 spi2.write(b3_array[4]); //set b4 bit 00978 spi2.write(b3_array[3]); //set b3 bit 00979 spi2.write(b3_array[2]); //set b2 bit 00980 spi2.write(b3_array[1]); //set b1 bit 00981 spi2.write(b3_array[0]); //set b0 bit 00982 //LED4 00983 //set green bits 00984 spi2.write(g4_array[7]); //set g7 bit 00985 spi2.write(g4_array[6]); //set g6 bit 00986 spi2.write(g4_array[5]); //set g5 bit 00987 spi2.write(g4_array[4]); //set g4 bit 00988 spi2.write(g4_array[3]); //set g3 bit 00989 spi2.write(g4_array[2]); //set g2 bit 00990 spi2.write(g4_array[1]); //set g1 bit 00991 spi2.write(g4_array[0]);//set g0 bit 00992 //set red bits 00993 spi2.write(r4_array[7]);//set r7 bit 00994 spi2.write(r4_array[6]); //set r6 bit 00995 spi2.write(r4_array[5]); //set r5 bit 00996 spi2.write(r4_array[4]); //set r4 bit 00997 spi2.write(r4_array[3]); //set r3 bit 00998 spi2.write(r4_array[2]); //set r2 bit 00999 spi2.write(r4_array[1]); //set r1 bit 01000 spi2.write(r4_array[0]); //set r0 bit 01001 //set blue bits 01002 spi2.write(b4_array[7]); //set b7 bit 01003 spi2.write(b4_array[6]); //set b6 bit 01004 spi2.write(b4_array[5]); //set b5 bit 01005 spi2.write(b4_array[4]); //set b4 bit 01006 spi2.write(b4_array[3]); //set b3 bit 01007 spi2.write(b4_array[2]); //set b2 bit 01008 spi2.write(b4_array[1]); //set b1 bit 01009 spi2.write(b4_array[0]); //set b0 bit 01010 //LED5 01011 //set green bits 01012 spi2.write(g5_array[7]); //set g7 bit 01013 spi2.write(g5_array[6]); //set g6 bit 01014 spi2.write(g5_array[5]); //set g5 bit 01015 spi2.write(g5_array[4]); //set g4 bit 01016 spi2.write(g5_array[3]); //set g3 bit 01017 spi2.write(g5_array[2]); //set g2 bit 01018 spi2.write(g5_array[1]); //set g1 bit 01019 spi2.write(g5_array[0]);//set g0 bit 01020 //set red bits 01021 spi2.write(r5_array[7]);//set r7 bit 01022 spi2.write(r5_array[6]); //set r6 bit 01023 spi2.write(r5_array[5]); //set r5 bit 01024 spi2.write(r5_array[4]); //set r4 bit 01025 spi2.write(r5_array[3]); //set r3 bit 01026 spi2.write(r5_array[2]); //set r2 bit 01027 spi2.write(r5_array[1]); //set r1 bit 01028 spi2.write(r5_array[0]); //set r0 bit 01029 //set blue bits 01030 spi2.write(b5_array[7]); //set b7 bit 01031 spi2.write(b5_array[6]); //set b6 bit 01032 spi2.write(b5_array[5]); //set b5 bit 01033 spi2.write(b5_array[4]); //set b4 bit 01034 spi2.write(b5_array[3]); //set b3 bit 01035 spi2.write(b5_array[2]); //set b2 bit 01036 spi2.write(b5_array[1]); //set b1 bit 01037 spi2.write(b5_array[0]); //set b0 bit 01038 //LED6 01039 //set green bits 01040 spi2.write(g6_array[7]); //set g7 bit 01041 spi2.write(g6_array[6]); //set g6 bit 01042 spi2.write(g6_array[5]); //set g5 bit 01043 spi2.write(g6_array[4]); //set g4 bit 01044 spi2.write(g6_array[3]); //set g3 bit 01045 spi2.write(g6_array[2]); //set g2 bit 01046 spi2.write(g6_array[1]); //set g1 bit 01047 spi2.write(g6_array[0]);//set g0 bit 01048 //set red bits 01049 spi2.write(r6_array[7]);//set r7 bit 01050 spi2.write(r6_array[6]); //set r6 bit 01051 spi2.write(r6_array[5]); //set r5 bit 01052 spi2.write(r6_array[4]); //set r4 bit 01053 spi2.write(r6_array[3]); //set r3 bit 01054 spi2.write(r6_array[2]); //set r2 bit 01055 spi2.write(r6_array[1]); //set r1 bit 01056 spi2.write(r6_array[0]); //set r0 bit 01057 //set blue bits 01058 spi2.write(b6_array[7]); //set b7 bit 01059 spi2.write(b6_array[6]); //set b6 bit 01060 spi2.write(b6_array[5]); //set b5 bit 01061 spi2.write(b6_array[4]); //set b4 bit 01062 spi2.write(b6_array[3]); //set b3 bit 01063 spi2.write(b6_array[2]); //set b2 bit 01064 spi2.write(b6_array[1]); //set b1 bit 01065 spi2.write(b6_array[0]); //set b0 bit 01066 //LED7 01067 //set green bits 01068 spi2.write(g7_array[7]); //set g7 bit 01069 spi2.write(g7_array[6]); //set g6 bit 01070 spi2.write(g7_array[5]); //set g5 bit 01071 spi2.write(g7_array[4]); //set g4 bit 01072 spi2.write(g7_array[3]); //set g3 bit 01073 spi2.write(g7_array[2]); //set g2 bit 01074 spi2.write(g7_array[1]); //set g1 bit 01075 spi2.write(g7_array[0]);//set g0 bit 01076 //set red bits 01077 spi2.write(r7_array[7]);//set r7 bit 01078 spi2.write(r7_array[6]); //set r6 bit 01079 spi2.write(r7_array[5]); //set r5 bit 01080 spi2.write(r7_array[4]); //set r4 bit 01081 spi2.write(r7_array[3]); //set r3 bit 01082 spi2.write(r7_array[2]); //set r2 bit 01083 spi2.write(r7_array[1]); //set r1 bit 01084 spi2.write(r7_array[0]); //set r0 bit 01085 //set blue bits 01086 spi2.write(b7_array[7]); //set b7 bit 01087 spi2.write(b7_array[6]); //set b6 bit 01088 spi2.write(b7_array[5]); //set b5 bit 01089 spi2.write(b7_array[4]); //set b4 bit 01090 spi2.write(b7_array[3]); //set b3 bit 01091 spi2.write(b7_array[2]); //set b2 bit 01092 spi2.write(b7_array[1]); //set b1 bit 01093 spi2.write(b7_array[0]); //set b0 bit 01094 //wait for latch 01095 wait_us(60); 01096 } 01097 int * neopixels_spi ::decimalToBinary(int n) // converts decimal value to 8 bit array of 1's (0xFF0) and 0's (0xF00) 01098 { 01099 int reminder; 01100 int i=0; 01101 int static binary[8]; //initialize to 00000000 01102 while (n!=0) 01103 { 01104 reminder=n%2; 01105 if(reminder == 1){ 01106 binary[i] = 0xFF0; 01107 } 01108 if(reminder == 0){ 01109 binary[i] = 0xF00; 01110 } 01111 n = n/2; 01112 i++; 01113 } 01114 //sets the remainder of the digits to 0xF00 if n reaches 0 before i = 7 01115 for(;i<8;i++){ 01116 binary[i] = 0xF00; 01117 } 01118 return binary; 01119 } 01120 01121 void neopixels_spi ::spi_init(){ //initializes spi port to send 0 bit length 01122 spi.format(14, 0); //set spi at 14 bits/byte with clock phase and clock polarity at mode 0 01123 spi.frequency(10600000); //set frequency of spi clock at 96/9 - 10.6MHz 94.3 ns bit time length 01124 spi2.format(14, 0); //set spi at 14 bits/byte with clock phase and clock polarity at mode 0 01125 spi2.frequency(10600000); //set frequency of spi clock at 96/9 - 10.6MHz 94.3 ns bit time length 01126 01127 }
Generated on Mon Jul 25 2022 08:45:06 by
