Aditya Barve / Mbed 2 deprecated shiftbrite_final

Dependencies:   ADXL345 mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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 }