Ivan Yohuno / neopixels_spi
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers neopixels_spi.cpp Source File

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     }