This program will run for https://www.sparkfun.com/products/760 as well as https://www.sparkfun.com/products/759 products from sparkfun

Dependencies:   mbed

Committer:
Neel
Date:
Sat Apr 20 20:05:35 2013 +0000
Revision:
0:ad2e87d4b20e
LED Matrix SPI controller from Sparkfun.com

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Neel 0:ad2e87d4b20e 1 #include "mbed.h"
Neel 0:ad2e87d4b20e 2
Neel 0:ad2e87d4b20e 3 void draw_pattern(int pattern);
Neel 0:ad2e87d4b20e 4 DigitalOut myled(LED1);
Neel 0:ad2e87d4b20e 5 SPI spi(p5, p6, p7); // mosi, miso, sclk
Neel 0:ad2e87d4b20e 6 DigitalOut cs(p14);
Neel 0:ad2e87d4b20e 7 SPI spi1(p11, p12, p13);
Neel 0:ad2e87d4b20e 8 DigitalOut cs1(p18);
Neel 0:ad2e87d4b20e 9
Neel 0:ad2e87d4b20e 10 /*volatile uint8_t arrow_green_right[] = {
Neel 0:ad2e87d4b20e 11 0, 0, 0, 1, 1, 1, 0, 0,
Neel 0:ad2e87d4b20e 12 0, 0, 0, 1, 1, 1, 0, 0,
Neel 0:ad2e87d4b20e 13 0, 0, 0, 1, 1, 1, 0, 0,
Neel 0:ad2e87d4b20e 14 0, 0, 0, 1, 1, 1, 0, 0,
Neel 0:ad2e87d4b20e 15 0, 0, 0, 1, 1, 1, 0, 0,
Neel 0:ad2e87d4b20e 16 0, 1, 0, 1, 1, 1, 0, 1,
Neel 0:ad2e87d4b20e 17 0, 0, 1, 1, 1, 1, 1, 0,
Neel 0:ad2e87d4b20e 18 0, 0, 0, 1, 1, 1, 0, 0,
Neel 0:ad2e87d4b20e 19 };*/
Neel 0:ad2e87d4b20e 20
Neel 0:ad2e87d4b20e 21 volatile uint8_t arrow_red_left[] = {
Neel 0:ad2e87d4b20e 22 0, 0, 0, 224, 224, 224, 0, 0,
Neel 0:ad2e87d4b20e 23 0, 0, 224, 224, 224, 224, 224, 0,
Neel 0:ad2e87d4b20e 24 0, 224, 0, 224, 224, 224, 0, 224,
Neel 0:ad2e87d4b20e 25 0, 0, 0, 224, 224, 224, 0, 0,
Neel 0:ad2e87d4b20e 26 0, 0, 0, 224, 224, 224, 0, 0,
Neel 0:ad2e87d4b20e 27 0, 0, 0, 224, 224, 224, 0, 0,
Neel 0:ad2e87d4b20e 28 0, 0, 0, 224, 224, 224, 0, 0,
Neel 0:ad2e87d4b20e 29 0, 0, 0, 224, 224, 224, 0, 0,
Neel 0:ad2e87d4b20e 30 };
Neel 0:ad2e87d4b20e 31
Neel 0:ad2e87d4b20e 32 volatile uint8_t arrow_blue_left[] = {
Neel 0:ad2e87d4b20e 33 0, 0, 0, 3, 3, 3, 0, 0,
Neel 0:ad2e87d4b20e 34 0, 0, 3, 3, 3, 3, 3, 0,
Neel 0:ad2e87d4b20e 35 0, 3, 0, 3, 3, 3, 0, 3,
Neel 0:ad2e87d4b20e 36 0, 0, 0, 3, 3, 3, 0, 0,
Neel 0:ad2e87d4b20e 37 0, 0, 0, 3, 3, 3, 0, 0,
Neel 0:ad2e87d4b20e 38 0, 0, 0, 3, 3, 3, 0, 0,
Neel 0:ad2e87d4b20e 39 0, 0, 0, 3, 3, 3, 0, 0,
Neel 0:ad2e87d4b20e 40 0, 0, 0, 3, 3, 3, 0, 0,
Neel 0:ad2e87d4b20e 41 };
Neel 0:ad2e87d4b20e 42
Neel 0:ad2e87d4b20e 43 volatile uint8_t arrow_white_left[] = {
Neel 0:ad2e87d4b20e 44 0, 0, 0, 95, 95, 95, 0, 0,
Neel 0:ad2e87d4b20e 45 0, 0, 95, 95, 95, 95, 95, 0,
Neel 0:ad2e87d4b20e 46 0, 95, 0, 95, 95, 95, 0, 95,
Neel 0:ad2e87d4b20e 47 0, 0, 0, 95, 95, 95, 0, 0,
Neel 0:ad2e87d4b20e 48 0, 0, 0, 95, 95, 95, 0, 0,
Neel 0:ad2e87d4b20e 49 0, 0, 0, 95, 95, 95, 0, 0,
Neel 0:ad2e87d4b20e 50 0, 0, 0, 95, 95, 95, 0, 0,
Neel 0:ad2e87d4b20e 51 0, 0, 0, 95, 95, 95, 0, 0,
Neel 0:ad2e87d4b20e 52 };
Neel 0:ad2e87d4b20e 53
Neel 0:ad2e87d4b20e 54 volatile uint8_t arrow_white_up[] = {
Neel 0:ad2e87d4b20e 55 0, 0, 0, 0, 0, 0, 0, 0,
Neel 0:ad2e87d4b20e 56 0, 0, 0, 0, 0, 95, 0, 0,
Neel 0:ad2e87d4b20e 57 0, 0, 0, 0, 0, 0, 95, 0,
Neel 0:ad2e87d4b20e 58 0, 95, 95, 95, 95, 95, 95, 95,
Neel 0:ad2e87d4b20e 59 0, 95, 95, 95, 95, 95, 95, 95,
Neel 0:ad2e87d4b20e 60 95, 95, 95, 95, 95, 95, 95, 95,
Neel 0:ad2e87d4b20e 61 0, 0, 0, 0, 0, 0, 95, 0,
Neel 0:ad2e87d4b20e 62 0, 0, 0, 0, 0, 95, 0, 0,
Neel 0:ad2e87d4b20e 63 };
Neel 0:ad2e87d4b20e 64
Neel 0:ad2e87d4b20e 65 volatile uint8_t arrow_blue_up[] = {
Neel 0:ad2e87d4b20e 66 0, 0, 0, 0, 0, 0, 0, 0,
Neel 0:ad2e87d4b20e 67 0, 0, 0, 0, 0, 3, 0, 0,
Neel 0:ad2e87d4b20e 68 0, 0, 0, 0, 0, 0, 3, 0,
Neel 0:ad2e87d4b20e 69 0, 3, 3, 3, 3, 3, 3, 3,
Neel 0:ad2e87d4b20e 70 0, 3, 3, 3, 3, 3, 3, 3,
Neel 0:ad2e87d4b20e 71 3, 3, 3, 3, 3, 3, 3, 3,
Neel 0:ad2e87d4b20e 72 0, 0, 0, 0, 0, 0, 3, 0,
Neel 0:ad2e87d4b20e 73 0, 0, 0, 0, 0, 3, 0, 0,
Neel 0:ad2e87d4b20e 74 };
Neel 0:ad2e87d4b20e 75
Neel 0:ad2e87d4b20e 76 volatile uint8_t arrow_white_down[] = {
Neel 0:ad2e87d4b20e 77 0, 0, 0, 0, 95, 0, 0, 0,
Neel 0:ad2e87d4b20e 78 0, 0, 0, 95, 0, 0, 0, 0,
Neel 0:ad2e87d4b20e 79 0, 0, 95, 95, 95, 95, 95, 95,
Neel 0:ad2e87d4b20e 80 95, 95, 95, 95, 95, 95, 95, 95,
Neel 0:ad2e87d4b20e 81 95, 0, 95, 95, 95, 95, 95, 95,
Neel 0:ad2e87d4b20e 82 95, 0, 0, 95, 0, 0, 0, 0,
Neel 0:ad2e87d4b20e 83 0, 0, 0, 0, 95, 0, 0, 0,
Neel 0:ad2e87d4b20e 84 0, 0, 0, 0, 0, 0, 0, 0,
Neel 0:ad2e87d4b20e 85 };
Neel 0:ad2e87d4b20e 86
Neel 0:ad2e87d4b20e 87 volatile uint8_t arrow_blue_down[] = {
Neel 0:ad2e87d4b20e 88 0, 0, 0, 0, 3, 0, 0, 0,
Neel 0:ad2e87d4b20e 89 0, 0, 0, 3, 0, 0, 0, 0,
Neel 0:ad2e87d4b20e 90 0, 0, 3, 3, 3, 3, 3, 3,
Neel 0:ad2e87d4b20e 91 3, 3, 3, 3, 3, 3, 3, 3,
Neel 0:ad2e87d4b20e 92 3, 0, 3, 3, 3, 3, 3, 3,
Neel 0:ad2e87d4b20e 93 3, 0, 0, 3, 0, 0, 0, 0,
Neel 0:ad2e87d4b20e 94 0, 0, 0, 0, 3, 0, 0, 0,
Neel 0:ad2e87d4b20e 95 0, 0, 0, 0, 0, 0, 0, 0,
Neel 0:ad2e87d4b20e 96 };
Neel 0:ad2e87d4b20e 97 int main()
Neel 0:ad2e87d4b20e 98 {
Neel 0:ad2e87d4b20e 99 // Setup the spi for 8 bit data, high steady state clock,
Neel 0:ad2e87d4b20e 100 // second edge capture, with a 100kHz clock rate
Neel 0:ad2e87d4b20e 101 spi.format(8,3);
Neel 0:ad2e87d4b20e 102 spi.frequency(100000);
Neel 0:ad2e87d4b20e 103 /*cs = 0;
Neel 0:ad2e87d4b20e 104 wait(0.5);
Neel 0:ad2e87d4b20e 105 spi.write(0x25);
Neel 0:ad2e87d4b20e 106 spi.write(2);
Neel 0:ad2e87d4b20e 107 wait(0.5);
Neel 0:ad2e87d4b20e 108 cs=1;*/
Neel 0:ad2e87d4b20e 109 spi1.format(8,3);
Neel 0:ad2e87d4b20e 110 spi1.frequency(100000);
Neel 0:ad2e87d4b20e 111 //draw_pattern(0);
Neel 0:ad2e87d4b20e 112 //draw_pattern(1);
Neel 0:ad2e87d4b20e 113 draw_pattern(2);
Neel 0:ad2e87d4b20e 114 draw_pattern(3);
Neel 0:ad2e87d4b20e 115 }
Neel 0:ad2e87d4b20e 116
Neel 0:ad2e87d4b20e 117
Neel 0:ad2e87d4b20e 118 void draw_pattern(int pattern)
Neel 0:ad2e87d4b20e 119 {
Neel 0:ad2e87d4b20e 120 switch(pattern)
Neel 0:ad2e87d4b20e 121 {
Neel 0:ad2e87d4b20e 122 case 0:
Neel 0:ad2e87d4b20e 123 {
Neel 0:ad2e87d4b20e 124 while(1)
Neel 0:ad2e87d4b20e 125 {
Neel 0:ad2e87d4b20e 126 cs = 0;
Neel 0:ad2e87d4b20e 127 //cs1 = 0;
Neel 0:ad2e87d4b20e 128 myled = 0;
Neel 0:ad2e87d4b20e 129 wait_ms(0.5);
Neel 0:ad2e87d4b20e 130 for(int k = 0; k<65;k++ )
Neel 0:ad2e87d4b20e 131 {
Neel 0:ad2e87d4b20e 132 spi.write(arrow_blue_down[k+1]);
Neel 0:ad2e87d4b20e 133 //spi1.write(arrow_blue_up[k+1]);
Neel 0:ad2e87d4b20e 134 }
Neel 0:ad2e87d4b20e 135 wait_ms(0.5);
Neel 0:ad2e87d4b20e 136 cs = 1;
Neel 0:ad2e87d4b20e 137 //cs1 = 1;
Neel 0:ad2e87d4b20e 138 }
Neel 0:ad2e87d4b20e 139
Neel 0:ad2e87d4b20e 140 /* {
Neel 0:ad2e87d4b20e 141 cs = 0;
Neel 0:ad2e87d4b20e 142 //cs1 = 0;
Neel 0:ad2e87d4b20e 143 myled = 0;
Neel 0:ad2e87d4b20e 144 wait_ms(0.5);
Neel 0:ad2e87d4b20e 145 for(int k = 0; k<65;k++ )
Neel 0:ad2e87d4b20e 146 {
Neel 0:ad2e87d4b20e 147 spi.write(arrow_blue_up[k+1]);
Neel 0:ad2e87d4b20e 148 //spi1.write(arrow_blue_up[k+1]);
Neel 0:ad2e87d4b20e 149 }
Neel 0:ad2e87d4b20e 150 wait_ms(0.5);
Neel 0:ad2e87d4b20e 151 cs = 1;
Neel 0:ad2e87d4b20e 152 //cs1 = 1;
Neel 0:ad2e87d4b20e 153 }*/
Neel 0:ad2e87d4b20e 154
Neel 0:ad2e87d4b20e 155
Neel 0:ad2e87d4b20e 156 }
Neel 0:ad2e87d4b20e 157 case 1:
Neel 0:ad2e87d4b20e 158 {
Neel 0:ad2e87d4b20e 159 int i=0;
Neel 0:ad2e87d4b20e 160 do
Neel 0:ad2e87d4b20e 161 {
Neel 0:ad2e87d4b20e 162 cs = 0;
Neel 0:ad2e87d4b20e 163 //cs1 = 0;
Neel 0:ad2e87d4b20e 164 myled = 1;
Neel 0:ad2e87d4b20e 165 wait_ms(0.5);
Neel 0:ad2e87d4b20e 166 for(int k=0;k<65;k++)
Neel 0:ad2e87d4b20e 167 {
Neel 0:ad2e87d4b20e 168 spi.write(arrow_red_left[k+1]);
Neel 0:ad2e87d4b20e 169 //spi1.write(image[k+1]);
Neel 0:ad2e87d4b20e 170 }
Neel 0:ad2e87d4b20e 171 wait_ms(0.5);
Neel 0:ad2e87d4b20e 172 cs = 1;
Neel 0:ad2e87d4b20e 173 myled=0;
Neel 0:ad2e87d4b20e 174 wait(1);
Neel 0:ad2e87d4b20e 175 i++;
Neel 0:ad2e87d4b20e 176 }while(i<10);
Neel 0:ad2e87d4b20e 177 break;
Neel 0:ad2e87d4b20e 178 }
Neel 0:ad2e87d4b20e 179 case 2:
Neel 0:ad2e87d4b20e 180 {
Neel 0:ad2e87d4b20e 181 int i=0;
Neel 0:ad2e87d4b20e 182 do
Neel 0:ad2e87d4b20e 183 {
Neel 0:ad2e87d4b20e 184 cs1 = 0;
Neel 0:ad2e87d4b20e 185 //cs1 = 0;
Neel 0:ad2e87d4b20e 186 myled = 1;
Neel 0:ad2e87d4b20e 187 wait_ms(0.5);
Neel 0:ad2e87d4b20e 188 for(int k=0;k<65;k++)
Neel 0:ad2e87d4b20e 189 {
Neel 0:ad2e87d4b20e 190 spi1.write(arrow_white_up[k+1]);
Neel 0:ad2e87d4b20e 191 //spi1.write(image[k+1]);
Neel 0:ad2e87d4b20e 192 }
Neel 0:ad2e87d4b20e 193 wait_ms(0.5);
Neel 0:ad2e87d4b20e 194 cs1 = 1;
Neel 0:ad2e87d4b20e 195 myled=0;
Neel 0:ad2e87d4b20e 196 wait(1);
Neel 0:ad2e87d4b20e 197 i++;
Neel 0:ad2e87d4b20e 198 }while(i<10);
Neel 0:ad2e87d4b20e 199 break;
Neel 0:ad2e87d4b20e 200 }
Neel 0:ad2e87d4b20e 201
Neel 0:ad2e87d4b20e 202 case 3:
Neel 0:ad2e87d4b20e 203 {
Neel 0:ad2e87d4b20e 204 int i=0;
Neel 0:ad2e87d4b20e 205 do
Neel 0:ad2e87d4b20e 206 {
Neel 0:ad2e87d4b20e 207 cs = 0;
Neel 0:ad2e87d4b20e 208 //cs1 = 0;
Neel 0:ad2e87d4b20e 209 myled = 1;
Neel 0:ad2e87d4b20e 210 wait_ms(0.5);
Neel 0:ad2e87d4b20e 211 for(int k=0;k<65;k++)
Neel 0:ad2e87d4b20e 212 {
Neel 0:ad2e87d4b20e 213 spi.write(arrow_white_down[k+1]);
Neel 0:ad2e87d4b20e 214 //spi1.write(image[k+1]);
Neel 0:ad2e87d4b20e 215 }
Neel 0:ad2e87d4b20e 216 wait_ms(0.5);
Neel 0:ad2e87d4b20e 217 cs = 1;
Neel 0:ad2e87d4b20e 218 myled=0;
Neel 0:ad2e87d4b20e 219 wait(1);
Neel 0:ad2e87d4b20e 220 i++;
Neel 0:ad2e87d4b20e 221 }while(i<10);
Neel 0:ad2e87d4b20e 222 break;
Neel 0:ad2e87d4b20e 223 }
Neel 0:ad2e87d4b20e 224 }
Neel 0:ad2e87d4b20e 225 }