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.
main.cpp
00001 #include "ADXL345.h" 00002 #include "mbed.h" 00003 #include "iostream" 00004 #include "stdio.h" 00005 #include "stdlib.h" 00006 #include "string" 00007 00008 using namespace std; 00009 00010 PortOut ledport(Port1, 0xFFFFFFFF); 00011 ADXL345 accelerometer(p5, p6, p7, p8); 00012 //Serial pc(USBTX, USBRX); 00013 //---shiftbrite 00014 DigitalOut latch(p15); 00015 DigitalOut enable(p16); 00016 SPI spi(p11, p12, p13); 00017 00018 DigitalOut led8(p28); 00019 DigitalOut led7(p27); 00020 DigitalOut led6(p26); 00021 DigitalOut led5(p25); 00022 DigitalOut led4(p24); 00023 DigitalOut led3(p23); 00024 DigitalOut led2(p22); 00025 DigitalOut led1(p21); 00026 00027 // ------------------------- Zigbee ------------- 00028 00029 Serial xbee2(p9, p10); 00030 DigitalOut rst1(p17); 00031 Serial pc1(USBTX, USBRX); 00032 DigitalOut myled(LED2); 00033 00034 //----RGB Led function 00035 00036 void RGB_LED(int red, int green, int blue) 00037 { 00038 unsigned int low_color=0; 00039 unsigned int high_color=0; 00040 high_color=(blue<<4)|((red&0x3C0)>>6); 00041 low_color=(((red&0x3F)<<10)|(green)); 00042 spi.write(high_color); 00043 spi.write(low_color); 00044 latch=1; 00045 latch=0; 00046 } 00047 00048 int main() 00049 { 00050 int count=0; 00051 int readings[3] = {0, 0, 0}; 00052 //int del = 0; 00053 int16_t sum = 0; 00054 int16_t xval[50]; 00055 int i = 0; 00056 char text[30]; 00057 int len,len1; 00058 len1 = 0; 00059 len = 0; 00060 00061 //---------SHift brite 00062 00063 int red=0; 00064 int green=0; 00065 int blue=0; 00066 spi.format(16,0); 00067 spi.frequency(500000); 00068 enable=0; 00069 latch=0; 00070 00071 // --------- Zigbee 00072 00073 char character; 00074 rst1 = 0; //Set reset pin to 0 00075 myled = 0; 00076 wait_ms(1); 00077 rst1 = 1; //Set reset pin to 1 00078 wait_ms(1); 00079 00080 char buffer[20]; 00081 int global = 0; 00082 00083 //--- Zigbeeee 00084 00085 const char font[0x60][5] = { 00086 00087 {0x00,0x00,0x00,0x00,0x00}, // ASCII - 32 space 00088 {0x00,0x00,0xF9,0x00,0x00}, // ASCII - 33 ! 00089 {0x00,0xE0,0x00,0xE0,0x00}, // ASCII - 34 " 00090 {0x24,0x7E,0x24,0x7E,0x24}, // ASCII - 35 # 00091 {0x34,0x4A,0xFF,0x49,0x26}, // ASCII - 36 $ 00092 {0x22,0x04,0x08,0x10,0x22}, // ASCII - 37 % 00093 {0x26,0x59,0x4D,0x52,0x25}, // ASCII - 38 & 00094 {0x00,0x00,0xE0,0x00,0x00}, // ASCII - 39 ' 00095 {0x00,0x3C,0x42,0x81,0x00}, // ASCII - 40 ( 00096 {0x00,0x81,0x42,0x3C,0x00}, // ASCII - 41 ) 00097 {0x28,0x30,0xE0,0x30,0x28}, // ASCII - 42 * 00098 {0x08,0x08,0x3E,0x08,0x08}, // ASCII - 43 + 00099 {0x00,0x01,0x02,0x00,0x00}, // ASCII - 44 , 00100 {0x08,0x08,0x08,0x08,0x08}, // ASCII - 45 - 00101 {0x00,0x00,0x01,0x00,0x00}, // ASCII - 46 . 00102 {0x02,0x04,0x08,0x10,0x20}, // ASCII - 47 / 00103 {0x7E,0x81,0x81,0x81,0x7E}, // ASCII - 48 0 00104 {0x00,0x21,0xFF,0x01,0x00}, // ASCII - 49 1 00105 {0x41,0x83,0x85,0x89,0x71}, // ASCII - 50 2 00106 {0x42,0x91,0x91,0x91,0x6E}, // ASCII - 51 3 00107 {0xF0,0x10,0x10,0x10,0xFF}, // ASCII - 52 4 00108 {0xF2,0x91,0x91,0x91,0x8E}, // ASCII - 53 5 00109 {0x3E,0x51,0x91,0x91,0x8E}, // ASCII - 54 6 00110 {0x87,0x88,0x90,0xA0,0xC0}, // ASCII - 55 7 00111 {0x76,0x89,0x89,0x89,0x76}, // ASCII - 56 8 00112 {0x62,0x91,0x91,0x91,0x7e}, // ASCII - 57 9 00113 {0x00,0x00,0x24,0x00,0x00}, // ASCII - 58 : 00114 {0x00,0x01,0x12,0x00,0x00}, // ASCII - 59 ; 00115 {0x00,0x08,0x14,0x22,0x41}, // ASCII - 60 < 00116 {0x14,0x14,0x14,0x14,0x14}, // ASCII - 61 = 00117 {0x00,0x41,0x22,0x14,0x08}, // ASCII - 62 > 00118 {0x40,0x80,0x8D,0x90,0x60}, // ASCII - 63 ? 00119 {0x7E,0x81,0xBD,0xA5,0x78}, // ASCII - 64 @ 00120 {0x3F,0x48,0x88,0x48,0x3F}, // ASCII - 65 A 00121 {0xFF,0x91,0x91,0x99,0x66}, // ASCII - 66 B 00122 {0x3C,0x42,0x81,0x81,0x42}, // ASCII - 67 C 00123 {0xFF,0x81,0x81,0x42,0x3C}, // ASCII - 68 D 00124 {0xFF,0x91,0x91,0x91,0x81}, // ASCII - 69 E 00125 {0xFF,0x90,0x90,0x90,0x80}, // ASCII - 70 F 00126 {0x3E,0x41,0x8F,0x88,0x4F}, // ASCII - 71 G 00127 {0xFF,0x10,0x10,0x10,0xFF}, // ASCII - 72 H 00128 {0x00,0x81,0xFF,0x81,0x00}, // ASCII - 73 I 00129 {0x06,0x01,0x81,0xFE,0x80}, // ASCII - 74 J 00130 {0xFF,0x18,0x24,0x42,0x81}, // ASCII - 75 K 00131 {0xFF,0x01,0x01,0x01,0x01}, // ASCII - 76 L 00132 {0xFF,0x40,0x30,0x40,0xFF}, // ASCII - 77 M 00133 {0xFF,0x40,0x20,0x10,0xFF}, // ASCII - 78 N 00134 {0x7E,0x81,0x81,0x81,0x7E}, // ASCII - 79 O 00135 {0xFF,0x90,0x90,0x90,0x60}, // ASCII - 80 P 00136 {0x7E,0x81,0x85,0x82,0x7D}, // ASCII - 81 Q 00137 {0xFF,0x98,0x94,0x92,0x61}, // ASCII - 82 R 00138 {0x72,0x89,0x89,0x89,0x46}, // ASCII - 83 S 00139 {0x80,0x80,0xFF,0x80,0x80}, // ASCII - 84 T 00140 {0xFE,0x01,0x01,0x01,0xFE}, // ASCII - 85 U 00141 {0xFC,0x02,0x01,0x02,0xFC}, // ASCII - 86 V 00142 {0xFF,0x02,0x1C,0x02,0xFF}, // ASCII - 87 W 00143 {0xC3,0x24,0x18,0x24,0xC3}, // ASCII - 88 X 00144 {0xC0,0x20,0x1F,0x20,0xC0}, // ASCII - 89 Y 00145 {0x87,0x89,0x91,0xA1,0xC1}, // ASCII - 90 Z 00146 {0x00,0xFF,0x81,0x81,0x00}, // ASCII - 91 [ 00147 {0x20,0x10,0x08,0x04,0x02}, // ASCII - 92 '\' 00148 {0x00,0x81,0x81,0xFF,0x00}, // ASCII - 93 ] 00149 {0x20,0x40,0x80,0x40,0x20}, // ASCII - 94 ^ 00150 {0x01,0x01,0x01,0x01,0x01}, // ASCII - 95 _ 00151 {0x00,0x80,0x40,0x20,0x00}, // ASCII - 96 ` 00152 {0x26,0x29,0x29,0x1F,0x01}, // ASCII - 97 a 00153 {0xFF,0x11,0x11,0x11,0x0E}, // ASCII - 98 b 00154 {0x0E,0x11,0x11,0x11,0x11}, // ASCII - 99 c 00155 {0x0E,0x11,0x11,0x11,0xFF}, // ASCII - 500 d 00156 {0x0E,0x15,0x15,0x15,0x0D}, // ASCII - 101 e 00157 {0x10,0x10,0x7F,0x90,0x90}, // ASCII - 102 f 00158 {0x08,0x15,0x15,0x15,0x0E}, // ASCII - 103 g 00159 {0xFF,0x08,0x08,0x08,0x07}, // ASCII - 104 h 00160 {0x00,0x00,0x9F,0x00,0x00}, // ASCII - 105 i 00161 {0x02,0x01,0x01,0x9F,0x00}, // ASCII - 106 j 00162 {0xFF,0x04,0x0A,0x11,0x00}, // ASCII - 107 k 00163 {0x00,0x01,0xFF,0x01,0x00}, // ASCII - 108 l 00164 {0x1F,0x10,0x0F,0x10,0x0F}, // ASCII - 109 m 00165 {0x10,0x0F,0x10,0x10,0x0F}, // ASCII - 110 n 00166 {0x0E,0x11,0x11,0x11,0x0E}, // ASCII - 111 o 00167 {0x1F,0x14,0x14,0x14,0x08}, // ASCII - 112 p 00168 {0x08,0x14,0x14,0x14,0x1F}, // ASCII - 113 q 00169 {0x1F,0x08,0x10,0x10,0x08}, // ASCII - 114 r 00170 {0x09,0x15,0x15,0x15,0x12}, // ASCII - 115 s 00171 {0x10,0x10,0x7F,0x11,0x12}, // ASCII - 116 t 00172 {0x1F,0x01,0x01,0x1F,0x01}, // ASCII - 117 u 00173 {0x1C,0x02,0x01,0x02,0x1C}, // ASCII - 118 v 00174 {0x1E,0x01,0x0F,0x01,0x1E}, // ASCII - 119 w 00175 {0x11,0x0A,0x04,0x0A,0x11}, // ASCII - 120 x 00176 {0x11,0x0A,0x04,0x08,0x10}, // ASCII - 121 y 00177 {0x11,0x13,0x15,0x19,0x11}, // ASCII - 122 z 00178 {0x18,0x66,0x81,0x81,0x00}, // ASCII - 123 { 00179 {0x00,0x00,0xFF,0x00,0x00}, // ASCII - 124 | 00180 {0x00,0x81,0x81,0x66,0x18}, // ASCII - 125 } 00181 {0x0C,0x10,0x08,0x04,0x18}, // ASCII - 126 ~ 00182 }; 00183 00184 char currentchar = 0; 00185 int LED_MASK = 0xFFFFFFFF; 00186 00187 00188 //pc.printf("Starting ADXL345 test...\r\n"); 00189 // pc.printf("Device ID is: 0x%02x\r\n", accelerometer.getDevId()); 00190 wait(3); 00191 00192 //Go into standby mode to configure the device. 00193 accelerometer.setPowerControl(0x00); 00194 00195 //Full resolution, +/-16g, 4mg/LSB. 00196 accelerometer.setDataFormatControl(0x0B); 00197 00198 //3.2kHz data rate. 00199 accelerometer.setDataRate(ADXL345_3200HZ); 00200 00201 //Measurement mode. 00202 accelerometer.setPowerControl(0x08); 00203 00204 while (1) { 00205 global=0; 00206 00207 while(1) { 00208 // test = xbee2.readable(); 00209 00210 if(xbee2.readable()) { 00211 character = xbee2.getc(); 00212 00213 if(character == 13) { 00214 00215 buffer[global] = '\0'; 00216 break; 00217 } else { 00218 buffer[global]= character; 00219 global++; 00220 00221 } 00222 } 00223 00224 } 00225 00226 pc1.printf("\n\rbuffer = %s\n\r" ,buffer); 00227 //pc1.printf(" \n\rBuffer = %s", buffer); 00228 len1 = strlen(buffer); 00229 00230 for( int m =0; m < (len1 + 2); m++) { 00231 00232 text[m] = 0x20; 00233 } 00234 00235 for( int m =(len1 + 2); m <( 2*len1 + 2); m++) { 00236 00237 text[m] = buffer[m - (len1 +2)]; 00238 } 00239 00240 text[2*len1 + 2] = '\0'; 00241 len = strlen(text); 00242 for(int p =0; p <len; p++) { 00243 pc1.printf("%c", text[p]); 00244 } 00245 pc1.printf("\n\rstrlen(text) = %d", len); 00246 float waitvalue = 0.08 / ((6*len)); 00247 00248 00249 00250 while(!(xbee2.readable())) { 00251 red = 0; 00252 green = 0; 00253 blue = 0; 00254 00255 00256 do { 00257 accelerometer.getOutput(readings); 00258 if(xbee2.readable()) 00259 break; 00260 } while((int16_t)readings[1] < 50); 00261 i = 0; 00262 00263 while(text[i] != '\0') { 00264 00265 /*led8 = 0; 00266 led7 = 0; 00267 led6 = 0; 00268 led5 = 0; 00269 led4 = 0; 00270 led3 = 0; 00271 led2 = 0; 00272 led1 = 0;*/ 00273 for( int m=0; m < 8; m++) { 00274 red = 0; 00275 green = 0; 00276 blue = 0; 00277 RGB_LED(red,green,blue); 00278 } 00279 wait(waitvalue); 00280 currentchar = text[i]; 00281 00282 for( int m =0; m <5; m++) { 00283 char mal = font[currentchar - 0x20][m]; 00284 led8 = mal & 0x80; 00285 led7 = mal & 0x40; 00286 led6 = mal & 0x20; 00287 led5 = mal & 0x10; 00288 led4 = mal & 0x08; 00289 led3 = mal & 0x04; 00290 led2 = mal & 0x02; 00291 led1 = mal & 0x01; 00292 if(led8 == 1) { 00293 green = 0; 00294 red = 500; 00295 blue = 0; 00296 RGB_LED(red,green,blue); 00297 } else { 00298 00299 red = 0; 00300 green = 0; 00301 blue = 0; 00302 RGB_LED(red,green,blue); 00303 00304 } 00305 00306 if(led7 == 1) { 00307 green = 0; 00308 red = 500; 00309 blue = 0; 00310 RGB_LED(red,green,blue); 00311 } else { 00312 00313 red = 0; 00314 green = 0; 00315 blue = 0; 00316 RGB_LED(red,green,blue); 00317 00318 } 00319 00320 if(led6 == 1) { 00321 green = 0; 00322 red = 500; 00323 blue = 0; 00324 RGB_LED(red,green,blue); 00325 } else { 00326 00327 red = 0; 00328 green = 0; 00329 blue = 0; 00330 RGB_LED(red,green,blue); 00331 00332 } 00333 00334 if(led5 == 1) { 00335 green = 500; 00336 red = 0; 00337 blue = 0; 00338 RGB_LED(red,green,blue); 00339 } else { 00340 00341 red = 0; 00342 green = 0; 00343 blue = 0; 00344 RGB_LED(red,green,blue); 00345 00346 } 00347 00348 if(led4 == 1) { 00349 green = 500; 00350 red = 0; 00351 blue = 0; 00352 RGB_LED(red,green,blue); 00353 } else { 00354 00355 red = 0; 00356 green = 0; 00357 blue = 0; 00358 RGB_LED(red,green,blue); 00359 00360 } 00361 00362 if(led3 == 1) { 00363 green = 500; 00364 red = 0; 00365 blue = 0; 00366 RGB_LED(red,green,blue); 00367 } else { 00368 00369 red = 0; 00370 green = 0; 00371 blue = 0; 00372 RGB_LED(red,green,blue); 00373 00374 } 00375 00376 if(led2 == 1) { 00377 green = 0; 00378 red = 0; 00379 blue = 500; 00380 RGB_LED(red,green,blue); 00381 } else { 00382 00383 red = 0; 00384 green = 0; 00385 blue = 0; 00386 RGB_LED(red,green,blue); 00387 00388 } 00389 00390 if(led1 == 1) { 00391 green = 0; 00392 red = 0; 00393 blue = 500; 00394 RGB_LED(red,green,blue); 00395 } else { 00396 00397 red = 0; 00398 green = 0; 00399 blue = 0; 00400 RGB_LED(red,green,blue); 00401 00402 } 00403 wait(waitvalue); 00404 00405 } 00406 /*led8 = 0; 00407 led7 = 0; 00408 led6 = 0; 00409 led5 = 0; 00410 led4 = 0; 00411 led3 = 0; 00412 led2 = 0; 00413 led1 = 0;*/ 00414 for( int j=0; j< 8; j++) { 00415 red = 0; 00416 green = 0; 00417 blue = 0; 00418 RGB_LED(red,green,blue); 00419 } 00420 wait(waitvalue); 00421 i++; 00422 } 00423 do { 00424 accelerometer.getOutput(readings); 00425 if(xbee2.readable()) 00426 break; 00427 } while((int16_t)readings[1] > -50); 00428 } 00429 } 00430 }
Generated on Sun Jul 17 2022 01:55:29 by
1.7.2