otamesi
Dependencies: mbed
main.cpp
- Committer:
- seangshim
- Date:
- 2018-10-10
- Revision:
- 0:a01fda36fde8
- Child:
- 1:10af8aaa5b40
File content as of revision 0:a01fda36fde8:
#include "mbed.h" #include "gps.h" #include "ultrasonic.h" #include "motordriver.h" Serial pc(USBTX, USBRX); GPS gps(p28, p27); Motor motor1(p22, p16, p17, 1); // pwm, fwd, rev, can brake Motor motor2(p22, p19, p20, 1); // pwm, fwd, rev, can brake void dist(int distance) { //put code here to happen when the distance is changed printf("Distance changed to %dmm\r\n", distance); } ultrasonic mu(p11, p12, .1, 1, &dist); //Set the trigger pin to D8 and the echo pin to D9 //have updates every .1 seconds and a timeout after 1 //second, and call dist when the distance changes LocalFileSystem local("local"); // Create the local filesystem under the name "local" int main() { /*FILE *fp = fopen("/local/gps.txt", "w"); // Open "out.txt" on the local file system for writing fprintf(fp, "GPS Start\r\n"); int n; for(n=0;n<45;n++) //GPSの取得を45回行う { if(gps.getgps()) //現在地取得 fprintf(fp,"(%lf, %lf)\r\n", gps.latitude, gps.longitude);//緯度と経度を出力 else fprintf(fp,"No data\r\n");//データ取得に失敗した場合 wait(1); } fprintf(fp,"GPS finish\r\n"); fclose(fp);*/ motor1.stop(0); motor2.stop(0); FILE *fp = fopen("/local/gps.txt", "w"); // Open "gps.txt" on the local file system for writing fprintf(fp, "\r\n\GPS Start\r\n"); int n; for(n=0;n<45;n++) //GPSの取得を45回行う { printf("%d\n",n); if(gps.getgps()) //現在地取得 fprintf(fp,"(%lf, %lf)\r\n", gps.latitude, gps.longitude);//緯度と経度を出力 else fprintf(fp,"No data\r\n");//データ取得に失敗した場合 wait(1); } fprintf(fp,"GPS finish\r\n"); fclose(fp); //GPSの測定終了 mu.startUpdates();//start mesuring the distance(超音波センサー) int distance; while(1) { motor1.speed(0.5); //通常走行 motor2.speed(0.5); //Do something else here // mu.checkDistance(); //call checkDistance() as much as possible, as this is where //the class checks if dist needs to be called. distance=mu.getCurrentDistance(); printf("%d\r\n",distance); if(100<distance && distance < 500) { printf("if success!\r\n"); float ms1,ms2,msj1,msj2; ms1=0.5; //直進の時モーターをどれだけ回せばいいかわからないのでとりあえず0.5にしておく ms2=0.5; msj1=0.5; //回転の時 msj2=0.5; motor1.stop(0); motor2.stop(0); wait(1); printf("mortor stop\r\n"); motor1.speed(msj1); //機体を時計回りに90度回転 motor2.speed(-msj2); wait(1); printf("mortor rotation\r\n"); motor1.speed(ms1); //直進 motor2.speed(ms2); wait(1); printf("mortor straight\r\n"); motor1.speed(-msj1); //機体を反時計回りに90度回転 motor2.speed(msj2); wait(1); printf("mortor rotation\r\n"); motor1.speed(ms1); //直進 motor2.speed(ms2); wait(1); printf("mortor straight\r\n"); motor1.speed(-msj1); //機体を反時計回りに90度回転 motor2.speed(msj2); wait(1); printf("mortor rotation\r\n"); motor1.speed(ms1); //直進 motor2.speed(ms2); wait(1); printf("mortor straight\r\n"); motor1.speed(msj1); //機体を時計回りに90度回転 motor2.speed(-msj2); wait(1); printf("mortor rotation\r\n"); } } }