Aditya Barve
/
image_display
The code consists of displaying a BMP image using the RGB matrices extracted from MATLAB.
main.cpp@0:27ddc786c67d, 2012-12-07 (annotated)
- 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?
User | Revision | Line number | New 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 | } |