This is the final version of Mini Gateway for Automation and Security desgined for Renesas GR Peach Design Contest
Dependencies: GR-PEACH_video GraphicsFramework HTTPServer R_BSP mbed-rpc mbed-rtos Socket lwip-eth lwip-sys lwip FATFileSystem
Fork of mbed-os-example-mbed5-blinky by
main.cpp@12:9a20164dcc47, 2017-01-11 (annotated)
- Committer:
- vipinranka
- Date:
- Wed Jan 11 11:41:30 2017 +0000
- Revision:
- 12:9a20164dcc47
- Parent:
- 8:bb09890333fe
This is the final version MGAS Project for Renesas GR Peach Design Contest
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
vipinranka | 12:9a20164dcc47 | 1 | #include "mbed.h" |
vipinranka | 12:9a20164dcc47 | 2 | #include "RF24.h" |
vipinranka | 12:9a20164dcc47 | 3 | #include "ILI9486.h" |
vipinranka | 12:9a20164dcc47 | 4 | #include "DisplayBace.h" |
vipinranka | 12:9a20164dcc47 | 5 | #include "SDFileSystem.h" |
vipinranka | 12:9a20164dcc47 | 6 | #include "JPEG_Converter.h" |
vipinranka | 12:9a20164dcc47 | 7 | |
vipinranka | 12:9a20164dcc47 | 8 | #include "HTTPServer.h" |
vipinranka | 12:9a20164dcc47 | 9 | #include "FsHandler.h" |
vipinranka | 12:9a20164dcc47 | 10 | |
vipinranka | 12:9a20164dcc47 | 11 | #include "rtos.h" |
vipinranka | 12:9a20164dcc47 | 12 | |
vipinranka | 12:9a20164dcc47 | 13 | #include "stdio.h" |
vipinranka | 12:9a20164dcc47 | 14 | #include "string" |
vipinranka | 12:9a20164dcc47 | 15 | #include "Arial12x12.h" |
vipinranka | 12:9a20164dcc47 | 16 | #include "Arial28x28.h" |
vipinranka | 12:9a20164dcc47 | 17 | #include "Arial24x23.h" |
vipinranka | 12:9a20164dcc47 | 18 | //#include "Terminal6x8.h" |
vipinranka | 12:9a20164dcc47 | 19 | #include "Arial43x48_numb.h" |
vipinranka | 12:9a20164dcc47 | 20 | #include "pict.h" |
vipinranka | 12:9a20164dcc47 | 21 | #include "pavement_48x34.h" |
vipinranka | 12:9a20164dcc47 | 22 | #include "Touch.h" |
vipinranka | 12:9a20164dcc47 | 23 | |
vipinranka | 12:9a20164dcc47 | 24 | #include "camera.h" |
vipinranka | 12:9a20164dcc47 | 25 | #include "EthernetInterface.h" |
vipinranka | 12:9a20164dcc47 | 26 | |
vipinranka | 12:9a20164dcc47 | 27 | //Initialization |
vipinranka | 12:9a20164dcc47 | 28 | Serial uart(USBTX, USBRX); |
vipinranka | 12:9a20164dcc47 | 29 | ILI9486 myLCD(SPI_16, 16000000, P4_6, NC, P4_4, P4_5, P2_14, P8_1,"myLCD"); // Spi 16bit, 12MHz, mosi, miso, sclk, cs, reset, dc |
vipinranka | 12:9a20164dcc47 | 30 | TouchScreenADS7843 TP(P4_6 ,P4_7 ,P4_4 ,P2_9 ,P7_15, &myLCD);// ADS7843 -> mosi, miso, sclk, cs, irq, SPI_myLCD |
vipinranka | 12:9a20164dcc47 | 31 | SDFileSystem sd(P8_5, P8_6, P8_3, P8_4, "sd"); |
vipinranka | 12:9a20164dcc47 | 32 | RF24 radio(P10_14,P10_15, P10_12,P8_14, P10_13); // mosi, miso, sck, csn, ce, irq |
vipinranka | 12:9a20164dcc47 | 33 | |
vipinranka | 12:9a20164dcc47 | 34 | AnalogIn temp(A4); |
vipinranka | 12:9a20164dcc47 | 35 | DigitalOut led3(LED3); |
vipinranka | 12:9a20164dcc47 | 36 | int temp_count=0,in_pic=0; |
vipinranka | 12:9a20164dcc47 | 37 | |
vipinranka | 12:9a20164dcc47 | 38 | struct Screen { |
vipinranka | 12:9a20164dcc47 | 39 | int16_t title[60*320]; |
vipinranka | 12:9a20164dcc47 | 40 | int titlex,titley; |
vipinranka | 12:9a20164dcc47 | 41 | int16_t logo[80*320]; |
vipinranka | 12:9a20164dcc47 | 42 | int logox,logoy; |
vipinranka | 12:9a20164dcc47 | 43 | int16_t hc[157*156]; |
vipinranka | 12:9a20164dcc47 | 44 | int hcx,hcy,hch,hcw; |
vipinranka | 12:9a20164dcc47 | 45 | int16_t aut[158*156]; |
vipinranka | 12:9a20164dcc47 | 46 | int autx,auty,autw,auth; |
vipinranka | 12:9a20164dcc47 | 47 | int16_t sec[157*158]; |
vipinranka | 12:9a20164dcc47 | 48 | int secx,secy,secw,sech; |
vipinranka | 12:9a20164dcc47 | 49 | int16_t ind[158*158]; |
vipinranka | 12:9a20164dcc47 | 50 | int indx,indy,indw,indh; |
vipinranka | 12:9a20164dcc47 | 51 | int indsize; |
vipinranka | 12:9a20164dcc47 | 52 | int secsize; |
vipinranka | 12:9a20164dcc47 | 53 | int autsize; |
vipinranka | 12:9a20164dcc47 | 54 | int hcsize; |
vipinranka | 12:9a20164dcc47 | 55 | int logosize; |
vipinranka | 12:9a20164dcc47 | 56 | int titlesize; |
vipinranka | 12:9a20164dcc47 | 57 | } dis_nav; |
vipinranka | 12:9a20164dcc47 | 58 | |
vipinranka | 12:9a20164dcc47 | 59 | //Variables |
vipinranka | 12:9a20164dcc47 | 60 | unsigned short backgroundcolor=Black; |
vipinranka | 12:9a20164dcc47 | 61 | unsigned short foregroundcolor=Red; |
vipinranka | 12:9a20164dcc47 | 62 | int pos[4]; |
vipinranka | 12:9a20164dcc47 | 63 | int16_t colors[16]= { |
vipinranka | 12:9a20164dcc47 | 64 | 0x000F,0x0000,0x03E0,0x03EF,0x7800,0x780F,0x7BE0,0xC618,0x7BEF,0x001F,0x07E0,0x07FF,0xF800,0xF81F,0xFFE0,0xFFFF |
vipinranka | 12:9a20164dcc47 | 65 | }; |
vipinranka | 12:9a20164dcc47 | 66 | int color_count=0; |
vipinranka | 12:9a20164dcc47 | 67 | int cam_sel=0; |
vipinranka | 12:9a20164dcc47 | 68 | int ind_speed=0; |
vipinranka | 12:9a20164dcc47 | 69 | int ind_of=0; |
vipinranka | 12:9a20164dcc47 | 70 | int16_t prev_col=0; |
vipinranka | 12:9a20164dcc47 | 71 | EthernetInterface network; |
vipinranka | 12:9a20164dcc47 | 72 | HTTPServer svr; |
vipinranka | 12:9a20164dcc47 | 73 | TCPSocketServer rf_server; |
vipinranka | 12:9a20164dcc47 | 74 | TCPSocketConnection client; |
vipinranka | 12:9a20164dcc47 | 75 | |
vipinranka | 12:9a20164dcc47 | 76 | |
vipinranka | 12:9a20164dcc47 | 77 | static unsigned short col_buf[PIXEL_VW][PIXEL_HW]__attribute((section("NC_BSS"),aligned(8))); //8 bytes aligned!; |
vipinranka | 12:9a20164dcc47 | 78 | static uint8_t JCUBuffer_OUTPUT[PIXEL_HW * VIDEO_BUFFER_HEIGHT*4]__attribute((section("NC_BSS"),aligned(8))); //8 bytes aligned!; |
vipinranka | 12:9a20164dcc47 | 79 | |
vipinranka | 12:9a20164dcc47 | 80 | |
vipinranka | 12:9a20164dcc47 | 81 | |
vipinranka | 12:9a20164dcc47 | 82 | //Init LCD and touch |
vipinranka | 12:9a20164dcc47 | 83 | void Init_lcd_touch() |
vipinranka | 12:9a20164dcc47 | 84 | { |
vipinranka | 12:9a20164dcc47 | 85 | Matrix matrix; |
vipinranka | 12:9a20164dcc47 | 86 | Coordinate ScreenSample[3]; |
vipinranka | 12:9a20164dcc47 | 87 | myLCD.set_orientation(2); |
vipinranka | 12:9a20164dcc47 | 88 | // myLCD.claim(stdout); // send stdout to the LCD display |
vipinranka | 12:9a20164dcc47 | 89 | //myLCD.claim(stderr); // send stderr to the LCD display |
vipinranka | 12:9a20164dcc47 | 90 | myLCD.background(backgroundcolor); // set background to black |
vipinranka | 12:9a20164dcc47 | 91 | myLCD.foreground(foregroundcolor); // set chars to white |
vipinranka | 12:9a20164dcc47 | 92 | myLCD.cls(); |
vipinranka | 12:9a20164dcc47 | 93 | myLCD.set_font((unsigned char*) Arial12x12); |
vipinranka | 12:9a20164dcc47 | 94 | myLCD.locate(0,20); |
vipinranka | 12:9a20164dcc47 | 95 | TP.TouchPanel_Calibrate(); |
vipinranka | 12:9a20164dcc47 | 96 | |
vipinranka | 12:9a20164dcc47 | 97 | // myLCD.set_orientation(0); |
vipinranka | 12:9a20164dcc47 | 98 | // Display calibration values |
vipinranka | 12:9a20164dcc47 | 99 | TP.GetCalibration(&matrix, &ScreenSample[0]); |
vipinranka | 12:9a20164dcc47 | 100 | myLCD.cls(); |
vipinranka | 12:9a20164dcc47 | 101 | myLCD.locate(0,20); |
vipinranka | 12:9a20164dcc47 | 102 | // read calibration results |
vipinranka | 12:9a20164dcc47 | 103 | printf("Read calibration results.\n"); |
vipinranka | 12:9a20164dcc47 | 104 | printf("matrix.An = %d\n", matrix.An); |
vipinranka | 12:9a20164dcc47 | 105 | printf("matrix.Bn = %d\n", matrix.Bn); |
vipinranka | 12:9a20164dcc47 | 106 | printf("matrix.Cn = %d\n", matrix.Cn); |
vipinranka | 12:9a20164dcc47 | 107 | printf("matrix.Dn = %d\n", matrix.Dn); |
vipinranka | 12:9a20164dcc47 | 108 | printf("matrix.En = %d\n", matrix.En); |
vipinranka | 12:9a20164dcc47 | 109 | printf("matrix.Fn = %d\n", matrix.Fn); |
vipinranka | 12:9a20164dcc47 | 110 | printf("matrix.Di = %d\n", matrix.Divider); |
vipinranka | 12:9a20164dcc47 | 111 | for (int i=0; i<3; i++) |
vipinranka | 12:9a20164dcc47 | 112 | printf("sample x[%d] = %d\nsample y[%d] = %d\n", i, ScreenSample[i].x, i, ScreenSample[i].y); |
vipinranka | 12:9a20164dcc47 | 113 | // Write calibration results |
vipinranka | 12:9a20164dcc47 | 114 | printf("\nWrite calibration results...\n"); |
vipinranka | 12:9a20164dcc47 | 115 | TP.SetCalibration(&matrix, &ScreenSample[0]); |
vipinranka | 12:9a20164dcc47 | 116 | printf("Done.\nTouch panel to start\n"); |
vipinranka | 12:9a20164dcc47 | 117 | while(TP._tp_irq); |
vipinranka | 12:9a20164dcc47 | 118 | } |
vipinranka | 12:9a20164dcc47 | 119 | |
vipinranka | 12:9a20164dcc47 | 120 | int get_xy() |
vipinranka | 12:9a20164dcc47 | 121 | { |
vipinranka | 12:9a20164dcc47 | 122 | int x=0; |
vipinranka | 12:9a20164dcc47 | 123 | if(!TP._tp_irq) { |
vipinranka | 12:9a20164dcc47 | 124 | if (TP.Read_Ads7843()) { |
vipinranka | 12:9a20164dcc47 | 125 | TP.getDisplayPoint() ; |
vipinranka | 12:9a20164dcc47 | 126 | //myLCD.cls(); |
vipinranka | 12:9a20164dcc47 | 127 | //myLCD.locate(20,0); |
vipinranka | 12:9a20164dcc47 | 128 | // TP.TP_DrawPoint(TP.display.x,TP.display.y, Blue); |
vipinranka | 12:9a20164dcc47 | 129 | x=1; |
vipinranka | 12:9a20164dcc47 | 130 | } |
vipinranka | 12:9a20164dcc47 | 131 | } |
vipinranka | 12:9a20164dcc47 | 132 | wait(0.1); |
vipinranka | 12:9a20164dcc47 | 133 | return x; |
vipinranka | 12:9a20164dcc47 | 134 | } |
vipinranka | 12:9a20164dcc47 | 135 | |
vipinranka | 12:9a20164dcc47 | 136 | void init_dis_nav() |
vipinranka | 12:9a20164dcc47 | 137 | { |
vipinranka | 12:9a20164dcc47 | 138 | dis_nav.indsize=158*158; |
vipinranka | 12:9a20164dcc47 | 139 | dis_nav.secsize=157*158; |
vipinranka | 12:9a20164dcc47 | 140 | dis_nav.autsize=158*156; |
vipinranka | 12:9a20164dcc47 | 141 | dis_nav.hcsize=157*156; |
vipinranka | 12:9a20164dcc47 | 142 | dis_nav.logosize=80*320; |
vipinranka | 12:9a20164dcc47 | 143 | dis_nav.titlesize=60*320; |
vipinranka | 12:9a20164dcc47 | 144 | myLCD.BMP_16(0,0,"/sd/gui/title.bmp",dis_nav.title); |
vipinranka | 12:9a20164dcc47 | 145 | dis_nav.titlex=0; |
vipinranka | 12:9a20164dcc47 | 146 | dis_nav.titley=0; |
vipinranka | 12:9a20164dcc47 | 147 | myLCD.BMP_16(0,400,"/sd/gui/logo.bmp",dis_nav.logo); |
vipinranka | 12:9a20164dcc47 | 148 | dis_nav.logox=0; |
vipinranka | 12:9a20164dcc47 | 149 | dis_nav.logoy=400; |
vipinranka | 12:9a20164dcc47 | 150 | myLCD.BMP_16(0,81,"/sd/gui/hc.bmp",dis_nav.hc); |
vipinranka | 12:9a20164dcc47 | 151 | dis_nav.hcx=0; |
vipinranka | 12:9a20164dcc47 | 152 | dis_nav.hcy=81; |
vipinranka | 12:9a20164dcc47 | 153 | dis_nav.hcw=157; |
vipinranka | 12:9a20164dcc47 | 154 | dis_nav.hch=158; |
vipinranka | 12:9a20164dcc47 | 155 | //myLCD.fillrect(161,81,319,237,White); |
vipinranka | 12:9a20164dcc47 | 156 | myLCD.BMP_16(dis_nav.autx=161,dis_nav.auty=81,"/sd/gui/auto.bmp",dis_nav.aut); |
vipinranka | 12:9a20164dcc47 | 157 | dis_nav.autw=158; |
vipinranka | 12:9a20164dcc47 | 158 | dis_nav.auth=156; |
vipinranka | 12:9a20164dcc47 | 159 | //myLCD.fillrect(0,241,157,399,White); |
vipinranka | 12:9a20164dcc47 | 160 | myLCD.BMP_16(dis_nav.secx=0,dis_nav.secy=241,"/sd/gui/secu.bmp",dis_nav.sec); |
vipinranka | 12:9a20164dcc47 | 161 | dis_nav.secw=157; |
vipinranka | 12:9a20164dcc47 | 162 | dis_nav.sech=158; |
vipinranka | 12:9a20164dcc47 | 163 | //myLCD.fillrect(161,241,319,399,White); |
vipinranka | 12:9a20164dcc47 | 164 | myLCD.BMP_16(dis_nav.indx=161,dis_nav.indy=241,"/sd/gui/indus.bmp",dis_nav.ind); |
vipinranka | 12:9a20164dcc47 | 165 | dis_nav.indw=158; |
vipinranka | 12:9a20164dcc47 | 166 | dis_nav.indh=158; |
vipinranka | 12:9a20164dcc47 | 167 | } |
vipinranka | 12:9a20164dcc47 | 168 | |
vipinranka | 12:9a20164dcc47 | 169 | void init_gui() |
vipinranka | 12:9a20164dcc47 | 170 | { |
vipinranka | 12:9a20164dcc47 | 171 | init_dis_nav(); |
vipinranka | 12:9a20164dcc47 | 172 | myLCD.cls(); |
vipinranka | 12:9a20164dcc47 | 173 | myLCD.BMP_disp(dis_nav.titlex,dis_nav.titley,dis_nav.title,dis_nav.titlesize,0,60); |
vipinranka | 12:9a20164dcc47 | 174 | myLCD.BMP_disp(dis_nav.logox,dis_nav.logoy,dis_nav.logo,dis_nav.logosize,0,80); |
vipinranka | 12:9a20164dcc47 | 175 | myLCD.rect(0,60,319,80,Red); |
vipinranka | 12:9a20164dcc47 | 176 | myLCD.rect(1,61,318,79,Red); |
vipinranka | 12:9a20164dcc47 | 177 | myLCD.locate(4,65); |
vipinranka | 12:9a20164dcc47 | 178 | // myLCD.fillrect(0,81,157,237,White); |
vipinranka | 12:9a20164dcc47 | 179 | myLCD.BMP_disp(dis_nav.hcx,dis_nav.hcy,dis_nav.hc,dis_nav.hcsize,dis_nav.hcw,dis_nav.hch); |
vipinranka | 12:9a20164dcc47 | 180 | //myLCD.fillrect(161,81,319,237,White); |
vipinranka | 12:9a20164dcc47 | 181 | myLCD.BMP_disp(dis_nav.autx,dis_nav.auty,dis_nav.aut,dis_nav.autsize,dis_nav.autw,dis_nav.auth); |
vipinranka | 12:9a20164dcc47 | 182 | //myLCD.fillrect(0,241,157,399,White); |
vipinranka | 12:9a20164dcc47 | 183 | myLCD.BMP_disp(dis_nav.secx,dis_nav.secy,dis_nav.sec,dis_nav.secsize,dis_nav.secw,dis_nav.sech); |
vipinranka | 12:9a20164dcc47 | 184 | //myLCD.fillrect(161,241,319,399,White); |
vipinranka | 12:9a20164dcc47 | 185 | myLCD.BMP_disp(dis_nav.indx,dis_nav.indy,dis_nav.ind,dis_nav.indsize,dis_nav.indw,dis_nav.indh); |
vipinranka | 12:9a20164dcc47 | 186 | myLCD.set_font((unsigned char*) Arial12x12); |
vipinranka | 12:9a20164dcc47 | 187 | myLCD.printf("Select a menu"); |
vipinranka | 12:9a20164dcc47 | 188 | for(int i=158; i<160; i++) { |
vipinranka | 12:9a20164dcc47 | 189 | myLCD.line(i,80,i,400,Blue); |
vipinranka | 12:9a20164dcc47 | 190 | } |
vipinranka | 12:9a20164dcc47 | 191 | for(int i=238; i<240; i++) { |
vipinranka | 12:9a20164dcc47 | 192 | myLCD.line(0,i,319,i,Blue); |
vipinranka | 12:9a20164dcc47 | 193 | } |
vipinranka | 12:9a20164dcc47 | 194 | |
vipinranka | 12:9a20164dcc47 | 195 | } |
vipinranka | 12:9a20164dcc47 | 196 | |
vipinranka | 12:9a20164dcc47 | 197 | |
vipinranka | 12:9a20164dcc47 | 198 | void set_ind(int o_f,int speed) |
vipinranka | 12:9a20164dcc47 | 199 | { |
vipinranka | 12:9a20164dcc47 | 200 | uint8_t add[]= {0xe7,0xe7,0xe7,0xe7,0xe8}; |
vipinranka | 12:9a20164dcc47 | 201 | radio.stopListening(); |
vipinranka | 12:9a20164dcc47 | 202 | radio.openWritingPipe(add); |
vipinranka | 12:9a20164dcc47 | 203 | wait_ms(2); |
vipinranka | 12:9a20164dcc47 | 204 | |
vipinranka | 12:9a20164dcc47 | 205 | int count=0; |
vipinranka | 12:9a20164dcc47 | 206 | char c[20]; |
vipinranka | 12:9a20164dcc47 | 207 | sprintf(c,"NEO,1,%d,%d,1\n",o_f,speed); |
vipinranka | 12:9a20164dcc47 | 208 | myLCD.fillrect(2,62,317,78,Black); |
vipinranka | 12:9a20164dcc47 | 209 | myLCD.locate(4,65); |
vipinranka | 12:9a20164dcc47 | 210 | myLCD.set_font((unsigned char*) Arial12x12); |
vipinranka | 12:9a20164dcc47 | 211 | myLCD.printf("Writing %s",c); |
vipinranka | 12:9a20164dcc47 | 212 | while (!radio.write( &c, 20 )) { |
vipinranka | 12:9a20164dcc47 | 213 | myLCD.fillrect(2,62,317,78,Black); |
vipinranka | 12:9a20164dcc47 | 214 | myLCD.locate(4,65); |
vipinranka | 12:9a20164dcc47 | 215 | myLCD.set_font((unsigned char*) Arial12x12); |
vipinranka | 12:9a20164dcc47 | 216 | myLCD.printf("Failed"); |
vipinranka | 12:9a20164dcc47 | 217 | count++; |
vipinranka | 12:9a20164dcc47 | 218 | if(count>=10) |
vipinranka | 12:9a20164dcc47 | 219 | break; |
vipinranka | 12:9a20164dcc47 | 220 | wait(0.1); |
vipinranka | 12:9a20164dcc47 | 221 | } |
vipinranka | 12:9a20164dcc47 | 222 | wait_ms(2); |
vipinranka | 12:9a20164dcc47 | 223 | radio.startListening(); |
vipinranka | 12:9a20164dcc47 | 224 | wait_ms(1); |
vipinranka | 12:9a20164dcc47 | 225 | } |
vipinranka | 12:9a20164dcc47 | 226 | |
vipinranka | 12:9a20164dcc47 | 227 | void set_color(char r,char g,char b) |
vipinranka | 12:9a20164dcc47 | 228 | { |
vipinranka | 12:9a20164dcc47 | 229 | uint8_t add[]= {0xe7,0xe7,0xe7,0xe8,0xe8}; |
vipinranka | 12:9a20164dcc47 | 230 | radio.stopListening(); |
vipinranka | 12:9a20164dcc47 | 231 | radio.openWritingPipe(add); |
vipinranka | 12:9a20164dcc47 | 232 | wait_ms(2); |
vipinranka | 12:9a20164dcc47 | 233 | |
vipinranka | 12:9a20164dcc47 | 234 | int count=0; |
vipinranka | 12:9a20164dcc47 | 235 | char c[20]; |
vipinranka | 12:9a20164dcc47 | 236 | sprintf(c,"N,5,%d,%d,%d,%d,1\n",0x01,(r<<3),(g<<2),(b<<3)); |
vipinranka | 12:9a20164dcc47 | 237 | myLCD.fillrect(2,62,317,78,Black); |
vipinranka | 12:9a20164dcc47 | 238 | myLCD.locate(4,65); |
vipinranka | 12:9a20164dcc47 | 239 | myLCD.set_font((unsigned char*) Arial12x12); |
vipinranka | 12:9a20164dcc47 | 240 | myLCD.printf("Writing %s",c); |
vipinranka | 12:9a20164dcc47 | 241 | while (!radio.write( &c, 20 )) { |
vipinranka | 12:9a20164dcc47 | 242 | myLCD.fillrect(2,62,317,78,Black); |
vipinranka | 12:9a20164dcc47 | 243 | myLCD.locate(4,65); |
vipinranka | 12:9a20164dcc47 | 244 | myLCD.set_font((unsigned char*) Arial12x12); |
vipinranka | 12:9a20164dcc47 | 245 | myLCD.printf("Failed"); |
vipinranka | 12:9a20164dcc47 | 246 | count++; |
vipinranka | 12:9a20164dcc47 | 247 | if(count>=10) |
vipinranka | 12:9a20164dcc47 | 248 | break; |
vipinranka | 12:9a20164dcc47 | 249 | wait(0.1); |
vipinranka | 12:9a20164dcc47 | 250 | } |
vipinranka | 12:9a20164dcc47 | 251 | wait_ms(2); |
vipinranka | 12:9a20164dcc47 | 252 | radio.startListening(); |
vipinranka | 12:9a20164dcc47 | 253 | wait_ms(1); |
vipinranka | 12:9a20164dcc47 | 254 | } |
vipinranka | 12:9a20164dcc47 | 255 | |
vipinranka | 12:9a20164dcc47 | 256 | void take_pic_jpg(int name) |
vipinranka | 12:9a20164dcc47 | 257 | { |
vipinranka | 12:9a20164dcc47 | 258 | led2=1; |
vipinranka | 12:9a20164dcc47 | 259 | JPEG_Converter encoder; |
vipinranka | 12:9a20164dcc47 | 260 | JPEG_Converter::bitmap_buff_info_t aBitmapData; |
vipinranka | 12:9a20164dcc47 | 261 | size_t EncodeSize; |
vipinranka | 12:9a20164dcc47 | 262 | FILE * wr_fp = NULL; |
vipinranka | 12:9a20164dcc47 | 263 | |
vipinranka | 12:9a20164dcc47 | 264 | aBitmapData.width = PIXEL_HW; |
vipinranka | 12:9a20164dcc47 | 265 | aBitmapData.height = VIDEO_BUFFER_HEIGHT; |
vipinranka | 12:9a20164dcc47 | 266 | aBitmapData.format = JPEG_Converter::WR_RD_YCbCr422; //YCbCr[0] & ARGB8888[1] is 4byte, not RGB565[2] is 2byte |
vipinranka | 12:9a20164dcc47 | 267 | aBitmapData.buffer_address = (void *)save_buff_addr; |
vipinranka | 12:9a20164dcc47 | 268 | if (encoder.encode(&aBitmapData, JCUBuffer_OUTPUT, &EncodeSize) == JPEG_Converter::JPEG_CONV_OK) { |
vipinranka | 12:9a20164dcc47 | 269 | |
vipinranka | 12:9a20164dcc47 | 270 | char c[20]; |
vipinranka | 12:9a20164dcc47 | 271 | sprintf(c,"/sd/abc%d.jpg",name); |
vipinranka | 12:9a20164dcc47 | 272 | wr_fp = fopen(c, "w"); |
vipinranka | 12:9a20164dcc47 | 273 | fwrite(JCUBuffer_OUTPUT, sizeof(char), EncodeSize, wr_fp); |
vipinranka | 12:9a20164dcc47 | 274 | fclose(wr_fp); |
vipinranka | 12:9a20164dcc47 | 275 | led2=0; |
vipinranka | 12:9a20164dcc47 | 276 | } |
vipinranka | 12:9a20164dcc47 | 277 | |
vipinranka | 12:9a20164dcc47 | 278 | } |
vipinranka | 12:9a20164dcc47 | 279 | |
vipinranka | 12:9a20164dcc47 | 280 | unsigned short yuvtorgb(int y,int u,int v) |
vipinranka | 12:9a20164dcc47 | 281 | { |
vipinranka | 12:9a20164dcc47 | 282 | unsigned short rgb=0; |
vipinranka | 12:9a20164dcc47 | 283 | int r = y + (1.402 * (v-128)); |
vipinranka | 12:9a20164dcc47 | 284 | int g = y - (0.34414 * (u-128)) - (0.71414 * (v-128)); |
vipinranka | 12:9a20164dcc47 | 285 | int b = y + (1.772* (u-128)); |
vipinranka | 12:9a20164dcc47 | 286 | if(r<0)r=0; |
vipinranka | 12:9a20164dcc47 | 287 | else if(r>255)r=255; |
vipinranka | 12:9a20164dcc47 | 288 | if(g<0)g=0; |
vipinranka | 12:9a20164dcc47 | 289 | else if(g>255)g=255; |
vipinranka | 12:9a20164dcc47 | 290 | if(b<0)b=0; |
vipinranka | 12:9a20164dcc47 | 291 | else if(b>255)b=255; |
vipinranka | 12:9a20164dcc47 | 292 | r=r>>3; |
vipinranka | 12:9a20164dcc47 | 293 | g=g>>2; |
vipinranka | 12:9a20164dcc47 | 294 | b=b>>3; |
vipinranka | 12:9a20164dcc47 | 295 | rgb=(r<<11)|(g<<5)|b; |
vipinranka | 12:9a20164dcc47 | 296 | return rgb; |
vipinranka | 12:9a20164dcc47 | 297 | |
vipinranka | 12:9a20164dcc47 | 298 | } |
vipinranka | 12:9a20164dcc47 | 299 | void take_picture() |
vipinranka | 12:9a20164dcc47 | 300 | { |
vipinranka | 12:9a20164dcc47 | 301 | // uint8_t col_buf[PIXEL_HW * VIDEO_BUFFER_HEIGHT*4]; |
vipinranka | 12:9a20164dcc47 | 302 | pos[2]=pos[1]=pos[0]=pos[3]=0; |
vipinranka | 12:9a20164dcc47 | 303 | DisplayBase::graphics_error_t error; |
vipinranka | 12:9a20164dcc47 | 304 | in_pic=1; |
vipinranka | 12:9a20164dcc47 | 305 | led1 = 1; |
vipinranka | 12:9a20164dcc47 | 306 | |
vipinranka | 12:9a20164dcc47 | 307 | if (write_buff_addr == FrameBuffer_Video_A) { |
vipinranka | 12:9a20164dcc47 | 308 | write_buff_addr = FrameBuffer_Video_B; |
vipinranka | 12:9a20164dcc47 | 309 | save_buff_addr = FrameBuffer_Video_A; |
vipinranka | 12:9a20164dcc47 | 310 | } else { |
vipinranka | 12:9a20164dcc47 | 311 | write_buff_addr = FrameBuffer_Video_A; |
vipinranka | 12:9a20164dcc47 | 312 | save_buff_addr = FrameBuffer_Video_B; |
vipinranka | 12:9a20164dcc47 | 313 | } |
vipinranka | 12:9a20164dcc47 | 314 | |
vipinranka | 12:9a20164dcc47 | 315 | /* Change write buffer */ |
vipinranka | 12:9a20164dcc47 | 316 | error = Display.Video_Write_Change( |
vipinranka | 12:9a20164dcc47 | 317 | VIDEO_INPUT_CH, |
vipinranka | 12:9a20164dcc47 | 318 | write_buff_addr, |
vipinranka | 12:9a20164dcc47 | 319 | VIDEO_BUFFER_STRIDE); |
vipinranka | 12:9a20164dcc47 | 320 | if (error != DisplayBase::GRAPHICS_OK) { |
vipinranka | 12:9a20164dcc47 | 321 | uart.printf("Line %d, error %d\n", __LINE__, error); |
vipinranka | 12:9a20164dcc47 | 322 | while (1); |
vipinranka | 12:9a20164dcc47 | 323 | } |
vipinranka | 12:9a20164dcc47 | 324 | /* Wait 2 Vfield(Top or bottom field) */ |
vipinranka | 12:9a20164dcc47 | 325 | |
vipinranka | 12:9a20164dcc47 | 326 | WaitVfield(2); |
vipinranka | 12:9a20164dcc47 | 327 | |
vipinranka | 12:9a20164dcc47 | 328 | myLCD.WindowMax(); |
vipinranka | 12:9a20164dcc47 | 329 | int j=0,k=0; |
vipinranka | 12:9a20164dcc47 | 330 | for(int i=0; i<VIDEO_BUFFER_STRIDE * VIDEO_BUFFER_HEIGHT; i++) { |
vipinranka | 12:9a20164dcc47 | 331 | unsigned short rgb1=0,rgb2=0; |
vipinranka | 12:9a20164dcc47 | 332 | int yb=save_buff_addr[i]; |
vipinranka | 12:9a20164dcc47 | 333 | int v=save_buff_addr[i+1]; |
vipinranka | 12:9a20164dcc47 | 334 | int ya=save_buff_addr[i+2]; |
vipinranka | 12:9a20164dcc47 | 335 | int u=save_buff_addr[i+3]; |
vipinranka | 12:9a20164dcc47 | 336 | i=i+3; |
vipinranka | 12:9a20164dcc47 | 337 | rgb1=yuvtorgb(ya,u,v); |
vipinranka | 12:9a20164dcc47 | 338 | rgb2=yuvtorgb(yb,u,v); |
vipinranka | 12:9a20164dcc47 | 339 | col_buf[j][k++]=rgb2; |
vipinranka | 12:9a20164dcc47 | 340 | col_buf[j][k++]=rgb1; |
vipinranka | 12:9a20164dcc47 | 341 | if(k==320) { |
vipinranka | 12:9a20164dcc47 | 342 | j++; |
vipinranka | 12:9a20164dcc47 | 343 | k=0; |
vipinranka | 12:9a20164dcc47 | 344 | } |
vipinranka | 12:9a20164dcc47 | 345 | } |
vipinranka | 12:9a20164dcc47 | 346 | |
vipinranka | 12:9a20164dcc47 | 347 | for(int i=0; i<480; i++) { |
vipinranka | 12:9a20164dcc47 | 348 | for(int j=0; j<320; j++) { |
vipinranka | 12:9a20164dcc47 | 349 | for(int k=3; k>=0; k--) { |
vipinranka | 12:9a20164dcc47 | 350 | myLCD.wr_gram(col_buf[i][k+j]); |
vipinranka | 12:9a20164dcc47 | 351 | } |
vipinranka | 12:9a20164dcc47 | 352 | j=j+3; |
vipinranka | 12:9a20164dcc47 | 353 | } |
vipinranka | 12:9a20164dcc47 | 354 | } |
vipinranka | 12:9a20164dcc47 | 355 | |
vipinranka | 12:9a20164dcc47 | 356 | led1=0; |
vipinranka | 12:9a20164dcc47 | 357 | |
vipinranka | 12:9a20164dcc47 | 358 | take_pic_jpg(10); |
vipinranka | 12:9a20164dcc47 | 359 | |
vipinranka | 12:9a20164dcc47 | 360 | } |
vipinranka | 12:9a20164dcc47 | 361 | |
vipinranka | 12:9a20164dcc47 | 362 | |
vipinranka | 12:9a20164dcc47 | 363 | void navigate(int x,int y) |
vipinranka | 12:9a20164dcc47 | 364 | { |
vipinranka | 12:9a20164dcc47 | 365 | if(in_pic==1) { |
vipinranka | 12:9a20164dcc47 | 366 | in_pic=0; |
vipinranka | 12:9a20164dcc47 | 367 | myLCD.cls(); |
vipinranka | 12:9a20164dcc47 | 368 | myLCD.BMP_disp(dis_nav.titlex,dis_nav.titley,dis_nav.title,dis_nav.titlesize,0,60); |
vipinranka | 12:9a20164dcc47 | 369 | myLCD.BMP_disp(dis_nav.logox,dis_nav.logoy,dis_nav.logo,dis_nav.logosize,0,80); |
vipinranka | 12:9a20164dcc47 | 370 | myLCD.rect(0,60,319,80,Red); |
vipinranka | 12:9a20164dcc47 | 371 | myLCD.rect(1,61,318,79,Red); |
vipinranka | 12:9a20164dcc47 | 372 | myLCD.BMP_disp(dis_nav.indx,dis_nav.indy,dis_nav.ind,dis_nav.indsize,dis_nav.indw,dis_nav.indh); |
vipinranka | 12:9a20164dcc47 | 373 | myLCD.BMP_disp(dis_nav.secx,dis_nav.secy,dis_nav.sec,dis_nav.secsize,dis_nav.secw,dis_nav.sech); |
vipinranka | 12:9a20164dcc47 | 374 | myLCD.BMP_disp(dis_nav.autx,dis_nav.auty,dis_nav.aut,dis_nav.autsize,dis_nav.autw,dis_nav.auth); |
vipinranka | 12:9a20164dcc47 | 375 | myLCD.BMP_disp(dis_nav.hcx,dis_nav.hcy,dis_nav.hc,dis_nav.hcsize,dis_nav.hcw,dis_nav.hch); |
vipinranka | 12:9a20164dcc47 | 376 | pos[0]=pos[1]=pos[2]=pos[3]=0; |
vipinranka | 12:9a20164dcc47 | 377 | return; |
vipinranka | 12:9a20164dcc47 | 378 | } |
vipinranka | 12:9a20164dcc47 | 379 | if(y>85 && y<235) { |
vipinranka | 12:9a20164dcc47 | 380 | if(x<155) { //Healthcare Navigation |
vipinranka | 12:9a20164dcc47 | 381 | if(pos[0]==0) { |
vipinranka | 12:9a20164dcc47 | 382 | myLCD.fillrect(0,81,157,237,Black); |
vipinranka | 12:9a20164dcc47 | 383 | myLCD.BMP_16(2,82,"/sd/gui/heart.bmp"); |
vipinranka | 12:9a20164dcc47 | 384 | myLCD.BMP_16(2,170,"/sd/gui/temp.bmp"); |
vipinranka | 12:9a20164dcc47 | 385 | myLCD.BMP_16(58,136,"/sd/gui/b_but.bmp"); |
vipinranka | 12:9a20164dcc47 | 386 | myLCD.set_font((unsigned char*) Arial28x28); |
vipinranka | 12:9a20164dcc47 | 387 | myLCD.foreground(Red); |
vipinranka | 12:9a20164dcc47 | 388 | //myLCD.set_font_zoom(2,2); |
vipinranka | 12:9a20164dcc47 | 389 | // myLCD.rect(96,96,144,128,Red); |
vipinranka | 12:9a20164dcc47 | 390 | // myLCD.locate(100,100); |
vipinranka | 12:9a20164dcc47 | 391 | // myLCD.printf("92"); |
vipinranka | 12:9a20164dcc47 | 392 | // myLCD.locate(78,194); |
vipinranka | 12:9a20164dcc47 | 393 | // myLCD.printf("32"); |
vipinranka | 12:9a20164dcc47 | 394 | // // myLCD.rect(76,188,152,225,Red); |
vipinranka | 12:9a20164dcc47 | 395 | // myLCD.circle(116,197,3,Red); |
vipinranka | 12:9a20164dcc47 | 396 | // myLCD.locate(124,194); |
vipinranka | 12:9a20164dcc47 | 397 | // myLCD.printf("C"); |
vipinranka | 12:9a20164dcc47 | 398 | pos[0]=1; |
vipinranka | 12:9a20164dcc47 | 399 | } else { |
vipinranka | 12:9a20164dcc47 | 400 | if(x>58&& x<108 && y>136 && y<176) { |
vipinranka | 12:9a20164dcc47 | 401 | myLCD.BMP_disp(dis_nav.hcx,dis_nav.hcy,dis_nav.hc,dis_nav.hcsize,dis_nav.hcw,dis_nav.hch); |
vipinranka | 12:9a20164dcc47 | 402 | pos[0]=0; |
vipinranka | 12:9a20164dcc47 | 403 | } |
vipinranka | 12:9a20164dcc47 | 404 | } |
vipinranka | 12:9a20164dcc47 | 405 | |
vipinranka | 12:9a20164dcc47 | 406 | } else { |
vipinranka | 12:9a20164dcc47 | 407 | if(pos[1]==0) { //Automation Navigation |
vipinranka | 12:9a20164dcc47 | 408 | myLCD.fillrect(161,81,319,237,Black); |
vipinranka | 12:9a20164dcc47 | 409 | myLCD.BMP_16(280,88,"/sd/gui/b_but.bmp"); |
vipinranka | 12:9a20164dcc47 | 410 | myLCD.BMP_16(207,82,"/sd/gui/bulb.bmp"); |
vipinranka | 12:9a20164dcc47 | 411 | myLCD.circle(190,105,15,White); |
vipinranka | 12:9a20164dcc47 | 412 | myLCD.fillcircle(190,105,13,prev_col); |
vipinranka | 12:9a20164dcc47 | 413 | int count=0; |
vipinranka | 12:9a20164dcc47 | 414 | for(int i=0; i<3; i++) { |
vipinranka | 12:9a20164dcc47 | 415 | for(int j=0; j<5; j++) { |
vipinranka | 12:9a20164dcc47 | 416 | int a=164+(j*30); |
vipinranka | 12:9a20164dcc47 | 417 | int b=138+(i*30); |
vipinranka | 12:9a20164dcc47 | 418 | myLCD.fillrect(a,b,a+30,b+30,colors[count++]); |
vipinranka | 12:9a20164dcc47 | 419 | } |
vipinranka | 12:9a20164dcc47 | 420 | } |
vipinranka | 12:9a20164dcc47 | 421 | pos[1]=1; |
vipinranka | 12:9a20164dcc47 | 422 | } else { |
vipinranka | 12:9a20164dcc47 | 423 | if(x>275 && x<319 && y>84 &&y<130) { |
vipinranka | 12:9a20164dcc47 | 424 | myLCD.BMP_disp(dis_nav.autx,dis_nav.auty,dis_nav.aut,dis_nav.autsize,dis_nav.autw,dis_nav.auth); |
vipinranka | 12:9a20164dcc47 | 425 | pos[1]=0; |
vipinranka | 12:9a20164dcc47 | 426 | } else if(x>164 && x<319 && y>138 && y<236) { |
vipinranka | 12:9a20164dcc47 | 427 | int a=(x-164)/30; |
vipinranka | 12:9a20164dcc47 | 428 | int b=(y-138)/30; |
vipinranka | 12:9a20164dcc47 | 429 | int c=a+(b*5); |
vipinranka | 12:9a20164dcc47 | 430 | myLCD.fillcircle(190,105,13,colors[c]); |
vipinranka | 12:9a20164dcc47 | 431 | char r=(char)((colors[c]>>11)&0x1f); |
vipinranka | 12:9a20164dcc47 | 432 | char g=(char)((colors[c]>>5)&0x3f); |
vipinranka | 12:9a20164dcc47 | 433 | char bl=(char)((colors[c])&0x1f); |
vipinranka | 12:9a20164dcc47 | 434 | set_color(r,g,bl); |
vipinranka | 12:9a20164dcc47 | 435 | prev_col=colors[c]; |
vipinranka | 12:9a20164dcc47 | 436 | |
vipinranka | 12:9a20164dcc47 | 437 | } |
vipinranka | 12:9a20164dcc47 | 438 | |
vipinranka | 12:9a20164dcc47 | 439 | } |
vipinranka | 12:9a20164dcc47 | 440 | } |
vipinranka | 12:9a20164dcc47 | 441 | } else if(y>238 && y<400) { |
vipinranka | 12:9a20164dcc47 | 442 | if(x<155) { //Security Navigation |
vipinranka | 12:9a20164dcc47 | 443 | if(pos[2]==0) { |
vipinranka | 12:9a20164dcc47 | 444 | myLCD.fillrect(dis_nav.secx,dis_nav.secy,dis_nav.secw+dis_nav.secx,dis_nav.sech+dis_nav.secy,Black); |
vipinranka | 12:9a20164dcc47 | 445 | myLCD.BMP_16(10,245,"/sd/gui/d_close.bmp"); |
vipinranka | 12:9a20164dcc47 | 446 | myLCD.BMP_16(113,245,"/sd/gui/b_but.bmp"); |
vipinranka | 12:9a20164dcc47 | 447 | myLCD.rect(10,365,35,390,White); |
vipinranka | 12:9a20164dcc47 | 448 | myLCD.rect(11,366,34,389,White); |
vipinranka | 12:9a20164dcc47 | 449 | myLCD.locate(45,365); |
vipinranka | 12:9a20164dcc47 | 450 | myLCD.set_font((unsigned char*) Arial24x23); |
vipinranka | 12:9a20164dcc47 | 451 | myLCD.printf("Camera"); |
vipinranka | 12:9a20164dcc47 | 452 | pos[2]=1; |
vipinranka | 12:9a20164dcc47 | 453 | } else { |
vipinranka | 12:9a20164dcc47 | 454 | if(x>9 && y >364 && x<36 && y<391) { |
vipinranka | 12:9a20164dcc47 | 455 | if(cam_sel==0) { |
vipinranka | 12:9a20164dcc47 | 456 | myLCD.fillrect(12,367,33,388,Blue); |
vipinranka | 12:9a20164dcc47 | 457 | cam_sel=1; |
vipinranka | 12:9a20164dcc47 | 458 | } else { |
vipinranka | 12:9a20164dcc47 | 459 | myLCD.fillrect(12,367,33,388,Black); |
vipinranka | 12:9a20164dcc47 | 460 | cam_sel=0; |
vipinranka | 12:9a20164dcc47 | 461 | } |
vipinranka | 12:9a20164dcc47 | 462 | } else if(x>112 && y>244 && x<154 && y<286) { |
vipinranka | 12:9a20164dcc47 | 463 | myLCD.BMP_disp(dis_nav.secx,dis_nav.secy,dis_nav.sec,dis_nav.secsize,dis_nav.secw,dis_nav.sech); |
vipinranka | 12:9a20164dcc47 | 464 | pos[2]=0; |
vipinranka | 12:9a20164dcc47 | 465 | } |
vipinranka | 12:9a20164dcc47 | 466 | } |
vipinranka | 12:9a20164dcc47 | 467 | |
vipinranka | 12:9a20164dcc47 | 468 | |
vipinranka | 12:9a20164dcc47 | 469 | } else { // Industry |
vipinranka | 12:9a20164dcc47 | 470 | if(pos[3]==0) { |
vipinranka | 12:9a20164dcc47 | 471 | myLCD.fillrect(dis_nav.indx,dis_nav.indy,dis_nav.indw+dis_nav.indx,dis_nav.indh+dis_nav.indy,Black); |
vipinranka | 12:9a20164dcc47 | 472 | myLCD.BMP_16(278,245,"/sd/gui/b_but.bmp"); |
vipinranka | 12:9a20164dcc47 | 473 | myLCD.BMP_16(200,250,"/sd/gui/blower.bmp"); |
vipinranka | 12:9a20164dcc47 | 474 | myLCD.BMP_16(163,345,"/sd/gui/minus.bmp"); |
vipinranka | 12:9a20164dcc47 | 475 | if(ind_of==0) |
vipinranka | 12:9a20164dcc47 | 476 | myLCD.BMP_16(214,335,"/sd/gui/b_p_off.bmp"); |
vipinranka | 12:9a20164dcc47 | 477 | else |
vipinranka | 12:9a20164dcc47 | 478 | myLCD.BMP_16(214,335,"/sd/gui/b_p_on.bmp"); |
vipinranka | 12:9a20164dcc47 | 479 | myLCD.BMP_16(266,345,"/sd/gui/plus.bmp"); |
vipinranka | 12:9a20164dcc47 | 480 | myLCD.locate(170,270); |
vipinranka | 12:9a20164dcc47 | 481 | myLCD.set_font((unsigned char*) Arial28x28); |
vipinranka | 12:9a20164dcc47 | 482 | myLCD.printf("%d",ind_speed); |
vipinranka | 12:9a20164dcc47 | 483 | pos[3]=1; |
vipinranka | 12:9a20164dcc47 | 484 | } else { |
vipinranka | 12:9a20164dcc47 | 485 | if(x>=266 && y>=345 && x<=316 && y<=395) { |
vipinranka | 12:9a20164dcc47 | 486 | ind_speed++; |
vipinranka | 12:9a20164dcc47 | 487 | if(ind_speed>9) |
vipinranka | 12:9a20164dcc47 | 488 | ind_speed=9; |
vipinranka | 12:9a20164dcc47 | 489 | |
vipinranka | 12:9a20164dcc47 | 490 | set_ind(ind_of,ind_speed); |
vipinranka | 12:9a20164dcc47 | 491 | myLCD.locate(170,270); |
vipinranka | 12:9a20164dcc47 | 492 | myLCD.set_font((unsigned char*) Arial28x28); |
vipinranka | 12:9a20164dcc47 | 493 | myLCD.printf("%d",ind_speed); |
vipinranka | 12:9a20164dcc47 | 494 | } else if(x>=163 && y>=345 && x<=213 && y<=395) { |
vipinranka | 12:9a20164dcc47 | 495 | ind_speed--; |
vipinranka | 12:9a20164dcc47 | 496 | if(ind_speed<0) |
vipinranka | 12:9a20164dcc47 | 497 | ind_speed=0; |
vipinranka | 12:9a20164dcc47 | 498 | set_ind(ind_of,ind_speed); |
vipinranka | 12:9a20164dcc47 | 499 | myLCD.locate(170,270); |
vipinranka | 12:9a20164dcc47 | 500 | myLCD.set_font((unsigned char*) Arial28x28); |
vipinranka | 12:9a20164dcc47 | 501 | myLCD.printf("%d",ind_speed); |
vipinranka | 12:9a20164dcc47 | 502 | } else if(x>=214 && y>=335 && x<=264 && y<=385) { |
vipinranka | 12:9a20164dcc47 | 503 | if(ind_of==0) { |
vipinranka | 12:9a20164dcc47 | 504 | myLCD.BMP_16(214,335,"/sd/gui/b_p_on.bmp"); |
vipinranka | 12:9a20164dcc47 | 505 | ind_of=1; |
vipinranka | 12:9a20164dcc47 | 506 | set_ind(ind_of,ind_speed); |
vipinranka | 12:9a20164dcc47 | 507 | } else { |
vipinranka | 12:9a20164dcc47 | 508 | myLCD.BMP_16(214,335,"/sd/gui/b_p_off.bmp"); |
vipinranka | 12:9a20164dcc47 | 509 | ind_of=0; |
vipinranka | 12:9a20164dcc47 | 510 | set_ind(ind_of,ind_speed); |
vipinranka | 12:9a20164dcc47 | 511 | } |
vipinranka | 12:9a20164dcc47 | 512 | } else if(x>=278 && y>=245 && x<=318 && y<=285) { |
vipinranka | 12:9a20164dcc47 | 513 | |
vipinranka | 12:9a20164dcc47 | 514 | myLCD.BMP_disp(dis_nav.indx,dis_nav.indy,dis_nav.ind,dis_nav.indsize,dis_nav.indw,dis_nav.indh); |
vipinranka | 12:9a20164dcc47 | 515 | pos[3]=0; |
vipinranka | 12:9a20164dcc47 | 516 | } |
vipinranka | 12:9a20164dcc47 | 517 | } |
vipinranka | 12:9a20164dcc47 | 518 | |
vipinranka | 12:9a20164dcc47 | 519 | } |
vipinranka | 12:9a20164dcc47 | 520 | } else if(y>400) { |
vipinranka | 12:9a20164dcc47 | 521 | myLCD.BMP_disp(dis_nav.indx,dis_nav.indy,dis_nav.ind,dis_nav.indsize,dis_nav.indw,dis_nav.indh); |
vipinranka | 12:9a20164dcc47 | 522 | myLCD.BMP_disp(dis_nav.secx,dis_nav.secy,dis_nav.sec,dis_nav.secsize,dis_nav.secw,dis_nav.sech); |
vipinranka | 12:9a20164dcc47 | 523 | myLCD.BMP_disp(dis_nav.autx,dis_nav.auty,dis_nav.aut,dis_nav.autsize,dis_nav.autw,dis_nav.auth); |
vipinranka | 12:9a20164dcc47 | 524 | myLCD.BMP_disp(dis_nav.hcx,dis_nav.hcy,dis_nav.hc,dis_nav.hcsize,dis_nav.hcw,dis_nav.hch); |
vipinranka | 12:9a20164dcc47 | 525 | pos[0]=pos[1]=pos[2]=pos[3]=0; |
vipinranka | 12:9a20164dcc47 | 526 | } |
vipinranka | 12:9a20164dcc47 | 527 | wait(0.1); |
vipinranka | 12:9a20164dcc47 | 528 | } |
vipinranka | 12:9a20164dcc47 | 529 | |
vipinranka | 12:9a20164dcc47 | 530 | void init_radio() |
vipinranka | 12:9a20164dcc47 | 531 | { |
vipinranka | 12:9a20164dcc47 | 532 | uint8_t hb[]= {0xe7,0xe7,0xe7,0xe8,0xe9}; |
vipinranka | 12:9a20164dcc47 | 533 | uint8_t sec[]= {0xe8,0xe7,0xe7,0xe8,0xe9}; |
vipinranka | 12:9a20164dcc47 | 534 | radio.begin(); |
vipinranka | 12:9a20164dcc47 | 535 | radio.setAutoAck(1); |
vipinranka | 12:9a20164dcc47 | 536 | radio.setChannel(100); |
vipinranka | 12:9a20164dcc47 | 537 | radio.setDataRate(RF24_1MBPS); |
vipinranka | 12:9a20164dcc47 | 538 | radio.enableAckPayload(); // Allow optional ack payloads |
vipinranka | 12:9a20164dcc47 | 539 | radio.setRetries(15, 15); |
vipinranka | 12:9a20164dcc47 | 540 | radio.setPALevel(RF24_PA_MAX); |
vipinranka | 12:9a20164dcc47 | 541 | radio.enableDynamicPayloads(); |
vipinranka | 12:9a20164dcc47 | 542 | radio.openReadingPipe(1,hb); |
vipinranka | 12:9a20164dcc47 | 543 | radio.openReadingPipe(2,sec); |
vipinranka | 12:9a20164dcc47 | 544 | radio.startListening(); |
vipinranka | 12:9a20164dcc47 | 545 | |
vipinranka | 12:9a20164dcc47 | 546 | } |
vipinranka | 12:9a20164dcc47 | 547 | |
vipinranka | 12:9a20164dcc47 | 548 | void cli_decode(char *c) |
vipinranka | 12:9a20164dcc47 | 549 | { |
vipinranka | 12:9a20164dcc47 | 550 | int count=0; |
vipinranka | 12:9a20164dcc47 | 551 | string s[10]; |
vipinranka | 12:9a20164dcc47 | 552 | char c1[20]; |
vipinranka | 12:9a20164dcc47 | 553 | int s_count=0; |
vipinranka | 12:9a20164dcc47 | 554 | for(int i=0; i<20; i++) { |
vipinranka | 12:9a20164dcc47 | 555 | if(c[i]=='\n') |
vipinranka | 12:9a20164dcc47 | 556 | break; |
vipinranka | 12:9a20164dcc47 | 557 | if(c[i]==',') { |
vipinranka | 12:9a20164dcc47 | 558 | s_count++; |
vipinranka | 12:9a20164dcc47 | 559 | continue; |
vipinranka | 12:9a20164dcc47 | 560 | } |
vipinranka | 12:9a20164dcc47 | 561 | s[s_count]+=c[i]; |
vipinranka | 12:9a20164dcc47 | 562 | } |
vipinranka | 12:9a20164dcc47 | 563 | |
vipinranka | 12:9a20164dcc47 | 564 | if(s[0]!="NEO"&&s[0]!="N") |
vipinranka | 12:9a20164dcc47 | 565 | return; |
vipinranka | 12:9a20164dcc47 | 566 | myLCD.fillrect(2,62,317,78,Black); |
vipinranka | 12:9a20164dcc47 | 567 | myLCD.locate(4,65); |
vipinranka | 12:9a20164dcc47 | 568 | myLCD.set_font((unsigned char*) Arial12x12); |
vipinranka | 12:9a20164dcc47 | 569 | myLCD.printf("Writing %s",c); |
vipinranka | 12:9a20164dcc47 | 570 | if(s[1]=="1") { |
vipinranka | 12:9a20164dcc47 | 571 | sprintf(c1,"%s,%s,%s,%s,1\n",s[0].c_str(),s[1].c_str(),s[2].c_str(),s[3].c_str()); |
vipinranka | 12:9a20164dcc47 | 572 | uint8_t add[]= {0xe7,0xe7,0xe7,0xe7,0xe8}; |
vipinranka | 12:9a20164dcc47 | 573 | radio.stopListening(); |
vipinranka | 12:9a20164dcc47 | 574 | radio.openWritingPipe(add); |
vipinranka | 12:9a20164dcc47 | 575 | wait_ms(2); |
vipinranka | 12:9a20164dcc47 | 576 | while (!radio.write( &c1, 20 )) { |
vipinranka | 12:9a20164dcc47 | 577 | myLCD.fillrect(2,62,317,78,Black); |
vipinranka | 12:9a20164dcc47 | 578 | myLCD.locate(4,65); |
vipinranka | 12:9a20164dcc47 | 579 | myLCD.set_font((unsigned char*) Arial12x12); |
vipinranka | 12:9a20164dcc47 | 580 | myLCD.printf("Failed"); |
vipinranka | 12:9a20164dcc47 | 581 | count++; |
vipinranka | 12:9a20164dcc47 | 582 | if(count>=10) |
vipinranka | 12:9a20164dcc47 | 583 | break; |
vipinranka | 12:9a20164dcc47 | 584 | wait(0.1); |
vipinranka | 12:9a20164dcc47 | 585 | } |
vipinranka | 12:9a20164dcc47 | 586 | wait_ms(2); |
vipinranka | 12:9a20164dcc47 | 587 | radio.startListening(); |
vipinranka | 12:9a20164dcc47 | 588 | wait_ms(1); |
vipinranka | 12:9a20164dcc47 | 589 | |
vipinranka | 12:9a20164dcc47 | 590 | } else if(s[1]=="5") { |
vipinranka | 12:9a20164dcc47 | 591 | sprintf(c1,"%s,%s,%s,%s,%s,%s,1\n",s[0].c_str(),s[1].c_str(),s[2].c_str(),s[3].c_str(),s[4].c_str(),s[5].c_str()); |
vipinranka | 12:9a20164dcc47 | 592 | uint8_t add[]= {0xe7,0xe7,0xe7,0xe8,0xe8}; |
vipinranka | 12:9a20164dcc47 | 593 | radio.stopListening(); |
vipinranka | 12:9a20164dcc47 | 594 | radio.openWritingPipe(add); |
vipinranka | 12:9a20164dcc47 | 595 | wait_ms(2); |
vipinranka | 12:9a20164dcc47 | 596 | int count=0; |
vipinranka | 12:9a20164dcc47 | 597 | while (!radio.write( &c1, 20 )) { |
vipinranka | 12:9a20164dcc47 | 598 | myLCD.fillrect(2,62,317,78,Black); |
vipinranka | 12:9a20164dcc47 | 599 | myLCD.locate(4,65); |
vipinranka | 12:9a20164dcc47 | 600 | myLCD.set_font((unsigned char*) Arial12x12); |
vipinranka | 12:9a20164dcc47 | 601 | myLCD.printf("Failed"); |
vipinranka | 12:9a20164dcc47 | 602 | count++; |
vipinranka | 12:9a20164dcc47 | 603 | if(count>=10) |
vipinranka | 12:9a20164dcc47 | 604 | break; |
vipinranka | 12:9a20164dcc47 | 605 | wait(0.1); |
vipinranka | 12:9a20164dcc47 | 606 | } |
vipinranka | 12:9a20164dcc47 | 607 | wait_ms(2); |
vipinranka | 12:9a20164dcc47 | 608 | radio.startListening(); |
vipinranka | 12:9a20164dcc47 | 609 | wait_ms(1); |
vipinranka | 12:9a20164dcc47 | 610 | |
vipinranka | 12:9a20164dcc47 | 611 | |
vipinranka | 12:9a20164dcc47 | 612 | } |
vipinranka | 12:9a20164dcc47 | 613 | } |
vipinranka | 12:9a20164dcc47 | 614 | |
vipinranka | 12:9a20164dcc47 | 615 | void rf_decode(char *c) |
vipinranka | 12:9a20164dcc47 | 616 | { |
vipinranka | 12:9a20164dcc47 | 617 | string s[10]; |
vipinranka | 12:9a20164dcc47 | 618 | c[19]='\n'; |
vipinranka | 12:9a20164dcc47 | 619 | |
vipinranka | 12:9a20164dcc47 | 620 | int s_count=0; |
vipinranka | 12:9a20164dcc47 | 621 | for(int i=0; i<20; i++) { |
vipinranka | 12:9a20164dcc47 | 622 | if(c[i]=='\n') |
vipinranka | 12:9a20164dcc47 | 623 | break; |
vipinranka | 12:9a20164dcc47 | 624 | if(c[i]==',') { |
vipinranka | 12:9a20164dcc47 | 625 | s_count++; |
vipinranka | 12:9a20164dcc47 | 626 | continue; |
vipinranka | 12:9a20164dcc47 | 627 | } |
vipinranka | 12:9a20164dcc47 | 628 | s[s_count]+=c[i]; |
vipinranka | 12:9a20164dcc47 | 629 | } |
vipinranka | 12:9a20164dcc47 | 630 | if(s[0]!="NEO") |
vipinranka | 12:9a20164dcc47 | 631 | return; |
vipinranka | 12:9a20164dcc47 | 632 | char send_cli[20]; |
vipinranka | 12:9a20164dcc47 | 633 | sprintf(send_cli,"%s,%s,%s,%s,%s\n",s[0].c_str(),s[1].c_str(),s[2].c_str(),s[3].c_str(),"1"); |
vipinranka | 12:9a20164dcc47 | 634 | if(client.is_connected()==true) { |
vipinranka | 12:9a20164dcc47 | 635 | client.send(send_cli,strlen(send_cli)); |
vipinranka | 12:9a20164dcc47 | 636 | } |
vipinranka | 12:9a20164dcc47 | 637 | |
vipinranka | 12:9a20164dcc47 | 638 | if(s[1]=="2") { |
vipinranka | 12:9a20164dcc47 | 639 | |
vipinranka | 12:9a20164dcc47 | 640 | if(pos[0]==1) { |
vipinranka | 12:9a20164dcc47 | 641 | myLCD.set_font((unsigned char*) Arial28x28); |
vipinranka | 12:9a20164dcc47 | 642 | myLCD.locate(86,100); |
vipinranka | 12:9a20164dcc47 | 643 | if(atoi(s[2].c_str())<100) |
vipinranka | 12:9a20164dcc47 | 644 | myLCD.printf("0%s",s[2].c_str()); |
vipinranka | 12:9a20164dcc47 | 645 | else |
vipinranka | 12:9a20164dcc47 | 646 | myLCD.printf("%s",s[2].c_str()); |
vipinranka | 12:9a20164dcc47 | 647 | } |
vipinranka | 12:9a20164dcc47 | 648 | } else if(s[1]=="3") { |
vipinranka | 12:9a20164dcc47 | 649 | if(pos[2]==1) { |
vipinranka | 12:9a20164dcc47 | 650 | if(s[2]=="1") { |
vipinranka | 12:9a20164dcc47 | 651 | myLCD.BMP_16(10,245,"/sd/gui/d_open.bmp"); |
vipinranka | 12:9a20164dcc47 | 652 | if(cam_sel==1) |
vipinranka | 12:9a20164dcc47 | 653 | take_picture(); |
vipinranka | 12:9a20164dcc47 | 654 | } else |
vipinranka | 12:9a20164dcc47 | 655 | myLCD.BMP_16(10,245,"/sd/gui/d_close.bmp"); |
vipinranka | 12:9a20164dcc47 | 656 | } |
vipinranka | 12:9a20164dcc47 | 657 | } |
vipinranka | 12:9a20164dcc47 | 658 | |
vipinranka | 12:9a20164dcc47 | 659 | } |
vipinranka | 12:9a20164dcc47 | 660 | |
vipinranka | 12:9a20164dcc47 | 661 | |
vipinranka | 12:9a20164dcc47 | 662 | void init_internet() |
vipinranka | 12:9a20164dcc47 | 663 | { |
vipinranka | 12:9a20164dcc47 | 664 | network.init("192.168.0.100","255.255.255.0","192.168.0.254"); //Use DHCP |
vipinranka | 12:9a20164dcc47 | 665 | network.connect(); |
vipinranka | 12:9a20164dcc47 | 666 | myLCD.fillrect(2,62,317,78,Black); |
vipinranka | 12:9a20164dcc47 | 667 | myLCD.locate(4,65); |
vipinranka | 12:9a20164dcc47 | 668 | myLCD.set_font((unsigned char*) Arial12x12); |
vipinranka | 12:9a20164dcc47 | 669 | myLCD.printf("IP Address is %s\n", network.getIPAddress()); |
vipinranka | 12:9a20164dcc47 | 670 | |
vipinranka | 12:9a20164dcc47 | 671 | } |
vipinranka | 12:9a20164dcc47 | 672 | |
vipinranka | 12:9a20164dcc47 | 673 | void init_fs() |
vipinranka | 12:9a20164dcc47 | 674 | { |
vipinranka | 12:9a20164dcc47 | 675 | char indexPage[256]; |
vipinranka | 12:9a20164dcc47 | 676 | sprintf(indexPage,"<HTML><HEAD><META content=\"text/html\" http-equiv=Content-Type><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" /> </HEAD><BODY><img src=\"abc10.jpg\" alt=\"Smiley face\" height=\"480\" width=\"320\"></BODY></HTML>\r\n\r\n"); |
vipinranka | 12:9a20164dcc47 | 677 | FILE *fp; |
vipinranka | 12:9a20164dcc47 | 678 | fp = fopen("/sd/index.htm", "w"); |
vipinranka | 12:9a20164dcc47 | 679 | fwrite(indexPage, sizeof(char), strlen(indexPage), fp); |
vipinranka | 12:9a20164dcc47 | 680 | fclose(fp); |
vipinranka | 12:9a20164dcc47 | 681 | } |
vipinranka | 12:9a20164dcc47 | 682 | |
vipinranka | 12:9a20164dcc47 | 683 | |
vipinranka | 12:9a20164dcc47 | 684 | |
vipinranka | 12:9a20164dcc47 | 685 | |
vipinranka | 12:9a20164dcc47 | 686 | void init_m_connect() |
vipinranka | 12:9a20164dcc47 | 687 | { |
vipinranka | 12:9a20164dcc47 | 688 | if(rf_server.bind(10101)<0) { |
vipinranka | 12:9a20164dcc47 | 689 | myLCD.fillrect(2,62,317,78,Black); |
vipinranka | 12:9a20164dcc47 | 690 | myLCD.locate(4,65); |
vipinranka | 12:9a20164dcc47 | 691 | myLCD.set_font((unsigned char*) Arial12x12); |
vipinranka | 12:9a20164dcc47 | 692 | myLCD.printf("Error in RF Server%s\n", network.getIPAddress()); |
vipinranka | 12:9a20164dcc47 | 693 | while(1); |
vipinranka | 12:9a20164dcc47 | 694 | } |
vipinranka | 12:9a20164dcc47 | 695 | if(rf_server.listen(1)<0) { |
vipinranka | 12:9a20164dcc47 | 696 | myLCD.fillrect(2,62,317,78,Black); |
vipinranka | 12:9a20164dcc47 | 697 | myLCD.locate(4,65); |
vipinranka | 12:9a20164dcc47 | 698 | myLCD.set_font((unsigned char*) Arial12x12); |
vipinranka | 12:9a20164dcc47 | 699 | myLCD.printf("Failed to listen", network.getIPAddress()); |
vipinranka | 12:9a20164dcc47 | 700 | while(1); |
vipinranka | 12:9a20164dcc47 | 701 | } |
vipinranka | 12:9a20164dcc47 | 702 | rf_server.set_blocking(false,100); |
vipinranka | 12:9a20164dcc47 | 703 | |
vipinranka | 12:9a20164dcc47 | 704 | } |
vipinranka | 12:9a20164dcc47 | 705 | |
vipinranka | 12:9a20164dcc47 | 706 | void poll_rfserver() |
vipinranka | 12:9a20164dcc47 | 707 | { |
vipinranka | 12:9a20164dcc47 | 708 | char a_buf[256]; |
vipinranka | 12:9a20164dcc47 | 709 | if(client.is_connected()==false) { |
vipinranka | 12:9a20164dcc47 | 710 | led3=0; |
vipinranka | 12:9a20164dcc47 | 711 | if(rf_server.accept(client)<0) { |
vipinranka | 12:9a20164dcc47 | 712 | return; |
vipinranka | 12:9a20164dcc47 | 713 | } |
vipinranka | 12:9a20164dcc47 | 714 | } else { |
vipinranka | 12:9a20164dcc47 | 715 | |
vipinranka | 12:9a20164dcc47 | 716 | int len=0; |
vipinranka | 12:9a20164dcc47 | 717 | led3=1; |
vipinranka | 12:9a20164dcc47 | 718 | client.set_blocking(false,100); |
vipinranka | 12:9a20164dcc47 | 719 | if((len=client.receive(a_buf,256))>0) { |
vipinranka | 12:9a20164dcc47 | 720 | a_buf[len+1]='\0'; |
vipinranka | 12:9a20164dcc47 | 721 | a_buf[len]='\n'; |
vipinranka | 12:9a20164dcc47 | 722 | |
vipinranka | 12:9a20164dcc47 | 723 | myLCD.fillrect(2,62,317,78,Black); |
vipinranka | 12:9a20164dcc47 | 724 | myLCD.locate(4,65); |
vipinranka | 12:9a20164dcc47 | 725 | myLCD.set_font((unsigned char*) Arial12x12); |
vipinranka | 12:9a20164dcc47 | 726 | myLCD.printf("Received from client %s", a_buf); |
vipinranka | 12:9a20164dcc47 | 727 | cli_decode(a_buf); |
vipinranka | 12:9a20164dcc47 | 728 | } |
vipinranka | 12:9a20164dcc47 | 729 | } |
vipinranka | 12:9a20164dcc47 | 730 | |
vipinranka | 12:9a20164dcc47 | 731 | } |
vipinranka | 12:9a20164dcc47 | 732 | |
vipinranka | 12:9a20164dcc47 | 733 | |
vipinranka | 12:9a20164dcc47 | 734 | int main() |
vipinranka | 12:9a20164dcc47 | 735 | { |
vipinranka | 12:9a20164dcc47 | 736 | uart.baud (115200); |
vipinranka | 12:9a20164dcc47 | 737 | Init_lcd_touch(); |
vipinranka | 12:9a20164dcc47 | 738 | init_gui(); |
vipinranka | 12:9a20164dcc47 | 739 | pos[0]=pos[1]=pos[2]=pos[3]=0; |
vipinranka | 12:9a20164dcc47 | 740 | init_radio(); |
vipinranka | 12:9a20164dcc47 | 741 | init_camera(); |
vipinranka | 12:9a20164dcc47 | 742 | init_internet(); |
vipinranka | 12:9a20164dcc47 | 743 | init_fs(); |
vipinranka | 12:9a20164dcc47 | 744 | HTTPFsRequestHandler::mount("/sd/", "/"); |
vipinranka | 12:9a20164dcc47 | 745 | svr.addHandler<HTTPFsRequestHandler>("/"); |
vipinranka | 12:9a20164dcc47 | 746 | if (!svr.start(80,&network)) { |
vipinranka | 12:9a20164dcc47 | 747 | myLCD.fillrect(2,62,317,78,Black); |
vipinranka | 12:9a20164dcc47 | 748 | myLCD.locate(4,65); |
vipinranka | 12:9a20164dcc47 | 749 | myLCD.set_font((unsigned char*) Arial12x12); |
vipinranka | 12:9a20164dcc47 | 750 | myLCD.printf("Error in http server start", network.getIPAddress()); |
vipinranka | 12:9a20164dcc47 | 751 | while(1); |
vipinranka | 12:9a20164dcc47 | 752 | } |
vipinranka | 12:9a20164dcc47 | 753 | init_m_connect(); |
vipinranka | 12:9a20164dcc47 | 754 | char c[20]; |
vipinranka | 12:9a20164dcc47 | 755 | while(1) { |
vipinranka | 12:9a20164dcc47 | 756 | if(network.getIPAddress()==NULL) { |
vipinranka | 12:9a20164dcc47 | 757 | init_internet(); |
vipinranka | 12:9a20164dcc47 | 758 | if (!svr.start(80,&network)) { |
vipinranka | 12:9a20164dcc47 | 759 | myLCD.fillrect(2,62,317,78,Black); |
vipinranka | 12:9a20164dcc47 | 760 | myLCD.locate(4,65); |
vipinranka | 12:9a20164dcc47 | 761 | myLCD.set_font((unsigned char*) Arial12x12); |
vipinranka | 12:9a20164dcc47 | 762 | myLCD.printf("Error in http server start", network.getIPAddress()); |
vipinranka | 12:9a20164dcc47 | 763 | while(1); |
vipinranka | 12:9a20164dcc47 | 764 | } |
vipinranka | 12:9a20164dcc47 | 765 | init_m_connect(); |
vipinranka | 12:9a20164dcc47 | 766 | |
vipinranka | 12:9a20164dcc47 | 767 | } |
vipinranka | 12:9a20164dcc47 | 768 | svr.poll(); |
vipinranka | 12:9a20164dcc47 | 769 | poll_rfserver(); |
vipinranka | 12:9a20164dcc47 | 770 | if(get_xy()==1) { |
vipinranka | 12:9a20164dcc47 | 771 | navigate(TP.display.x,TP.display.y); |
vipinranka | 12:9a20164dcc47 | 772 | } |
vipinranka | 12:9a20164dcc47 | 773 | if(radio.available()) { |
vipinranka | 12:9a20164dcc47 | 774 | while(radio.available()) { |
vipinranka | 12:9a20164dcc47 | 775 | radio.read(&c,20); |
vipinranka | 12:9a20164dcc47 | 776 | c[19]='\0'; |
vipinranka | 12:9a20164dcc47 | 777 | if(in_pic!=1) { |
vipinranka | 12:9a20164dcc47 | 778 | myLCD.fillrect(2,62,317,78,Black); |
vipinranka | 12:9a20164dcc47 | 779 | myLCD.locate(4,65); |
vipinranka | 12:9a20164dcc47 | 780 | myLCD.set_font((unsigned char*) Arial12x12); |
vipinranka | 12:9a20164dcc47 | 781 | myLCD.printf("Reading %s",c); |
vipinranka | 12:9a20164dcc47 | 782 | } |
vipinranka | 12:9a20164dcc47 | 783 | rf_decode(c); |
vipinranka | 12:9a20164dcc47 | 784 | } |
vipinranka | 12:9a20164dcc47 | 785 | } |
vipinranka | 12:9a20164dcc47 | 786 | temp_count++; |
vipinranka | 12:9a20164dcc47 | 787 | if(temp_count>=10) { |
vipinranka | 12:9a20164dcc47 | 788 | temp_count=0; |
vipinranka | 12:9a20164dcc47 | 789 | char c[20]; |
vipinranka | 12:9a20164dcc47 | 790 | float tem=temp.read()*3.3*100; |
vipinranka | 12:9a20164dcc47 | 791 | sprintf(c,"NEO,5,%2.0f,0,1\n",tem); |
vipinranka | 12:9a20164dcc47 | 792 | if(client.is_connected()==true) { |
vipinranka | 12:9a20164dcc47 | 793 | client.send(c,strlen(c)); |
vipinranka | 12:9a20164dcc47 | 794 | } |
vipinranka | 12:9a20164dcc47 | 795 | if(pos[0]==1 && in_pic!=1) { |
vipinranka | 12:9a20164dcc47 | 796 | myLCD.set_font((unsigned char*) Arial28x28); |
vipinranka | 12:9a20164dcc47 | 797 | |
vipinranka | 12:9a20164dcc47 | 798 | myLCD.locate(78,194); |
vipinranka | 12:9a20164dcc47 | 799 | myLCD.printf("%2.0f",tem); |
vipinranka | 12:9a20164dcc47 | 800 | // myLCD.rect(76,188,152,225,Red); |
vipinranka | 12:9a20164dcc47 | 801 | myLCD.circle(116,197,3,Red); |
vipinranka | 12:9a20164dcc47 | 802 | myLCD.locate(124,194); |
vipinranka | 12:9a20164dcc47 | 803 | myLCD.printf("C"); |
vipinranka | 12:9a20164dcc47 | 804 | pos[0]=1; |
vipinranka | 12:9a20164dcc47 | 805 | } |
vipinranka | 12:9a20164dcc47 | 806 | } |
vipinranka | 12:9a20164dcc47 | 807 | } |
vipinranka | 12:9a20164dcc47 | 808 | } |