The code consists of displaying a BMP image using the RGB matrices extracted from MATLAB.

Dependencies:   ADXL345 mbed

Committer:
abarve9
Date:
Fri Dec 07 07:43:44 2012 +0000
Revision:
0:27ddc786c67d
The code consists of displaying a BMP image using the RGB matrices extracted from MATLAB.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
abarve9 0:27ddc786c67d 1 #include "ADXL345.h"
abarve9 0:27ddc786c67d 2 #include "mbed.h"
abarve9 0:27ddc786c67d 3 DigitalOut latch(p15);
abarve9 0:27ddc786c67d 4 DigitalOut enable(p16);
abarve9 0:27ddc786c67d 5 DigitalIn s1(p29);
abarve9 0:27ddc786c67d 6 DigitalIn s2(p30);
abarve9 0:27ddc786c67d 7 //Cycles through different colors on RGB LED
abarve9 0:27ddc786c67d 8 SPI spi(p11, p12, p13);
abarve9 0:27ddc786c67d 9 //Use SPI hardware to write color values to LED driver chip
abarve9 0:27ddc786c67d 10
abarve9 0:27ddc786c67d 11 PortOut ledport(Port1, 0xFFFFFFFF);
abarve9 0:27ddc786c67d 12
abarve9 0:27ddc786c67d 13 ADXL345 accelerometer(p5, p6, p7, p8);
abarve9 0:27ddc786c67d 14 //Serial pc(USBTX, USBRX);
abarve9 0:27ddc786c67d 15
abarve9 0:27ddc786c67d 16 DigitalOut led8(p28);
abarve9 0:27ddc786c67d 17 DigitalOut led7(p27);
abarve9 0:27ddc786c67d 18 DigitalOut led6(p26);
abarve9 0:27ddc786c67d 19 DigitalOut led5(p25);
abarve9 0:27ddc786c67d 20 DigitalOut led4(p24);
abarve9 0:27ddc786c67d 21 DigitalOut led3(p23);
abarve9 0:27ddc786c67d 22 DigitalOut led2(p22);
abarve9 0:27ddc786c67d 23 DigitalOut led1(p21);
abarve9 0:27ddc786c67d 24
abarve9 0:27ddc786c67d 25 // ------------------------- Zigbee -------------
abarve9 0:27ddc786c67d 26
abarve9 0:27ddc786c67d 27 Serial pc1(USBTX, USBRX);
abarve9 0:27ddc786c67d 28 const int redcolor[10][8]={
abarve9 0:27ddc786c67d 29 {255 , 250, 0, 0 , 0, 0, 244, 255},
abarve9 0:27ddc786c67d 30 {251, 0, 0, 219 ,225 , 0 , 0 ,244},
abarve9 0:27ddc786c67d 31 { 0 , 0 ,255 , 255, 255 , 255 , 0 , 0},
abarve9 0:27ddc786c67d 32 {0 , 222, 255, 254, 254, 255, 242 , 0},
abarve9 0:27ddc786c67d 33 {0 , 252 , 254 , 254 , 254 , 254 , 255, 0},
abarve9 0:27ddc786c67d 34 {0 , 254 ,254 , 254 , 254 , 254 , 255 , 0},
abarve9 0:27ddc786c67d 35 {0 , 230 ,255 , 254, 254, 255, 246, 0},
abarve9 0:27ddc786c67d 36 {0 , 0 , 255 , 255 , 255 , 255, 0, 0},
abarve9 0:27ddc786c67d 37 {244 , 0 , 0 , 244 , 250 , 0 , 0 ,232},
abarve9 0:27ddc786c67d 38 {255 , 238 , 0 , 0 , 0 , 0 , 227 , 255}
abarve9 0:27ddc786c67d 39 };
abarve9 0:27ddc786c67d 40
abarve9 0:27ddc786c67d 41 const int greencolor[10][8] = {
abarve9 0:27ddc786c67d 42
abarve9 0:27ddc786c67d 43 {255, 250 , 0 , 0 , 0 , 0 , 244 , 255},
abarve9 0:27ddc786c67d 44 {251 , 0 , 0 , 219 ,217 , 0 , 0 , 244},
abarve9 0:27ddc786c67d 45 { 0 , 0 ,253 , 254, 245 , 255 , 0, 0},
abarve9 0:27ddc786c67d 46 {0 , 212 , 246 ,254 , 242 , 244 ,230 , 0},
abarve9 0:27ddc786c67d 47 {0 , 240 , 242 , 254 ,242 , 242 , 249 , 0},
abarve9 0:27ddc786c67d 48 {0 , 241 , 242 , 254 , 242, 242 , 250, 0},
abarve9 0:27ddc786c67d 49 {0 ,220 , 245 , 255 , 242 , 243, 235 , 0},
abarve9 0:27ddc786c67d 50 {0 , 0 , 255 , 255 , 243 , 255 , 0 , 0},
abarve9 0:27ddc786c67d 51 { 244 , 0 , 0 , 244 ,242 , 0 , 0 , 232},
abarve9 0:27ddc786c67d 52 { 255 , 238 , 0 , 0 , 0 , 0 , 228, 255}
abarve9 0:27ddc786c67d 53 };
abarve9 0:27ddc786c67d 54
abarve9 0:27ddc786c67d 55 const int bluecolor[10][8]= {
abarve9 0:27ddc786c67d 56 {255 , 251 ,0, 0 , 0 , 0, 246, 255},
abarve9 0:27ddc786c67d 57 {253 , 0 , 0 , 0 , 0 , 0 , 0 , 247},
abarve9 0:27ddc786c67d 58 { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},
abarve9 0:27ddc786c67d 59 {0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},
abarve9 0:27ddc786c67d 60 {0 , 0 , 0 , 0 , 0 , 0, 0 , 0},
abarve9 0:27ddc786c67d 61 {0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},
abarve9 0:27ddc786c67d 62 {0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},
abarve9 0:27ddc786c67d 63 {0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},
abarve9 0:27ddc786c67d 64 {247 , 0 , 0 , 0 , 0 , 0 , 0, 237},
abarve9 0:27ddc786c67d 65 {255 , 240 , 0 , 0 , 0 , 0, 232 ,255}
abarve9 0:27ddc786c67d 66 };
abarve9 0:27ddc786c67d 67 void RGB_LED(int red, int green, int blue)
abarve9 0:27ddc786c67d 68 {
abarve9 0:27ddc786c67d 69 unsigned int low_color=0;
abarve9 0:27ddc786c67d 70 unsigned int high_color=0;
abarve9 0:27ddc786c67d 71 high_color=(blue<<4)|((red&0x3C0)>>6);
abarve9 0:27ddc786c67d 72 low_color=(((red&0x3F)<<10)|(green));
abarve9 0:27ddc786c67d 73 spi.write(high_color);
abarve9 0:27ddc786c67d 74 spi.write(low_color);
abarve9 0:27ddc786c67d 75 latch=1;
abarve9 0:27ddc786c67d 76 latch=0;
abarve9 0:27ddc786c67d 77 }
abarve9 0:27ddc786c67d 78
abarve9 0:27ddc786c67d 79
abarve9 0:27ddc786c67d 80 int main()
abarve9 0:27ddc786c67d 81 {
abarve9 0:27ddc786c67d 82 int readings[3] = {0, 0, 0};
abarve9 0:27ddc786c67d 83 int i = 0;
abarve9 0:27ddc786c67d 84 const char text1[50] = "HI";
abarve9 0:27ddc786c67d 85 int len;
abarve9 0:27ddc786c67d 86 char character;
abarve9 0:27ddc786c67d 87 char currentchar = 0;
abarve9 0:27ddc786c67d 88 int LED_MASK = 0xFFFFFFFF;
abarve9 0:27ddc786c67d 89
abarve9 0:27ddc786c67d 90 int red=0;
abarve9 0:27ddc786c67d 91 int green=0;
abarve9 0:27ddc786c67d 92 int blue=0;
abarve9 0:27ddc786c67d 93 spi.format(16,0);
abarve9 0:27ddc786c67d 94 spi.frequency(500000);
abarve9 0:27ddc786c67d 95 enable=0;
abarve9 0:27ddc786c67d 96 latch=0;
abarve9 0:27ddc786c67d 97
abarve9 0:27ddc786c67d 98
abarve9 0:27ddc786c67d 99
abarve9 0:27ddc786c67d 100 len = 0;
abarve9 0:27ddc786c67d 101 for(int n = 0; text1[n] != '\0'; n++) {
abarve9 0:27ddc786c67d 102 len++;
abarve9 0:27ddc786c67d 103 }
abarve9 0:27ddc786c67d 104 float waitvalue = 0.06/((6*len) + 1);
abarve9 0:27ddc786c67d 105 pc1.printf("text1 = %s\n\r", text1);
abarve9 0:27ddc786c67d 106 // pc.printf("Device ID is: 0x%02x\r\n", accelerometer.getDevId());
abarve9 0:27ddc786c67d 107 wait(3);
abarve9 0:27ddc786c67d 108
abarve9 0:27ddc786c67d 109 //Go into standby mode to configure the device.
abarve9 0:27ddc786c67d 110 accelerometer.setPowerControl(0x00);
abarve9 0:27ddc786c67d 111
abarve9 0:27ddc786c67d 112 //Full resolution, +/-16g, 4mg/LSB.
abarve9 0:27ddc786c67d 113 accelerometer.setDataFormatControl(0x0B);
abarve9 0:27ddc786c67d 114
abarve9 0:27ddc786c67d 115 //3.2kHz data rate.
abarve9 0:27ddc786c67d 116 accelerometer.setDataRate(ADXL345_3200HZ);
abarve9 0:27ddc786c67d 117
abarve9 0:27ddc786c67d 118 //Measurement mode.
abarve9 0:27ddc786c67d 119 accelerometer.setPowerControl(0x08);
abarve9 0:27ddc786c67d 120
abarve9 0:27ddc786c67d 121 while (1) {
abarve9 0:27ddc786c67d 122
abarve9 0:27ddc786c67d 123 red = 0;
abarve9 0:27ddc786c67d 124 green = 0;
abarve9 0:27ddc786c67d 125 blue = 0;
abarve9 0:27ddc786c67d 126
abarve9 0:27ddc786c67d 127 accelerometer.getOutput(readings);
abarve9 0:27ddc786c67d 128
abarve9 0:27ddc786c67d 129 do {
abarve9 0:27ddc786c67d 130 accelerometer.getOutput(readings);
abarve9 0:27ddc786c67d 131 pc1.printf("| 1st while reading value = %i\n\r",(int16_t)readings[1]);
abarve9 0:27ddc786c67d 132 } while((int16_t)readings[1] < 50);
abarve9 0:27ddc786c67d 133
abarve9 0:27ddc786c67d 134 i = 0;
abarve9 0:27ddc786c67d 135 //while(text1[i] != '\0')
abarve9 0:27ddc786c67d 136 {
abarve9 0:27ddc786c67d 137
abarve9 0:27ddc786c67d 138 /* led8 = 0;
abarve9 0:27ddc786c67d 139 led7 = 0;
abarve9 0:27ddc786c67d 140 led6 = 0;
abarve9 0:27ddc786c67d 141 led5 = 0;
abarve9 0:27ddc786c67d 142 led4 = 0;
abarve9 0:27ddc786c67d 143 led3 = 0;
abarve9 0:27ddc786c67d 144 led2 = 0;
abarve9 0:27ddc786c67d 145 led1 = 0; */
abarve9 0:27ddc786c67d 146
abarve9 0:27ddc786c67d 147 for( int m=0; m< 8; m++) {
abarve9 0:27ddc786c67d 148 red = 0;
abarve9 0:27ddc786c67d 149 green = 0;
abarve9 0:27ddc786c67d 150 blue = 0;
abarve9 0:27ddc786c67d 151 RGB_LED(red,green,blue);
abarve9 0:27ddc786c67d 152 }
abarve9 0:27ddc786c67d 153 wait(waitvalue);
abarve9 0:27ddc786c67d 154
abarve9 0:27ddc786c67d 155 for( int m=0; m< 8; m++) {
abarve9 0:27ddc786c67d 156 red = 0;
abarve9 0:27ddc786c67d 157 green = 0;
abarve9 0:27ddc786c67d 158 blue = 0;
abarve9 0:27ddc786c67d 159 RGB_LED(red,green,blue);
abarve9 0:27ddc786c67d 160 }
abarve9 0:27ddc786c67d 161 wait(waitvalue);
abarve9 0:27ddc786c67d 162
abarve9 0:27ddc786c67d 163 //currentchar = text1[i];
abarve9 0:27ddc786c67d 164
abarve9 0:27ddc786c67d 165 for( int m =0; m < 10; m++) {
abarve9 0:27ddc786c67d 166 /*char mal = font[currentchar - 0x20][m];
abarve9 0:27ddc786c67d 167 led8 = mal & 0x80;
abarve9 0:27ddc786c67d 168 led7 = mal & 0x40;
abarve9 0:27ddc786c67d 169 led6 = mal & 0x20;
abarve9 0:27ddc786c67d 170 led5 = mal & 0x10;
abarve9 0:27ddc786c67d 171 led4 = mal & 0x08;
abarve9 0:27ddc786c67d 172 led3 = mal & 0x04;
abarve9 0:27ddc786c67d 173 led2 = mal & 0x02;
abarve9 0:27ddc786c67d 174 led1 = mal & 0x01;*/
abarve9 0:27ddc786c67d 175
abarve9 0:27ddc786c67d 176 // if(led8 == 1)
abarve9 0:27ddc786c67d 177
abarve9 0:27ddc786c67d 178 green = greencolor[m][7];
abarve9 0:27ddc786c67d 179 red = redcolor[m][7];
abarve9 0:27ddc786c67d 180 blue = bluecolor[m][7];
abarve9 0:27ddc786c67d 181 RGB_LED(red,green,blue);
abarve9 0:27ddc786c67d 182
abarve9 0:27ddc786c67d 183 green = greencolor[m][6];
abarve9 0:27ddc786c67d 184 red = redcolor[m][6];
abarve9 0:27ddc786c67d 185 blue = bluecolor[m][6];
abarve9 0:27ddc786c67d 186 RGB_LED(red,green,blue);
abarve9 0:27ddc786c67d 187
abarve9 0:27ddc786c67d 188 green = greencolor[m][5];
abarve9 0:27ddc786c67d 189 red = redcolor[m][5];
abarve9 0:27ddc786c67d 190 blue = bluecolor[m][5];
abarve9 0:27ddc786c67d 191 RGB_LED(red,green,blue);
abarve9 0:27ddc786c67d 192
abarve9 0:27ddc786c67d 193 green = greencolor[m][4];
abarve9 0:27ddc786c67d 194 red = redcolor[m][4];
abarve9 0:27ddc786c67d 195 blue = bluecolor[m][4];
abarve9 0:27ddc786c67d 196 RGB_LED(red,green,blue);
abarve9 0:27ddc786c67d 197
abarve9 0:27ddc786c67d 198 green = greencolor[m][3];
abarve9 0:27ddc786c67d 199 red = redcolor[m][3];
abarve9 0:27ddc786c67d 200 blue = bluecolor[m][3];
abarve9 0:27ddc786c67d 201 RGB_LED(red,green,blue);
abarve9 0:27ddc786c67d 202
abarve9 0:27ddc786c67d 203 green = greencolor[m][2];
abarve9 0:27ddc786c67d 204 red = redcolor[m][2];
abarve9 0:27ddc786c67d 205 blue = bluecolor[m][2];
abarve9 0:27ddc786c67d 206 RGB_LED(red,green,blue);
abarve9 0:27ddc786c67d 207
abarve9 0:27ddc786c67d 208 green = greencolor[m][1];
abarve9 0:27ddc786c67d 209 red = redcolor[m][1];
abarve9 0:27ddc786c67d 210 blue = bluecolor[1][m];
abarve9 0:27ddc786c67d 211 RGB_LED(red,green,blue);
abarve9 0:27ddc786c67d 212
abarve9 0:27ddc786c67d 213 green = greencolor[m][0];
abarve9 0:27ddc786c67d 214 red = redcolor[m][0];
abarve9 0:27ddc786c67d 215 blue = bluecolor[m][0];
abarve9 0:27ddc786c67d 216 RGB_LED(red,green,blue);
abarve9 0:27ddc786c67d 217
abarve9 0:27ddc786c67d 218
abarve9 0:27ddc786c67d 219 wait(waitvalue);
abarve9 0:27ddc786c67d 220 }
abarve9 0:27ddc786c67d 221 /* led8 = 0;
abarve9 0:27ddc786c67d 222 led7 = 0;
abarve9 0:27ddc786c67d 223 led6 = 0;
abarve9 0:27ddc786c67d 224 led5 = 0;
abarve9 0:27ddc786c67d 225 led4 = 0;
abarve9 0:27ddc786c67d 226 led3 = 0;
abarve9 0:27ddc786c67d 227 led2 = 0;
abarve9 0:27ddc786c67d 228 led1 = 0; */
abarve9 0:27ddc786c67d 229
abarve9 0:27ddc786c67d 230 for( int j=0; j< 8; j++) {
abarve9 0:27ddc786c67d 231 red = 0;
abarve9 0:27ddc786c67d 232 green = 0;
abarve9 0:27ddc786c67d 233 blue = 0;
abarve9 0:27ddc786c67d 234 RGB_LED(red,green,blue);
abarve9 0:27ddc786c67d 235 }
abarve9 0:27ddc786c67d 236 wait(waitvalue);
abarve9 0:27ddc786c67d 237
abarve9 0:27ddc786c67d 238 for( int j=0; j< 8; j++) {
abarve9 0:27ddc786c67d 239 red = 0;
abarve9 0:27ddc786c67d 240 green = 0;
abarve9 0:27ddc786c67d 241 blue = 0;
abarve9 0:27ddc786c67d 242 RGB_LED(red,green,blue);
abarve9 0:27ddc786c67d 243 }
abarve9 0:27ddc786c67d 244 wait(waitvalue);
abarve9 0:27ddc786c67d 245
abarve9 0:27ddc786c67d 246 }
abarve9 0:27ddc786c67d 247
abarve9 0:27ddc786c67d 248 do {
abarve9 0:27ddc786c67d 249 accelerometer.getOutput(readings);
abarve9 0:27ddc786c67d 250 pc1.printf("| 2nd while reading value = %i\n\r",(int16_t)readings[1]);
abarve9 0:27ddc786c67d 251 } while((int16_t)readings[1] > -50);
abarve9 0:27ddc786c67d 252
abarve9 0:27ddc786c67d 253 }
abarve9 0:27ddc786c67d 254 }