(多分)全部+フライトピン+新しい加速度

Dependencies:   mbed

Committer:
seangshim
Date:
Wed Oct 10 14:10:51 2018 +0000
Revision:
0:a01fda36fde8
Child:
1:10af8aaa5b40
GPS??????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
seangshim 0:a01fda36fde8 1 #include "mbed.h"
seangshim 0:a01fda36fde8 2 #include "gps.h"
seangshim 0:a01fda36fde8 3 #include "ultrasonic.h"
seangshim 0:a01fda36fde8 4 #include "motordriver.h"
seangshim 0:a01fda36fde8 5
seangshim 0:a01fda36fde8 6 Serial pc(USBTX, USBRX);
seangshim 0:a01fda36fde8 7 GPS gps(p28, p27);
seangshim 0:a01fda36fde8 8
seangshim 0:a01fda36fde8 9 Motor motor1(p22, p16, p17, 1); // pwm, fwd, rev, can brake
seangshim 0:a01fda36fde8 10 Motor motor2(p22, p19, p20, 1); // pwm, fwd, rev, can brake
seangshim 0:a01fda36fde8 11
seangshim 0:a01fda36fde8 12 void dist(int distance)
seangshim 0:a01fda36fde8 13 {
seangshim 0:a01fda36fde8 14 //put code here to happen when the distance is changed
seangshim 0:a01fda36fde8 15 printf("Distance changed to %dmm\r\n", distance);
seangshim 0:a01fda36fde8 16 }
seangshim 0:a01fda36fde8 17
seangshim 0:a01fda36fde8 18 ultrasonic mu(p11, p12, .1, 1, &dist); //Set the trigger pin to D8 and the echo pin to D9
seangshim 0:a01fda36fde8 19 //have updates every .1 seconds and a timeout after 1
seangshim 0:a01fda36fde8 20 //second, and call dist when the distance changes
seangshim 0:a01fda36fde8 21
seangshim 0:a01fda36fde8 22
seangshim 0:a01fda36fde8 23
seangshim 0:a01fda36fde8 24 LocalFileSystem local("local"); // Create the local filesystem under the name "local"
seangshim 0:a01fda36fde8 25
seangshim 0:a01fda36fde8 26 int main() {
seangshim 0:a01fda36fde8 27
seangshim 0:a01fda36fde8 28 /*FILE *fp = fopen("/local/gps.txt", "w"); // Open "out.txt" on the local file system for writing
seangshim 0:a01fda36fde8 29 fprintf(fp, "GPS Start\r\n");
seangshim 0:a01fda36fde8 30 int n;
seangshim 0:a01fda36fde8 31 for(n=0;n<45;n++) //GPSの取得を45回行う
seangshim 0:a01fda36fde8 32 {
seangshim 0:a01fda36fde8 33 if(gps.getgps()) //現在地取得
seangshim 0:a01fda36fde8 34 fprintf(fp,"(%lf, %lf)\r\n", gps.latitude, gps.longitude);//緯度と経度を出力
seangshim 0:a01fda36fde8 35
seangshim 0:a01fda36fde8 36 else
seangshim 0:a01fda36fde8 37 fprintf(fp,"No data\r\n");//データ取得に失敗した場合
seangshim 0:a01fda36fde8 38
seangshim 0:a01fda36fde8 39 wait(1);
seangshim 0:a01fda36fde8 40 }
seangshim 0:a01fda36fde8 41 fprintf(fp,"GPS finish\r\n");
seangshim 0:a01fda36fde8 42 fclose(fp);*/
seangshim 0:a01fda36fde8 43
seangshim 0:a01fda36fde8 44
seangshim 0:a01fda36fde8 45 motor1.stop(0);
seangshim 0:a01fda36fde8 46 motor2.stop(0);
seangshim 0:a01fda36fde8 47
seangshim 0:a01fda36fde8 48
seangshim 0:a01fda36fde8 49 FILE *fp = fopen("/local/gps.txt", "w"); // Open "gps.txt" on the local file system for writing
seangshim 0:a01fda36fde8 50 fprintf(fp, "\r\n\GPS Start\r\n");
seangshim 0:a01fda36fde8 51 int n;
seangshim 0:a01fda36fde8 52 for(n=0;n<45;n++) //GPSの取得を45回行う
seangshim 0:a01fda36fde8 53 {
seangshim 0:a01fda36fde8 54 printf("%d\n",n);
seangshim 0:a01fda36fde8 55
seangshim 0:a01fda36fde8 56 if(gps.getgps()) //現在地取得
seangshim 0:a01fda36fde8 57 fprintf(fp,"(%lf, %lf)\r\n", gps.latitude, gps.longitude);//緯度と経度を出力
seangshim 0:a01fda36fde8 58
seangshim 0:a01fda36fde8 59 else
seangshim 0:a01fda36fde8 60 fprintf(fp,"No data\r\n");//データ取得に失敗した場合
seangshim 0:a01fda36fde8 61
seangshim 0:a01fda36fde8 62 wait(1);
seangshim 0:a01fda36fde8 63 }
seangshim 0:a01fda36fde8 64 fprintf(fp,"GPS finish\r\n");
seangshim 0:a01fda36fde8 65 fclose(fp); //GPSの測定終了
seangshim 0:a01fda36fde8 66
seangshim 0:a01fda36fde8 67 mu.startUpdates();//start mesuring the distance(超音波センサー)
seangshim 0:a01fda36fde8 68 int distance;
seangshim 0:a01fda36fde8 69
seangshim 0:a01fda36fde8 70 while(1)
seangshim 0:a01fda36fde8 71 {
seangshim 0:a01fda36fde8 72
seangshim 0:a01fda36fde8 73 motor1.speed(0.5); //通常走行
seangshim 0:a01fda36fde8 74 motor2.speed(0.5);
seangshim 0:a01fda36fde8 75 //Do something else here
seangshim 0:a01fda36fde8 76 // mu.checkDistance(); //call checkDistance() as much as possible, as this is where
seangshim 0:a01fda36fde8 77 //the class checks if dist needs to be called.
seangshim 0:a01fda36fde8 78
seangshim 0:a01fda36fde8 79 distance=mu.getCurrentDistance();
seangshim 0:a01fda36fde8 80
seangshim 0:a01fda36fde8 81
seangshim 0:a01fda36fde8 82 printf("%d\r\n",distance);
seangshim 0:a01fda36fde8 83
seangshim 0:a01fda36fde8 84 if(100<distance && distance < 500)
seangshim 0:a01fda36fde8 85 {
seangshim 0:a01fda36fde8 86
seangshim 0:a01fda36fde8 87 printf("if success!\r\n");
seangshim 0:a01fda36fde8 88
seangshim 0:a01fda36fde8 89 float ms1,ms2,msj1,msj2;
seangshim 0:a01fda36fde8 90 ms1=0.5; //直進の時モーターをどれだけ回せばいいかわからないのでとりあえず0.5にしておく
seangshim 0:a01fda36fde8 91 ms2=0.5;
seangshim 0:a01fda36fde8 92
seangshim 0:a01fda36fde8 93 msj1=0.5; //回転の時
seangshim 0:a01fda36fde8 94 msj2=0.5;
seangshim 0:a01fda36fde8 95
seangshim 0:a01fda36fde8 96 motor1.stop(0);
seangshim 0:a01fda36fde8 97 motor2.stop(0);
seangshim 0:a01fda36fde8 98 wait(1);
seangshim 0:a01fda36fde8 99 printf("mortor stop\r\n");
seangshim 0:a01fda36fde8 100
seangshim 0:a01fda36fde8 101 motor1.speed(msj1); //機体を時計回りに90度回転
seangshim 0:a01fda36fde8 102 motor2.speed(-msj2);
seangshim 0:a01fda36fde8 103 wait(1);
seangshim 0:a01fda36fde8 104 printf("mortor rotation\r\n");
seangshim 0:a01fda36fde8 105
seangshim 0:a01fda36fde8 106 motor1.speed(ms1); //直進
seangshim 0:a01fda36fde8 107 motor2.speed(ms2);
seangshim 0:a01fda36fde8 108 wait(1);
seangshim 0:a01fda36fde8 109 printf("mortor straight\r\n");
seangshim 0:a01fda36fde8 110
seangshim 0:a01fda36fde8 111 motor1.speed(-msj1); //機体を反時計回りに90度回転
seangshim 0:a01fda36fde8 112 motor2.speed(msj2);
seangshim 0:a01fda36fde8 113 wait(1);
seangshim 0:a01fda36fde8 114 printf("mortor rotation\r\n");
seangshim 0:a01fda36fde8 115
seangshim 0:a01fda36fde8 116 motor1.speed(ms1); //直進
seangshim 0:a01fda36fde8 117 motor2.speed(ms2);
seangshim 0:a01fda36fde8 118 wait(1);
seangshim 0:a01fda36fde8 119 printf("mortor straight\r\n");
seangshim 0:a01fda36fde8 120
seangshim 0:a01fda36fde8 121 motor1.speed(-msj1); //機体を反時計回りに90度回転
seangshim 0:a01fda36fde8 122 motor2.speed(msj2);
seangshim 0:a01fda36fde8 123 wait(1);
seangshim 0:a01fda36fde8 124 printf("mortor rotation\r\n");
seangshim 0:a01fda36fde8 125
seangshim 0:a01fda36fde8 126 motor1.speed(ms1); //直進
seangshim 0:a01fda36fde8 127 motor2.speed(ms2);
seangshim 0:a01fda36fde8 128 wait(1);
seangshim 0:a01fda36fde8 129 printf("mortor straight\r\n");
seangshim 0:a01fda36fde8 130
seangshim 0:a01fda36fde8 131 motor1.speed(msj1); //機体を時計回りに90度回転
seangshim 0:a01fda36fde8 132 motor2.speed(-msj2);
seangshim 0:a01fda36fde8 133 wait(1);
seangshim 0:a01fda36fde8 134 printf("mortor rotation\r\n");
seangshim 0:a01fda36fde8 135 }
seangshim 0:a01fda36fde8 136 }
seangshim 0:a01fda36fde8 137 }