HEPTA-Sat Hands-On
/
0000_hepta_check
full
main.cpp
- Committer:
- MEXT1
- Date:
- 2017-05-02
- Revision:
- 0:abaad4af646d
File content as of revision 0:abaad4af646d:
#include "mbed.h" #include "Hepta.h" HeptaGPS gps(p13,p14);//tx,rx(Din,Data_Out) HeptaBattery battery(p16,p29,p26);//(battery voltage,power cotrol transister,3.3V regulater enable) SDFileSystem sd(p11, p12, p13, p15, "sd");//(cmd,dat0,clk,dat3) HeptaGyro gyro(p28,p27,0xD4);//(sda,scl,I2C address) HeptaAccel accel(p28,p27,0x38);//(sda,scl,I2C address) TextLCD_SB1602E lcd(p28,p27,0x7C);//(sda,scl,I2C address) ATP3011 talk(p28, p27,0x5C); //(sda,scl,I2C address) HeptaXbee xbee(p9, p10);//tx,rx(Din,Dout) HeptaCamera camera( p28,p27, // SDA,SCL(I2C / SCCB) p21,p22,p23, // VSYNC,HREF,WEN(FIFO) p5,p6,p7,p8,p30,p17,p25,p18, // D7-D0 p20,p24,p19) ; // RRST,OE,RCK //----SERIAL----// //----LED----// DigitalOut led1(LED1); DigitalOut led2(LED2); DigitalOut led3(LED3); DigitalOut led4(LED4); int main() { char mode; pc.baud(9600); //pc.baud(921600); while(1) { pc.printf("Hello world. This is DEMO mode\r\n"); pc.printf("Please select mode.\r\n"); pc.printf("1:LED Mode\r\n"); pc.printf("2:LED Count Mode\r\n"); pc.printf("3:Electrical Vlotage Detection Mode\r\n"); pc.printf("4:Battery Charge Mode\n\r"); pc.printf("5:Battery Fast Charge Mode\r\n"); pc.printf("6:SD Card Check Mode\n\r"); pc.printf("7:Storing Battery Voltage to SD Card Mode\r\n"); pc.printf("8:Gyro Sensor Mode\r\n"); pc.printf("9:Accel Sensor Mode\r\n"); pc.printf("a:GPS Sensor Mode\r\n"); pc.printf("b:Camera Mode\r\n"); pc.printf("c:LCD Mode\r\n"); pc.printf("d:Voice Mode\r\n"); pc.printf("e:Xbee Mode\r\n"); pc.printf("f:All Data Downlink to Pc Mode\r\n"); pc.printf("g:All Data Downlink to Pc by Xbee Mode\r\n"); pc.printf("h:High speed sensing mode for gyro & accel Mode\r\n"); pc.printf("i:High speed sensing mode and caluclate to deg\r\n"); mode = pc.putc(pc.getc()); pc.printf("\n\r"); if(mode=='0'){ pc.printf("0:Under construction!!!\n\r"); }else if(mode=='1'){ pc.printf("1:LED Mode\n\r"); while(1) { led1 = 1; wait(0.2); led2 = 0; wait(0.2); } }else if(mode=='2'){ pc.printf("2:LED Count Mode\n\r"); int k=1; //初期化 while(1) { if(k>0x10)k=1; //kが0b00010000になったら0b00000001にする led1 = k & 0x01; led2 = k & 0x02; led3 = k & 0x04; led4 = k & 0x08; k=k<<1; //kの中を左に1つ移動 wait(0.1); //0.1秒待つ } }else if(mode=='3'){ pc.printf("3:Electrical Vlotage Detection Mode\n\r"); int i,dsize; float bt; char abt[4]; pc.printf("Hellow\r\n"); while(1){ battery.vol(&bt); battery.vol_u16(abt,&dsize); pc.printf("Vol = %f\r\n",bt); pc.printf("Vol_u16 = "); for(i=1;i<dsize;i++){ pc.putc(abt[i]); } pc.printf("\r\n"); wait(1.0); } }else if (mode=='4'){ pc.printf("4:Battery Charge Mode\n\r"); float bt; int save_flag; while(1) { battery.charge(&save_flag); battery.vol(&bt); pc.printf("Vol = %f\r\n",bt); pc.printf("save = %d\r\n",save_flag); if(save_flag == 0){ pc.printf("Vol = %f\r\n",bt); } wait(1.0); } }else if (mode=='5'){ pc.printf("5:Fast Cherge Mode\n\r"); float bt; battery.vol(&bt); pc.printf("V = %f\r\n",bt); wait(3.0); while(1) { battery.fast_charge(); } }else if (mode=='6'){ pc.printf("6:SD Card Check Mode\n\r"); mkdir("/sd/mydir", 0777); FILE *fp = fopen("/sd/mydir/sdtest.txt", "w"); if(fp == NULL) { error("Could not open file for write\n"); } fprintf(fp, "Hello My name is HEPTA!"); fclose(fp); }else if (mode=='7'){ pc.printf("7:Storing Battery Voltage to SD Card Mode\n\r"); float bt; int i; mkdir("/sd/mydir", 0777); FILE *fp = fopen("/sd/mydir/battery.txt", "w"); if(fp == NULL) { error("Could not open file for write\n"); } for(i=1;i<=10;i++){ battery.vol(&bt); pc.printf("Vol = %f\r\n",bt); fprintf(fp,"%f\r\n",bt); wait(1.0); } fclose(fp); pc.printf("End\n\r"); }else if (mode=='8'){ pc.printf("8:Gyro Sensor Mode\n\r"); float gx,gy,gz; pc.printf("X Y Z\r\n"); while(1){ gyro.sensing(&gx,&gy,&gz); pc.printf("%2.5f %2.5f %2.5f\r\n",gx,gy,gz); wait(1.0); } }else if (mode=='9'){ pc.printf("9:Accel Sensor Mode\n\r"); float ax,ay,az; pc.printf("X Y Z\r\n"); while(1){ accel.sensing(&ax,&ay,&az); pc.printf("%2.5f %2.5f %2.5f\r\n",ax,ay,az); wait(1.0); } }else if (mode=='a'){ pc.printf("a:GPS Sensor Mode\n\r"); float lad,log; while(1) { gps.sensing(&lad,&log); pc.printf("Lad = %2.5f Log =%2.5f\r\n",lad,log); } }else if (mode=='b'){ pc.printf("b:Camera Mode\n\r"); //camera.shoot2(); camera.shoot(); wait(10); pc.printf("Finish!!\n\r"); }else if (mode=='c'){ pc.printf("c:LCD Mode\n\r"); int i; lcd.printf(0,"Hello\r"); lcd.printf(1,"World\r"); for(i=1;i<10;i++){ lcd.printf(0,"num = %d\r",i); wait(1.0); } }else if (mode=='d'){ pc.printf("d:Voice Mode\r\n"); talk.Synthe("konnichiha\r"); break; }else if (mode=='e'){ pc.printf("e:Xbee Mode\r\n"); int i=0,rcmd=0,cmdflag=0; //xbee_serial.printf("Count Up!\r"); xbee.printf("Count Up!\r"); while(1){ //xbee_serial.printf("num = %d\r",i); xbee.printf("num = %d\r",i); i++; wait(1.0); xbee.xbee_recieve(&rcmd,&cmdflag); pc.printf("rcmd=%d, cmdflag=%d\r\n",rcmd, cmdflag); if (cmdflag == 1){ if (rcmd == 'a'){ pc.printf("Command Get %d\r\n",rcmd); xbee.printf("HEPTA Uplink OK\r"); } xbee.initialize(); } } }else if(mode=='f'){ pc.printf("f:All Data Downlink to Pc Mode\r\n"); char gx[4],gy[4],gz[4],ax[4],ay[4],az[4],lad[8],log[8],bt[4]; char ddata[44]; int dsize[4]; while(1) { gyro.sensing_u16(gx,gy,gz,&dsize[0]); accel.sensing_u16(ax,ay,az,&dsize[1]); gps.sensing_u16(lad,log,&dsize[2]); battery.vol_u16(bt,&dsize[3]); //gyro.x_u16(gx,4); pc_transmit(ddata,44,gx,gy,gz,ax,ay,az,lad,log,bt,dsize[0],dsize[0],dsize[0],dsize[1],dsize[1],dsize[1],dsize[2],dsize[2],dsize[3],9); } }else if(mode=='g'){ pc.printf("g:All Data Downlink to Pc by Xbee Mode\r\n"); char gx[4],gy[4],gz[4],ax[4],ay[4],az[4],lad[8],log[8],bt[4]; char ddata[44]; int dsize[4]; while(1) { gyro.sensing_u16(gx,gy,gz,&dsize[0]); accel.sensing_u16(ax,ay,az,&dsize[1]); gps.sensing_u16(lad,log,&dsize[2]); battery.vol_u16(bt,&dsize[3]); //gyro.x_u16(gx,4); xbee.xbee_transmit(ddata,44,gx,gy,gz,ax,ay,az,lad,log,bt,dsize[0],dsize[0],dsize[0],dsize[1],dsize[1],dsize[1],dsize[2],dsize[2],dsize[3],9); } }else if(mode=='h'){ pc.printf("h:High speed sensing mode for gyro & accel Mode\r\n"); char gx[4],gy[4],gz[4],ax[4],ay[4],az[4],lad[8],log[8],bt[4]; char ddata[44]; int dsize[4]; lad[0] = '0'; lad[1] = '0'; lad[2] = '0'; lad[3] = '0'; lad[4] = '0'; lad[5] = '0'; lad[6] = '0'; lad[7] = '0'; log[0] = '0'; log[1] = '0'; log[2] = '0'; log[3] = '0'; log[4] = '0'; log[5] = '0'; log[6] = '0'; log[7] = '0'; dsize[2] = 8; //pc.printf("test"); wait(5.0); while(1) { //pc.printf("test2"); gyro.sensing_u16(gx,gy,gz,&dsize[0]); accel.sensing_u16(ax,ay,az,&dsize[1]); //gps.sensing_u16(lad,log,&dsize[2]); battery.vol_u16(bt,&dsize[3]); //gyro.x_u16(gx,4); //pc.printf("ffff"); wait(0.001); pc_transmit(ddata,44,gx,gy,gz,ax,ay,az,lad,log,bt,dsize[0],dsize[0],dsize[0],dsize[1],dsize[1],dsize[1],dsize[2],dsize[2],dsize[3],9); //pc.printf("cccc"); } }else if(mode=='i'){ pc.printf("i:High speed sensing mode and caluclate to deg\r\n"); float gx_ang,gy_ang,gz_ang; float dt; float gx,gy,gz; //char gx[4],gy[4],gz[4],ax[4],ay[4],az[4],lad[8],log[8],bt[4]; char ddata[44]; int dsize[4]; /*lad[0] = '0'; lad[1] = '0'; lad[2] = '0'; lad[3] = '0'; lad[4] = '0'; lad[5] = '0'; lad[6] = '0'; lad[7] = '0'; log[0] = '0'; log[1] = '0'; log[2] = '0'; log[3] = '0'; log[4] = '0'; log[5] = '0'; log[6] = '0'; log[7] = '0'; dsize[2] = 8;*/ //pc.printf("test"); wait(5.0); dt = 0.001; while(1) { //pc.printf("test2"); gyro.sensing(&gx,&gy,&gz); //gyro.sensing_u16(gx,gy,gz,&dsize[0]); //accel.sensing_u16(ax,ay,az,&dsize[1]); //gps.sensing_u16(lad,log,&dsize[2]); //attery.vol_u16(bt,&dsize[3]); //gyro.x_u16(gx,4); //pc.printf("ffff"); //gyro data to deg gx_ang += (((gx+1.92556)))*dt; gy_ang += (((gy+0.41286)))*dt; gz_ang += (((gz-0.820308)))*dt; pc.printf("%2.5f %2.5f %2.5f\r\n",gx_ang,gy_ang,gz_ang); //pc.printf("%2.5f %2.5f %2.5f\r\n",gx+1.92556,gy+0.41286,gz-0.820308); wait(0.001); //pc_transmit(ddata,44,gx,gy,gz,ax,ay,az,lad,log,bt,dsize[0],dsize[0],dsize[0],dsize[1],dsize[1],dsize[1],dsize[2],dsize[2],dsize[3],9); //pc.printf("cccc"); } }else{ pc.printf("Under construction!!!\r\n"); } } }