mainまでいけました カメラのとこからコンパイルできません

Dependencies:   mbed CameraUS015sb612-3

Committer:
YUPPY
Date:
Fri Nov 08 16:16:43 2019 +0000
Revision:
2:e2b803e3bcbc
Parent:
1:edc264954800
Child:
3:5d0c4b13f4e8
main2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
YUPPY 0:6212b283430c 1 #define cansatB
YUPPY 2:e2b803e3bcbc 2 #include "mbed.h" //mbed
YUPPY 2:e2b803e3bcbc 3 #include "getGPS.h" //GPS
YUPPY 2:e2b803e3bcbc 4 #include "math.h" //GPS
YUPPY 2:e2b803e3bcbc 5 #include "XBee.h" //XBee
YUPPY 0:6212b283430c 6 #include <SoftwareSerial.h> //カメラ
YUPPY 0:6212b283430c 7 #include <SD.h>//SDカード
YUPPY 0:6212b283430c 8 #include <JPEGCamera.h>//カメラ
YUPPY 2:e2b803e3bcbc 9 #include "us015.h" // 超音波センサ
YUPPY 0:6212b283430c 10 #include <stdio.h>
YUPPY 2:e2b803e3bcbc 11 US015 hs(p12,p11); //P12 :超音波センサ トリガ出力 //p11 :超音波センサ エコー入力
YUPPY 2:e2b803e3bcbc 12 Serial pc(USBTX,USBRX); //GPs
YUPPY 2:e2b803e3bcbc 13 GPS gps (p28,p27); //GPS
YUPPY 0:6212b283430c 14 PwmOut motorSpeedR(p26); //モーター
YUPPY 0:6212b283430c 15 PwmOut motorSpeedL(p25); //モーター
YUPPY 0:6212b283430c 16 DigitalIn flight(p22,p23); //フライトピン
YUPPY 2:e2b803e3bcbc 17 DigitalOut FET(p21); //FET
YUPPY 0:6212b283430c 18 XBee xbee(p13, p14); // XBee
YUPPY 2:e2b803e3bcbc 19 DigitalIn thermo(p20); //焦電センサ↓
YUPPY 2:e2b803e3bcbc 20 DigitalOut led(LED1);
YUPPY 2:e2b803e3bcbc 21 Serial pc(USBTX, USBRX); // tx, rx 焦電センサ↑
YUPPY 0:6212b283430c 22 Serial pc (p9); //カメラ
YUPPY 0:6212b283430c 23 //Motor motor1(p22, p16, p17, 1); // pwm, fwd, rev, can brake モーター
YUPPY 0:6212b283430c 24 //Motor motor2(p22, p19, p20, 1); // pwm, fwd, rev, can brake
YUPPY 2:e2b803e3bcbc 25
YUPPY 2:e2b803e3bcbc 26 int main() { //FET
YUPPY 2:e2b803e3bcbc 27 FET = 0;
YUPPY 2:e2b803e3bcbc 28 SW = 1; //p21をhigh(3.3V)にする。
YUPPY 2:e2b803e3bcbc 29 while(1) {
YUPPY 2:e2b803e3bcbc 30 if(flight==1) {
YUPPY 2:e2b803e3bcbc 31 wait(10);
YUPPY 2:e2b803e3bcbc 32 }
YUPPY 2:e2b803e3bcbc 33
YUPPY 2:e2b803e3bcbc 34 else{
YUPPY 2:e2b803e3bcbc 35 if(flight==1) {
YUPPY 2:e2b803e3bcbc 36 wait(10);
YUPPY 2:e2b803e3bcbc 37 }
YUPPY 2:e2b803e3bcbc 38 else{
YUPPY 2:e2b803e3bcbc 39 FET = 0; //FET、ニクロム線切断
YUPPY 2:e2b803e3bcbc 40 wait(20);
YUPPY 2:e2b803e3bcbc 41 FET = 1;
YUPPY 2:e2b803e3bcbc 42 wait(12);
YUPPY 2:e2b803e3bcbc 43 FET = 0;
YUPPY 2:e2b803e3bcbc 44 wait(10);
YUPPY 2:e2b803e3bcbc 45 FET = 1;
YUPPY 2:e2b803e3bcbc 46 wait(12);
YUPPY 2:e2b803e3bcbc 47 FET = 0;
YUPPY 2:e2b803e3bcbc 48 SW = 0; //p21をlow(0V)にする。
YUPPY 2:e2b803e3bcbc 49 break;
YUPPY 2:e2b803e3bcbc 50 }
YUPPY 2:e2b803e3bcbc 51 }
YUPPY 2:e2b803e3bcbc 52 }
YUPPY 2:e2b803e3bcbc 53 }
YUPPY 2:e2b803e3bcbc 54
YUPPY 2:e2b803e3bcbc 55 int main() { //以下GPS
YUPPY 2:e2b803e3bcbc 56 double a;
YUPPY 2:e2b803e3bcbc 57 double b;
YUPPY 2:e2b803e3bcbc 58 double distance;
YUPPY 2:e2b803e3bcbc 59
YUPPY 2:e2b803e3bcbc 60 pc.printf("GPS Start\r\n");
YUPPY 2:e2b803e3bcbc 61
YUPPY 2:e2b803e3bcbc 62 while(1) {
YUPPY 2:e2b803e3bcbc 63 if(gps.getgps()){
YUPPY 2:e2b803e3bcbc 64 a = gps.latitude;
YUPPY 2:e2b803e3bcbc 65 b = gps.longitude;
YUPPY 2:e2b803e3bcbc 66
YUPPY 2:e2b803e3bcbc 67 pc.printf("(%lf,%lf)\r\n",gps.latitude,gps.longitude);//緯度と経度を表示
YUPPY 2:e2b803e3bcbc 68
YUPPY 2:e2b803e3bcbc 69 break;
YUPPY 2:e2b803e3bcbc 70
YUPPY 2:e2b803e3bcbc 71 }else{
YUPPY 2:e2b803e3bcbc 72 pc.printf("NO DATA\r\n");//データ取得失敗
YUPPY 2:e2b803e3bcbc 73 wait(1);
YUPPY 2:e2b803e3bcbc 74 }
YUPPY 2:e2b803e3bcbc 75 }
YUPPY 2:e2b803e3bcbc 76 while(1){
YUPPY 2:e2b803e3bcbc 77 if(gps.getgps()) {
YUPPY 2:e2b803e3bcbc 78
YUPPY 2:e2b803e3bcbc 79 pc.printf("(%lf,%lf)\n\r",gps.latitude,gps.longitude);//緯度と経度を表示
YUPPY 2:e2b803e3bcbc 80
YUPPY 2:e2b803e3bcbc 81 // 球面三角法により、大円距離(メートル)を求める
YUPPY 2:e2b803e3bcbc 82 double c;
YUPPY 2:e2b803e3bcbc 83 double d;
YUPPY 2:e2b803e3bcbc 84 c = gps.latitude;
YUPPY 2:e2b803e3bcbc 85 d = gps.longitude;
YUPPY 2:e2b803e3bcbc 86
YUPPY 2:e2b803e3bcbc 87 const double pi = 3.14159265359; // 円周率
YUPPY 2:e2b803e3bcbc 88
YUPPY 2:e2b803e3bcbc 89 double ra = a * pi / 180;
YUPPY 2:e2b803e3bcbc 90 double rb = b * pi / 180; // 緯度経度をラジアンに変換
YUPPY 2:e2b803e3bcbc 91 double rc = c * pi / 180;
YUPPY 2:e2b803e3bcbc 92 double rd = d * pi / 180;
YUPPY 2:e2b803e3bcbc 93
YUPPY 2:e2b803e3bcbc 94 double e = sin(ra) * sin(rc) + cos(ra) * cos(rc) * cos(rb - rd); // 2点の中心角(ラジアン)を求める
YUPPY 2:e2b803e3bcbc 95 double rr = acos(e);
YUPPY 2:e2b803e3bcbc 96
YUPPY 2:e2b803e3bcbc 97 const double earth_radius = 6378140; // 地球赤道半径(m)
YUPPY 2:e2b803e3bcbc 98
YUPPY 2:e2b803e3bcbc 99 distance = earth_radius * rr; // 2点間の距離(m)
YUPPY 2:e2b803e3bcbc 100
YUPPY 2:e2b803e3bcbc 101
YUPPY 2:e2b803e3bcbc 102
YUPPY 2:e2b803e3bcbc 103
YUPPY 2:e2b803e3bcbc 104 if (distance<5){
YUPPY 2:e2b803e3bcbc 105 printf("%lf\r\n",distance);
YUPPY 2:e2b803e3bcbc 106 }else{
YUPPY 2:e2b803e3bcbc 107 pc.printf("5m clear!");
YUPPY 2:e2b803e3bcbc 108 break;
YUPPY 2:e2b803e3bcbc 109 }
YUPPY 2:e2b803e3bcbc 110
YUPPY 2:e2b803e3bcbc 111 }else{
YUPPY 2:e2b803e3bcbc 112 pc.printf("NO DATA\r\n");//データ取得失敗
YUPPY 2:e2b803e3bcbc 113 wait(1);
YUPPY 2:e2b803e3bcbc 114 }
YUPPY 2:e2b803e3bcbc 115 }
YUPPY 2:e2b803e3bcbc 116 return 0; //注意!void()に変えること.このままだとここで終わる
YUPPY 2:e2b803e3bcbc 117 }
YUPPY 2:e2b803e3bcbc 118
YUPPY 2:e2b803e3bcbc 119
YUPPY 0:6212b283430c 120 void motorForwardR(void);
YUPPY 0:6212b283430c 121 void motorStopR(void);
YUPPY 0:6212b283430c 122 void motorReverseR(void);
YUPPY 0:6212b283430c 123 void motorForwardL(void);
YUPPY 0:6212b283430c 124 void motorStopL(void);
YUPPY 0:6212b283430c 125 void motorReverseL(void);
YUPPY 0:6212b283430c 126 LocalFileSystem local(“local”); // Create the local filesystem under the name “local”   データ保存
YUPPY 0:6212b283430c 127 float culculate_distance_3(float a,float b);
YUPPY 2:e2b803e3bcbc 128
YUPPY 0:6212b283430c 129 motorStopR();
YUPPY 0:6212b283430c 130 motorStopL();
YUPPY 0:6212b283430c 131 wait(20); //確認用//デフォ20秒
YUPPY 0:6212b283430c 132 // FILE *fp = fopen(“/local/gps.txt”, “w”); // Open “gps.txt” on the local file system for writing
YUPPY 0:6212b283430c 133 motorSpeedR.period_ms(4); //モーター調節
YUPPY 0:6212b283430c 134 motorSpeedR = 0.655;
YUPPY 0:6212b283430c 135 motorSpeedL.period_ms(4); //モーター調節
YUPPY 0:6212b283430c 136 motorSpeedL = 0.755;
YUPPY 0:6212b283430c 137 motorForwardL(); //車体を時計回りに3秒回転
YUPPY 0:6212b283430c 138 motorReverseR();
YUPPY 0:6212b283430c 139 wait(1.6);
YUPPY 0:6212b283430c 140 motorStopR();
YUPPY 0:6212b283430c 141 motorStopL();
YUPPY 0:6212b283430c 142 wait(1);
YUPPY 0:6212b283430c 143 motorReverseL(); //車体を反時計回りに3秒回転
YUPPY 0:6212b283430c 144 motorForwardR();
YUPPY 0:6212b283430c 145 wait(1.6);
YUPPY 0:6212b283430c 146 motorStopR();
YUPPY 0:6212b283430c 147 motorStopL();
YUPPY 0:6212b283430c 148 wait(1);
YUPPY 0:6212b283430c 149 printf(“compass carriblation\r\n”); //キャリブレーション終了
YUPPY 0:6212b283430c 150 //float mcn1,mcn2;
YUPPY 0:6212b283430c 151
YUPPY 2:e2b803e3bcbc 152 if(distance<2000){
YUPPY 1:edc264954800 153 motorStopR();
YUPPY 1:edc264954800 154 motorStopL();
YUPPY 1:edc264954800 155 stopUS015();
YUPPY 1:edc264954800 156 startsb612a();
YUPPY 0:6212b283430c 157 //超音波センサー反応あり
YUPPY 0:6212b283430c 158 //停止
YUPPY 0:6212b283430c 159 //超音波センサーOFF
YUPPY 0:6212b283430c 160 //焦電センサーON
YUPPY 2:e2b803e3bcbc 161 int main()
YUPPY 2:e2b803e3bcbc 162 {
YUPPY 2:e2b803e3bcbc 163 float th;
YUPPY 2:e2b803e3bcbc 164 Timer tm;
YUPPY 2:e2b803e3bcbc 165 pc.printf("start\r\n");
YUPPY 2:e2b803e3bcbc 166 led=0;
YUPPY 2:e2b803e3bcbc 167 bool detected=false;
YUPPY 2:e2b803e3bcbc 168 while(true)
YUPPY 2:e2b803e3bcbc 169 {
YUPPY 2:e2b803e3bcbc 170 th = thermo;
YUPPY 2:e2b803e3bcbc 171 if(th==1 && !detected) {
YUPPY 2:e2b803e3bcbc 172 led = 1;
YUPPY 2:e2b803e3bcbc 173 detected=true;
YUPPY 2:e2b803e3bcbc 174 pc.printf("human\r\n");
YUPPY 2:e2b803e3bcbc 175 tm.reset();
YUPPY 2:e2b803e3bcbc 176 tm.start();
YUPPY 2:e2b803e3bcbc 177 }
YUPPY 2:e2b803e3bcbc 178 if(tm.read_ms()>10000) {
YUPPY 2:e2b803e3bcbc 179 printf("Time out!\r\n");
YUPPY 2:e2b803e3bcbc 180 led = 0;
YUPPY 2:e2b803e3bcbc 181 detected=false;
YUPPY 2:e2b803e3bcbc 182 }
YUPPY 2:e2b803e3bcbc 183 }
YUPPY 2:e2b803e3bcbc 184 }
YUPPY 1:edc264954800 185 if(detected=true){
YUPPY 1:edc264954800 186 stopsb612a();
YUPPY 1:edc264954800 187 startCamera();
YUPPY 1:edc264954800 188 stopCamera();
YUPPY 1:edc264954800 189 sendSD();
YUPPY 1:edc264954800 190 sendPC();
YUPPY 1:edc264954800 191
YUPPY 0:6212b283430c 192 //焦電センサー反応あり
YUPPY 0:6212b283430c 193 //焦電センサーOFF
YUPPY 0:6212b283430c 194 //カメラ起動
YUPPY 0:6212b283430c 195 //カメラOFF
YUPPY 0:6212b283430c 196 //データをSDカードに保存
YUPPY 0:6212b283430c 197 //保存データをXBeeによりPCへ送信
YUPPY 1:edc264954800 198 if(receiveOK()=true){
YUPPY 1:edc264954800 199 printf("Unknown Creature has been descovered!\n");
YUPPY 1:edc264954800 200 }
YUPPY 0:6212b283430c 201 //"OK"受信、ミッション終了
YUPPY 1:edc264954800 202 else if(receiveOK()=false){
YUPPY 1:edc264954800 203 printf("Continue!\n");
YUPPY 1:edc264954800 204 }
YUPPY 0:6212b283430c 205 //"NO"受信、ミッション再開
YUPPY 0:6212b283430c 206
YUPPY 1:edc264954800 207 else if(detected=false){
YUPPY 1:edc264954800 208 stopsb612a();
YUPPY 1:edc264954800 209 motorForwardL();
YUPPY 1:edc264954800 210 motorStopL();
YUPPY 1:edc264954800 211 motorForwardR();
YUPPY 1:edc264954800 212 motorForwardL();
YUPPY 1:edc264954800 213 startUS015();
YUPPY 1:edc264954800 214 }
YUPPY 1:edc264954800 215 }
YUPPY 0:6212b283430c 216 //焦電センサー反応無し
YUPPY 0:6212b283430c 217 //焦電センサーOFF
YUPPY 0:6212b283430c 218 //方向転換
YUPPY 0:6212b283430c 219 //超音波センサーON
YUPPY 0:6212b283430c 220 //直進
YUPPY 1:edc264954800 221 }
YUPPY 2:e2b803e3bcbc 222 else if(distance>=2000){
YUPPY 1:edc264954800 223 motorStopL();
YUPPY 1:edc264954800 224 motorStopR();
YUPPY 1:edc264954800 225 motorForwardL();
YUPPY 1:edc264954800 226 motorStopL();
YUPPY 1:edc264954800 227 motorForwardR();
YUPPY 1:edc264954800 228 motorForwardL();
YUPPY 1:edc264954800 229 }
YUPPY 0:6212b283430c 230 //超音波センサー反応無し
YUPPY 0:6212b283430c 231 //停止
YUPPY 0:6212b283430c 232 //方向転換
YUPPY 0:6212b283430c 233 //直進