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.
Dependencies: mbed JY901 TextLCD TinyGPS AsyncSerial PowerControl
main.cpp
00001 #include "mbed.h" 00002 #include "AsyncSerial.hpp" 00003 #include "TextLCD.h" 00004 #include "string.h" 00005 00006 DigitalOut rudLevel1(p5); 00007 DigitalOut rudLevel2(p6); 00008 DigitalOut rudLevel3(p7); 00009 DigitalOut rudLevel4(p8); 00010 DigitalOut rudLevel5(p11); 00011 DigitalOut rudLevel6(p12); 00012 DigitalOut rudLevel7(p15); 00013 00014 DigitalOut eleLevel1(p21); 00015 DigitalOut eleLevel2(p22); 00016 DigitalOut eleLevel3(p23); 00017 DigitalOut eleLevel4(p24); 00018 DigitalOut eleLevel5(p25); 00019 DigitalOut eleLevel6(p26); 00020 DigitalOut eleLevel7(p29); 00021 00022 DigitalOut beep1(LED1); 00023 DigitalOut beep2(LED2); 00024 DigitalOut beep3(LED3); 00025 DigitalOut beep4(LED4); 00026 00027 DigitalOut beep(p30); 00028 00029 Serial pc(USBTX, USBRX); 00030 AsyncSerial Serial1(p13,p14,9600,256); // tx, rx //rot(out),master(in) 00031 //AsyncSerial Serial2(p9,p10,9600,256);//height(out) 00032 I2C display(p28, p27);// sda, scl 00033 const int addr = 0x4E;// define the I2C Address 00034 TextLCD_I2C lcd(&display,addr,TextLCD::LCD20x4); 00035 00036 00037 //AsyncSerial Serial3(p28,p27,9600,256);//speed(out) 00038 //Ticker flipper; 00039 //Ticker flipper2; 00040 //5-30 00041 //5-8,11,12,13-26,29,30->total:20 free pins 00042 //5-8,11,12,15:RUD 00043 //21-26,29:ELE 00044 00045 /* 00046 struct DATA1{ 00047 float height; 00048 int rot_count; 00049 float air_speed; 00050 float analog[2];//0=ELE 1=RUD 00051 }; 00052 DATA1 receive; 00053 */ 00054 00055 //float receive[5]; 00056 00057 struct DATA{ 00058 float height; 00059 int rot_count; 00060 float air_speed; 00061 float analog[2];//0=ELE 1=RUD 00062 }; 00063 DATA data; 00064 00065 struct DATA2{ 00066 float height; 00067 int rot_count; 00068 float air_speed; 00069 float ele; 00070 float rud; 00071 }; 00072 00073 DATA2 receive; 00074 char a[40]; 00075 char *c; 00076 char mheight[6], mrot[4], mspeed[6], mele[9], mrud[9]; 00077 00078 Timer t; 00079 //unsigned long time; 00080 int beepTimes; 00081 00082 void ini(){ 00083 /* 00084 int n;//count 00085 00086 for(n=0 ; n<5 ; n++){ 00087 receive[n] = 0.0; 00088 } 00089 */ 00090 00091 data.height=0; 00092 data.rot_count=0; 00093 data.air_speed=0; 00094 data.analog[0]=0.0; 00095 data.analog[1]=0.0; 00096 00097 receive.height = 0.0; 00098 receive.rot_count = 0; 00099 receive.air_speed = 0.0; 00100 receive.ele = 0.0; 00101 receive.rud = 0.0; 00102 } 00103 //receive data => Serial2.printf("%5.2,%3d,%5.2f,%7f,%7f",(float)data.height/1000,data.rot_count,data.air_speed,data.a,data.b,data.fmps,data.angle[0],data.analog[0],data.analog[1]); 00104 void dispini(){ 00105 lcd.setBacklight(TextLCD::LightOn); 00106 00107 lcd.locate(0,0); 00108 lcd.printf("Windnauts2019"); 00109 00110 eleLevel1 = 1;rudLevel1 = 1; 00111 wait_ms(100); 00112 eleLevel2 = 1;rudLevel2 = 1; 00113 wait_ms(100); 00114 eleLevel3 = 1;rudLevel3 = 1; 00115 wait_ms(100); 00116 eleLevel4 = 1;rudLevel4 = 1; 00117 wait_ms(100); 00118 eleLevel5 = 1;rudLevel5 = 1; 00119 wait_ms(100); 00120 eleLevel6 = 1;rudLevel6 = 1; 00121 wait_ms(100); 00122 eleLevel7 = 1;rudLevel7 = 1; 00123 00124 00125 00126 lcd.locate(0,1); 00127 lcd.printf("Hal Startup..."); 00128 00129 00130 wait_ms(500); 00131 eleLevel1 = 0;rudLevel1 = 0; 00132 wait_ms(100); 00133 eleLevel2 = 0;rudLevel2 = 0; 00134 wait_ms(100); 00135 eleLevel3 = 0;rudLevel3 = 0; 00136 wait_ms(100); 00137 eleLevel4 = 0;rudLevel4 = 0; 00138 wait_ms(100); 00139 eleLevel5 = 0;rudLevel5 = 0; 00140 wait_ms(100); 00141 eleLevel6 = 0;rudLevel6 = 0; 00142 wait_ms(100); 00143 eleLevel7 = 0;rudLevel7 = 0; 00144 lcd.locate(0,2); 00145 lcd.printf("Stand-by OK"); 00146 wait_ms(500); 00147 00148 eleLevel1 = 0;eleLevel2 = 0;eleLevel3 = 0;eleLevel4 = 0;eleLevel5 = 0;eleLevel6 = 0;eleLevel7 = 0; 00149 rudLevel1 = 0;rudLevel2 = 0;rudLevel3 = 0;rudLevel4 = 0;rudLevel5 = 0;rudLevel6 = 0;rudLevel7 = 0; 00150 wait_ms(100); 00151 00152 t.start(); 00153 } 00154 00155 /* 00156 void displayPrint(){ 00157 } 00158 00159 */ 00160 00161 void ELE(){ 00162 00163 if(0.78<=receive.ele){ 00164 eleLevel1 = 1; 00165 eleLevel2 = 0; 00166 eleLevel3 = 0; 00167 eleLevel4 = 1; 00168 eleLevel5 = 0; 00169 eleLevel6 = 0; 00170 eleLevel7 = 0; 00171 } 00172 if(0.75<=receive.ele && receive.ele<0.78){ 00173 eleLevel1 = 0; 00174 eleLevel2 = 1; 00175 eleLevel3 = 0; 00176 eleLevel4 = 1; 00177 eleLevel5 = 0; 00178 eleLevel6 = 0; 00179 eleLevel7 = 0; 00180 } 00181 if(0.73<=receive.ele && receive.ele<0.75){ 00182 eleLevel1 = 0; 00183 eleLevel2 = 0; 00184 eleLevel3 = 1; 00185 eleLevel4 = 1; 00186 eleLevel5 = 0; 00187 eleLevel6 = 0; 00188 eleLevel7 = 0; 00189 } 00190 if(0.67<=receive.ele && receive.ele<0.73){ 00191 eleLevel1 = 0; 00192 eleLevel2 = 0; 00193 eleLevel3 = 0; 00194 eleLevel4 = 1; 00195 eleLevel5 = 0; 00196 eleLevel6 = 0; 00197 eleLevel7 = 0; 00198 } 00199 if(0.65<=receive.ele && receive.ele<0.67){ 00200 eleLevel1 = 0; 00201 eleLevel2 = 0; 00202 eleLevel3 = 0; 00203 eleLevel4 = 1; 00204 eleLevel5 = 1; 00205 eleLevel6 = 0; 00206 eleLevel7 = 0; 00207 } 00208 if(0.63<=receive.ele && receive.ele<0.65){ 00209 eleLevel1 = 0; 00210 eleLevel2 = 0; 00211 eleLevel3 = 0; 00212 eleLevel4 = 1; 00213 eleLevel5 = 0; 00214 eleLevel6 = 1; 00215 eleLevel7 = 0; 00216 } 00217 if(receive.ele<=0.63){ 00218 eleLevel1 = 0; 00219 eleLevel2 = 0; 00220 eleLevel3 = 0; 00221 eleLevel4 = 1; 00222 eleLevel5 = 0; 00223 eleLevel6 = 0; 00224 eleLevel7 = 1; 00225 } 00226 } 00227 00228 void RUD(){ 00229 00230 if(0.54<=receive.rud){ 00231 rudLevel1 = 1; 00232 rudLevel2 = 0; 00233 rudLevel3 = 0; 00234 rudLevel4 = 1; 00235 rudLevel5 = 0; 00236 rudLevel6 = 0; 00237 rudLevel7 = 0; 00238 } 00239 if(0.52<=receive.rud && receive.rud<0.54){ 00240 rudLevel1 = 0; 00241 rudLevel2 = 1; 00242 rudLevel3 = 0; 00243 rudLevel4 = 1; 00244 rudLevel5 = 0; 00245 rudLevel6 = 0; 00246 rudLevel7 = 0; 00247 } 00248 if(0.49<=receive.rud && receive.rud<0.52){ 00249 rudLevel1 = 0; 00250 rudLevel2 = 0; 00251 rudLevel3 = 1; 00252 rudLevel4 = 1; 00253 rudLevel5 = 0; 00254 rudLevel6 = 0; 00255 rudLevel7 = 0; 00256 } 00257 if(0.43<=receive.rud && receive.rud<0.49){ 00258 rudLevel1 = 0; 00259 rudLevel2 = 0; 00260 rudLevel3 = 0; 00261 rudLevel4 = 1; 00262 rudLevel5 = 0; 00263 rudLevel6 = 0; 00264 rudLevel7 = 0; 00265 } 00266 if(0.40<=receive.rud && receive.rud<0.43){ 00267 rudLevel1 = 0; 00268 rudLevel2 = 0; 00269 rudLevel3 = 0; 00270 rudLevel4 = 1; 00271 rudLevel5 = 1; 00272 rudLevel6 = 0; 00273 rudLevel7 = 0; 00274 } 00275 if(0.38<=receive.rud && receive.rud<0.40){ 00276 rudLevel1 = 0; 00277 rudLevel2 = 0; 00278 rudLevel3 = 0; 00279 rudLevel4 = 1; 00280 rudLevel5 = 0; 00281 rudLevel6 = 1; 00282 rudLevel7 = 0; 00283 } 00284 if(receive.rud<0.38){ 00285 rudLevel1 = 0; 00286 rudLevel2 = 0; 00287 rudLevel3 = 0; 00288 rudLevel4 = 1; 00289 rudLevel5 = 0; 00290 rudLevel6 = 0; 00291 rudLevel7 = 1; 00292 } 00293 } 00294 00295 00296 void send(){ 00297 //pc.printf("%f,%f,%f,%f,%f\r\n",receive.height,receive.rot_count,receive.air_speed,receive.ele,receive.rud); 00298 //display.write(addr, receive, 7, true); 00299 00300 //lcd.locate(0,0); 00301 //lcd.printf("abyabya"); 00302 00303 lcd.locate(0,0); 00304 lcd.printf("height:%5.2fm", receive.height); 00305 00306 lcd.locate(0,1); 00307 lcd.printf("cadence: %3drpm", receive.rot_count/10); 00308 00309 lcd.locate(0,2); 00310 lcd.printf("speed: %5.2fm/s", receive.air_speed); 00311 00312 00313 pc.printf("receive height:%5.2f,rot:%3d,speed:%5.2f,ele:%7f,rud:%7f\r\n",receive.height,receive.rot_count,receive.air_speed,receive.ele,receive.rud); 00314 pc.printf("divided to mheight:%s,mrot:%s,mspeed:%s,mele:%s,mrud:%s\r\n",mheight,mrot,mspeed,mele,mrud); 00315 pc.printf("rawReceive %s\n\n",a); 00316 //pc.printf("%s\r\n",c); 00317 //pc.printf(Serial1.getc()); 00318 //pc.printf("root2 %c,%c,%c,%c,%c\r\n",a[0],a[1],a[2],a[3],a[4]); 00319 //pc.printf("%c",); 00320 } 00321 00322 00323 int main(){ 00324 int i=0;//count 00325 00326 00327 ini(); 00328 dispini(); 00329 00330 while(1){ 00331 00332 //receive-> Serial2.printf("%5.2f,%3d,%5.2f,%7f,%7f\r\n",(float)data.height/1000,data.rot_count,data.air_speed,data.analog[0],data.analog[1]); 00333 while (Serial1.readable() > 0){ 00334 a[i] = Serial1.getc(); 00335 // c[i] = Serial1.getc(); 00336 00337 if(a[i]=='\n'){ 00338 /* 00339 if(receiveCount == 0){ 00340 a[i]='\0'; 00341 receive.height=atof(a); 00342 receiveCount++;} 00343 if(receiveCount == 1){ 00344 a[i]='\0'; 00345 receive.rot_count = atoi(a); 00346 receiveCount++;} 00347 if(receiveCount == 2){ 00348 a[i]='\0'; 00349 receive.air_speed = atof(a); 00350 receiveCount++;} 00351 if(receiveCount == 3){ 00352 a[i]='\0'; 00353 receive.ele = atof(a); 00354 receiveCount++;} 00355 if(receiveCount == 4){ 00356 a[i]='\0'; 00357 receive.rud = atof(a); 00358 receiveCount = 0;} 00359 */ 00360 for(i=0 ; i<5 ; i++) 00361 mheight[i] = a[i]; 00362 mheight[5] = '0'; 00363 00364 for(i=6 ; i<9 ; i++) 00365 mrot[i-6] = a[i]; 00366 mrot[3] = '0'; 00367 00368 for(i=10 ; i<15 ; i++) 00369 mspeed[i-10] = a[i]; 00370 mspeed[5] = '0'; 00371 00372 for(i=16 ; i<24 ; i++) 00373 mele[i-16] = a[i]; 00374 mele[8] = '0'; 00375 00376 for(i=25 ; i<33 ; i++) 00377 mrud[i-25] = a[i]; 00378 mrud[8] = '0'; 00379 00380 i = 0; 00381 receive.height = atof(mheight); 00382 receive.rot_count = atof(mrot); 00383 receive.air_speed = atof(mspeed); 00384 receive.ele = atof(mele); 00385 receive.rud = atof(mrud); 00386 00387 00388 00389 }else{ 00390 i++; 00391 } 00392 00393 00394 /* receive.height = data.height; 00395 receive.rot_count = (float)data.rot_count; 00396 receive.air_speed = data.air_speed; 00397 receive.ele = data.analog[0]; 00398 receive.rud = data.analog[1];*/ 00399 } 00400 00401 00402 //lcd.locate(0,0); 00403 //lcd.printf("hi"); 00404 RUD(); 00405 ELE(); 00406 send(); 00407 wait_ms(1000); 00408 00409 unsigned long time=t.read_ms()/1000; 00410 00411 if (time%300==0){ 00412 for(beepTimes=0 ; beepTimes<4 ; beepTimes++){ 00413 beep = 1; 00414 beep1 = 1; 00415 beep2 = 1; 00416 beep3 = 1; 00417 beep4 = 1; 00418 wait_ms(1000); 00419 beep = 0; 00420 beep1 = 0; 00421 beep2 = 0; 00422 beep3 = 0; 00423 beep4 = 0; 00424 }}; 00425 } 00426 } 00427
Generated on Tue Jul 12 2022 16:33:38 by
1.7.2