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 /* 00266 led8 = 0; 00267 led7 = 0; 00268 led6 = 0; 00269 led5 = 0; 00270 led4 = 0; 00271 led3 = 0; 00272 led2 = 0; 00273 led1 = 0; */ 00274 for( int m=0; m < 8; m++) { 00275 red = 0; 00276 green = 0; 00277 blue = 0; 00278 RGB_LED(red,green,blue); 00279 } 00280 wait(waitvalue); 00281 currentchar = text[i]; 00282 00283 for( int m =0; m <5; m++) { 00284 char mal = font[currentchar - 0x20][m]; 00285 led8 = mal & 0x80; 00286 led7 = mal & 0x40; 00287 led6 = mal & 0x20; 00288 led5 = mal & 0x10; 00289 led4 = mal & 0x08; 00290 led3 = mal & 0x04; 00291 led2 = mal & 0x02; 00292 led1 = mal & 0x01; 00293 if(led8 == 1) { 00294 if( i == (len1+2)) { 00295 green = 200; 00296 red = 0; 00297 blue = 0; 00298 } else if ( i == (len1+3)) { 00299 green = 0; 00300 red = 0; 00301 blue = 200; 00302 } else if ( i == (len1 + 4)) { 00303 green = 200; 00304 red = 200; 00305 blue = 0; 00306 } else { 00307 green = 0; 00308 red = 200; 00309 blue = 0; 00310 } 00311 RGB_LED(red,green,blue); 00312 } else { 00313 00314 red = 0; 00315 green = 0; 00316 blue = 0; 00317 RGB_LED(red,green,blue); 00318 00319 } 00320 00321 if(led7 == 1) { 00322 if( i == (len1+2)) { 00323 green = 200; 00324 red = 0; 00325 blue = 0; 00326 } else if ( i == (len1+3)) { 00327 green = 0; 00328 red = 0; 00329 blue = 200; 00330 } else if ( i == (len1 + 4)) { 00331 green = 200; 00332 red = 200; 00333 blue = 0; 00334 } else { 00335 green = 0; 00336 red = 200; 00337 blue = 0; 00338 } 00339 RGB_LED(red,green,blue); 00340 } else { 00341 00342 red = 0; 00343 green = 0; 00344 blue = 0; 00345 RGB_LED(red,green,blue); 00346 00347 } 00348 00349 if(led6 == 1) { 00350 if( i == (len1+2)) { 00351 green = 200; 00352 red = 0; 00353 blue = 0; 00354 } else if ( i == (len1+3)) { 00355 green = 0; 00356 red = 0; 00357 blue = 200; 00358 } else if ( i == (len1 + 4)) { 00359 green = 200; 00360 red = 200; 00361 blue = 0; 00362 } else { 00363 green = 0; 00364 red = 200; 00365 blue = 0; 00366 } 00367 RGB_LED(red,green,blue); 00368 } else { 00369 00370 red = 0; 00371 green = 0; 00372 blue = 0; 00373 RGB_LED(red,green,blue); 00374 00375 } 00376 00377 if(led5 == 1) { 00378 if( i == (len1+2)) { 00379 green = 200; 00380 red = 0; 00381 blue = 0; 00382 } else if ( i == (len1+3)) { 00383 green = 0; 00384 red = 0; 00385 blue = 200; 00386 } else if ( i == (len1 + 4)) { 00387 green = 200; 00388 red = 200; 00389 blue = 0; 00390 } else { 00391 green = 0; 00392 red = 200; 00393 blue = 0; 00394 } 00395 RGB_LED(red,green,blue); 00396 } else { 00397 00398 red = 0; 00399 green = 0; 00400 blue = 0; 00401 RGB_LED(red,green,blue); 00402 00403 } 00404 00405 if(led4 == 1) { 00406 if( i == (len1+2)) { 00407 green = 200; 00408 red = 0; 00409 blue = 0; 00410 } else if ( i == (len1+3)) { 00411 green = 0; 00412 red = 0; 00413 blue = 200; 00414 } else if ( i == (len1 + 4)) { 00415 green = 200; 00416 red = 200; 00417 blue = 0; 00418 } else { 00419 green = 0; 00420 red = 200; 00421 blue = 0; 00422 } 00423 RGB_LED(red,green,blue); 00424 } else { 00425 00426 red = 0; 00427 green = 0; 00428 blue = 0; 00429 RGB_LED(red,green,blue); 00430 00431 } 00432 00433 if(led3 == 1) { 00434 if( i == (len1+2)) { 00435 green = 200; 00436 red = 0; 00437 blue = 0; 00438 } else if ( i == (len1+3)) { 00439 green = 0; 00440 red = 0; 00441 blue = 200; 00442 } else if ( i == (len1 + 4)) { 00443 green = 200; 00444 red = 200; 00445 blue = 0; 00446 } else { 00447 green = 0; 00448 red = 200; 00449 blue = 0; 00450 } 00451 RGB_LED(red,green,blue); 00452 } else { 00453 00454 red = 0; 00455 green = 0; 00456 blue = 0; 00457 RGB_LED(red,green,blue); 00458 00459 } 00460 00461 if(led2 == 1) { 00462 if( i == (len1+2)) { 00463 green = 200; 00464 red = 0; 00465 blue = 0; 00466 } else if ( i == (len1+3)) { 00467 green = 0; 00468 red = 0; 00469 blue = 200; 00470 } else if ( i == (len1 + 4)) { 00471 green = 200; 00472 red = 200; 00473 blue = 0; 00474 } else { 00475 green = 0; 00476 red = 200; 00477 blue = 0; 00478 } 00479 RGB_LED(red,green,blue); 00480 } else { 00481 00482 red = 0; 00483 green = 0; 00484 blue = 0; 00485 RGB_LED(red,green,blue); 00486 00487 } 00488 00489 if(led1 == 1) { 00490 if( i == (len1+2)) { 00491 green = 200; 00492 red = 0; 00493 blue = 0; 00494 } else if ( i == (len1+3)) { 00495 green = 0; 00496 red = 0; 00497 blue = 200; 00498 } else if ( i == (len1 + 4)) { 00499 green = 200; 00500 red = 200; 00501 blue = 0; 00502 } else { 00503 green = 0; 00504 red = 200; 00505 blue = 0; 00506 } 00507 RGB_LED(red,green,blue); 00508 } else { 00509 00510 red = 0; 00511 green = 0; 00512 blue = 0; 00513 RGB_LED(red,green,blue); 00514 00515 } 00516 wait(waitvalue); 00517 00518 } 00519 /*led8 = 0; 00520 led7 = 0; 00521 led6 = 0; 00522 led5 = 0; 00523 led4 = 0; 00524 led3 = 0; 00525 led2 = 0; 00526 led1 = 0;*/ 00527 for( int j=0; j< 8; j++) { 00528 red = 0; 00529 green = 0; 00530 blue = 0; 00531 RGB_LED(red,green,blue); 00532 } 00533 wait(waitvalue); 00534 i++; 00535 } 00536 do { 00537 accelerometer.getOutput(readings); 00538 if(xbee2.readable()) 00539 break; 00540 } while((int16_t)readings[1] > -50); 00541 } 00542 } 00543 }
Generated on Thu Jul 21 2022 00:59:06 by
1.7.2