mainまでいけました カメラのとこからコンパイルできません
Dependencies: mbed CameraUS015sb612-3
main.cpp@3:5d0c4b13f4e8, 2019-11-08 (annotated)
- Committer:
- YUPPY
- Date:
- Fri Nov 08 19:48:16 2019 +0000
- Revision:
- 3:5d0c4b13f4e8
- Parent:
- 2:e2b803e3bcbc
- Child:
- 4:1354e56c7dd3
main
Who changed what in which revision?
User | Revision | Line number | New 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 | 3:5d0c4b13f4e8 | 5 | #include "TB6612.h" //motorDriver |
YUPPY | 2:e2b803e3bcbc | 6 | #include "XBee.h" //XBee |
YUPPY | 0:6212b283430c | 7 | #include <SoftwareSerial.h> //カメラ |
YUPPY | 0:6212b283430c | 8 | #include <SD.h>//SDカード |
YUPPY | 0:6212b283430c | 9 | #include <JPEGCamera.h>//カメラ |
YUPPY | 2:e2b803e3bcbc | 10 | #include "us015.h" // 超音波センサ |
YUPPY | 0:6212b283430c | 11 | #include <stdio.h> |
YUPPY | 2:e2b803e3bcbc | 12 | US015 hs(p12,p11); //P12 :超音波センサ トリガ出力 //p11 :超音波センサ エコー入力 |
YUPPY | 2:e2b803e3bcbc | 13 | Serial pc(USBTX,USBRX); //GPs |
YUPPY | 2:e2b803e3bcbc | 14 | GPS gps (p28,p27); //GPS |
YUPPY | 0:6212b283430c | 15 | PwmOut motorSpeedR(p26); //モーター |
YUPPY | 0:6212b283430c | 16 | PwmOut motorSpeedL(p25); //モーター |
YUPPY | 0:6212b283430c | 17 | DigitalIn flight(p22,p23); //フライトピン |
YUPPY | 2:e2b803e3bcbc | 18 | DigitalOut FET(p21); //FET |
YUPPY | 0:6212b283430c | 19 | XBee xbee(p13, p14); // XBee |
YUPPY | 2:e2b803e3bcbc | 20 | DigitalIn thermo(p20); //焦電センサ↓ |
YUPPY | 2:e2b803e3bcbc | 21 | DigitalOut led(LED1); |
YUPPY | 2:e2b803e3bcbc | 22 | Serial pc(USBTX, USBRX); // tx, rx 焦電センサ↑ |
YUPPY | 0:6212b283430c | 23 | Serial pc (p9); //カメラ |
YUPPY | 3:5d0c4b13f4e8 | 24 | TB6612 left(p25,p17,p16); |
YUPPY | 3:5d0c4b13f4e8 | 25 | TB6612 right(p26,p19,p18); |
YUPPY | 2:e2b803e3bcbc | 26 | |
YUPPY | 2:e2b803e3bcbc | 27 | int main() { //FET |
YUPPY | 2:e2b803e3bcbc | 28 | FET = 0; |
YUPPY | 2:e2b803e3bcbc | 29 | SW = 1; //p21をhigh(3.3V)にする。 |
YUPPY | 2:e2b803e3bcbc | 30 | while(1) { |
YUPPY | 2:e2b803e3bcbc | 31 | if(flight==1) { |
YUPPY | 2:e2b803e3bcbc | 32 | wait(10); |
YUPPY | 2:e2b803e3bcbc | 33 | } |
YUPPY | 2:e2b803e3bcbc | 34 | |
YUPPY | 2:e2b803e3bcbc | 35 | else{ |
YUPPY | 2:e2b803e3bcbc | 36 | if(flight==1) { |
YUPPY | 2:e2b803e3bcbc | 37 | wait(10); |
YUPPY | 2:e2b803e3bcbc | 38 | } |
YUPPY | 2:e2b803e3bcbc | 39 | else{ |
YUPPY | 2:e2b803e3bcbc | 40 | FET = 0; //FET、ニクロム線切断 |
YUPPY | 2:e2b803e3bcbc | 41 | wait(20); |
YUPPY | 2:e2b803e3bcbc | 42 | FET = 1; |
YUPPY | 2:e2b803e3bcbc | 43 | wait(12); |
YUPPY | 2:e2b803e3bcbc | 44 | FET = 0; |
YUPPY | 2:e2b803e3bcbc | 45 | wait(10); |
YUPPY | 2:e2b803e3bcbc | 46 | FET = 1; |
YUPPY | 2:e2b803e3bcbc | 47 | wait(12); |
YUPPY | 2:e2b803e3bcbc | 48 | FET = 0; |
YUPPY | 2:e2b803e3bcbc | 49 | SW = 0; //p21をlow(0V)にする。 |
YUPPY | 2:e2b803e3bcbc | 50 | break; |
YUPPY | 2:e2b803e3bcbc | 51 | } |
YUPPY | 2:e2b803e3bcbc | 52 | } |
YUPPY | 2:e2b803e3bcbc | 53 | } |
YUPPY | 2:e2b803e3bcbc | 54 | } |
YUPPY | 2:e2b803e3bcbc | 55 | |
YUPPY | 2:e2b803e3bcbc | 56 | int main() { //以下GPS |
YUPPY | 2:e2b803e3bcbc | 57 | double a; |
YUPPY | 2:e2b803e3bcbc | 58 | double b; |
YUPPY | 2:e2b803e3bcbc | 59 | double distance; |
YUPPY | 2:e2b803e3bcbc | 60 | |
YUPPY | 2:e2b803e3bcbc | 61 | pc.printf("GPS Start\r\n"); |
YUPPY | 2:e2b803e3bcbc | 62 | |
YUPPY | 2:e2b803e3bcbc | 63 | while(1) { |
YUPPY | 2:e2b803e3bcbc | 64 | if(gps.getgps()){ |
YUPPY | 2:e2b803e3bcbc | 65 | a = gps.latitude; |
YUPPY | 2:e2b803e3bcbc | 66 | b = gps.longitude; |
YUPPY | 2:e2b803e3bcbc | 67 | |
YUPPY | 2:e2b803e3bcbc | 68 | pc.printf("(%lf,%lf)\r\n",gps.latitude,gps.longitude);//緯度と経度を表示 |
YUPPY | 2:e2b803e3bcbc | 69 | |
YUPPY | 2:e2b803e3bcbc | 70 | break; |
YUPPY | 2:e2b803e3bcbc | 71 | |
YUPPY | 2:e2b803e3bcbc | 72 | }else{ |
YUPPY | 2:e2b803e3bcbc | 73 | pc.printf("NO DATA\r\n");//データ取得失敗 |
YUPPY | 2:e2b803e3bcbc | 74 | wait(1); |
YUPPY | 2:e2b803e3bcbc | 75 | } |
YUPPY | 2:e2b803e3bcbc | 76 | } |
YUPPY | 2:e2b803e3bcbc | 77 | while(1){ |
YUPPY | 2:e2b803e3bcbc | 78 | if(gps.getgps()) { |
YUPPY | 2:e2b803e3bcbc | 79 | |
YUPPY | 2:e2b803e3bcbc | 80 | pc.printf("(%lf,%lf)\n\r",gps.latitude,gps.longitude);//緯度と経度を表示 |
YUPPY | 2:e2b803e3bcbc | 81 | |
YUPPY | 2:e2b803e3bcbc | 82 | // 球面三角法により、大円距離(メートル)を求める |
YUPPY | 2:e2b803e3bcbc | 83 | double c; |
YUPPY | 2:e2b803e3bcbc | 84 | double d; |
YUPPY | 2:e2b803e3bcbc | 85 | c = gps.latitude; |
YUPPY | 2:e2b803e3bcbc | 86 | d = gps.longitude; |
YUPPY | 2:e2b803e3bcbc | 87 | |
YUPPY | 2:e2b803e3bcbc | 88 | const double pi = 3.14159265359; // 円周率 |
YUPPY | 2:e2b803e3bcbc | 89 | |
YUPPY | 2:e2b803e3bcbc | 90 | double ra = a * pi / 180; |
YUPPY | 2:e2b803e3bcbc | 91 | double rb = b * pi / 180; // 緯度経度をラジアンに変換 |
YUPPY | 2:e2b803e3bcbc | 92 | double rc = c * pi / 180; |
YUPPY | 2:e2b803e3bcbc | 93 | double rd = d * pi / 180; |
YUPPY | 2:e2b803e3bcbc | 94 | |
YUPPY | 2:e2b803e3bcbc | 95 | double e = sin(ra) * sin(rc) + cos(ra) * cos(rc) * cos(rb - rd); // 2点の中心角(ラジアン)を求める |
YUPPY | 2:e2b803e3bcbc | 96 | double rr = acos(e); |
YUPPY | 2:e2b803e3bcbc | 97 | |
YUPPY | 2:e2b803e3bcbc | 98 | const double earth_radius = 6378140; // 地球赤道半径(m) |
YUPPY | 2:e2b803e3bcbc | 99 | |
YUPPY | 2:e2b803e3bcbc | 100 | distance = earth_radius * rr; // 2点間の距離(m) |
YUPPY | 2:e2b803e3bcbc | 101 | |
YUPPY | 2:e2b803e3bcbc | 102 | |
YUPPY | 2:e2b803e3bcbc | 103 | |
YUPPY | 2:e2b803e3bcbc | 104 | |
YUPPY | 2:e2b803e3bcbc | 105 | if (distance<5){ |
YUPPY | 2:e2b803e3bcbc | 106 | printf("%lf\r\n",distance); |
YUPPY | 2:e2b803e3bcbc | 107 | }else{ |
YUPPY | 2:e2b803e3bcbc | 108 | pc.printf("5m clear!"); |
YUPPY | 2:e2b803e3bcbc | 109 | break; |
YUPPY | 2:e2b803e3bcbc | 110 | } |
YUPPY | 2:e2b803e3bcbc | 111 | |
YUPPY | 2:e2b803e3bcbc | 112 | }else{ |
YUPPY | 2:e2b803e3bcbc | 113 | pc.printf("NO DATA\r\n");//データ取得失敗 |
YUPPY | 2:e2b803e3bcbc | 114 | wait(1); |
YUPPY | 2:e2b803e3bcbc | 115 | } |
YUPPY | 2:e2b803e3bcbc | 116 | } |
YUPPY | 2:e2b803e3bcbc | 117 | return 0; //注意!void()に変えること.このままだとここで終わる |
YUPPY | 2:e2b803e3bcbc | 118 | } |
YUPPY | 2:e2b803e3bcbc | 119 | |
YUPPY | 3:5d0c4b13f4e8 | 120 | int main() { |
YUPPY | 3:5d0c4b13f4e8 | 121 | while(1) { |
YUPPY | 3:5d0c4b13f4e8 | 122 | left = 100; //左モーター100% |
YUPPY | 3:5d0c4b13f4e8 | 123 | right = 100;//右モーター100% |
YUPPY | 3:5d0c4b13f4e8 | 124 | wait(1.0); |
YUPPY | 3:5d0c4b13f4e8 | 125 | left = 30;//左30% |
YUPPY | 3:5d0c4b13f4e8 | 126 | right = 30;//右30% |
YUPPY | 3:5d0c4b13f4e8 | 127 | wait(1.0); |
YUPPY | 3:5d0c4b13f4e8 | 128 | printf("OK"); |
YUPPY | 3:5d0c4b13f4e8 | 129 | } |
YUPPY | 3:5d0c4b13f4e8 | 130 | } |
YUPPY | 0:6212b283430c | 131 | |
YUPPY | 2:e2b803e3bcbc | 132 | if(distance<2000){ |
YUPPY | 1:edc264954800 | 133 | motorStopR(); |
YUPPY | 1:edc264954800 | 134 | motorStopL(); |
YUPPY | 1:edc264954800 | 135 | stopUS015(); |
YUPPY | 1:edc264954800 | 136 | startsb612a(); |
YUPPY | 0:6212b283430c | 137 | //超音波センサー反応あり |
YUPPY | 0:6212b283430c | 138 | //停止 |
YUPPY | 0:6212b283430c | 139 | //超音波センサーOFF |
YUPPY | 0:6212b283430c | 140 | //焦電センサーON |
YUPPY | 2:e2b803e3bcbc | 141 | int main() |
YUPPY | 2:e2b803e3bcbc | 142 | { |
YUPPY | 2:e2b803e3bcbc | 143 | float th; |
YUPPY | 2:e2b803e3bcbc | 144 | Timer tm; |
YUPPY | 2:e2b803e3bcbc | 145 | pc.printf("start\r\n"); |
YUPPY | 2:e2b803e3bcbc | 146 | led=0; |
YUPPY | 2:e2b803e3bcbc | 147 | bool detected=false; |
YUPPY | 2:e2b803e3bcbc | 148 | while(true) |
YUPPY | 2:e2b803e3bcbc | 149 | { |
YUPPY | 2:e2b803e3bcbc | 150 | th = thermo; |
YUPPY | 2:e2b803e3bcbc | 151 | if(th==1 && !detected) { |
YUPPY | 2:e2b803e3bcbc | 152 | led = 1; |
YUPPY | 2:e2b803e3bcbc | 153 | detected=true; |
YUPPY | 2:e2b803e3bcbc | 154 | pc.printf("human\r\n"); |
YUPPY | 2:e2b803e3bcbc | 155 | tm.reset(); |
YUPPY | 2:e2b803e3bcbc | 156 | tm.start(); |
YUPPY | 2:e2b803e3bcbc | 157 | } |
YUPPY | 2:e2b803e3bcbc | 158 | if(tm.read_ms()>10000) { |
YUPPY | 2:e2b803e3bcbc | 159 | printf("Time out!\r\n"); |
YUPPY | 2:e2b803e3bcbc | 160 | led = 0; |
YUPPY | 2:e2b803e3bcbc | 161 | detected=false; |
YUPPY | 2:e2b803e3bcbc | 162 | } |
YUPPY | 2:e2b803e3bcbc | 163 | } |
YUPPY | 2:e2b803e3bcbc | 164 | } |
YUPPY | 1:edc264954800 | 165 | if(detected=true){ |
YUPPY | 1:edc264954800 | 166 | stopsb612a(); |
YUPPY | 1:edc264954800 | 167 | startCamera(); |
YUPPY | 1:edc264954800 | 168 | stopCamera(); |
YUPPY | 1:edc264954800 | 169 | sendSD(); |
YUPPY | 1:edc264954800 | 170 | sendPC(); |
YUPPY | 1:edc264954800 | 171 | |
YUPPY | 0:6212b283430c | 172 | //焦電センサー反応あり |
YUPPY | 0:6212b283430c | 173 | //焦電センサーOFF |
YUPPY | 0:6212b283430c | 174 | //カメラ起動 |
YUPPY | 0:6212b283430c | 175 | //カメラOFF |
YUPPY | 0:6212b283430c | 176 | //データをSDカードに保存 |
YUPPY | 0:6212b283430c | 177 | //保存データをXBeeによりPCへ送信 |
YUPPY | 1:edc264954800 | 178 | if(receiveOK()=true){ |
YUPPY | 1:edc264954800 | 179 | printf("Unknown Creature has been descovered!\n"); |
YUPPY | 1:edc264954800 | 180 | } |
YUPPY | 0:6212b283430c | 181 | //"OK"受信、ミッション終了 |
YUPPY | 1:edc264954800 | 182 | else if(receiveOK()=false){ |
YUPPY | 1:edc264954800 | 183 | printf("Continue!\n"); |
YUPPY | 1:edc264954800 | 184 | } |
YUPPY | 0:6212b283430c | 185 | //"NO"受信、ミッション再開 |
YUPPY | 0:6212b283430c | 186 | |
YUPPY | 1:edc264954800 | 187 | else if(detected=false){ |
YUPPY | 1:edc264954800 | 188 | stopsb612a(); |
YUPPY | 1:edc264954800 | 189 | motorForwardL(); |
YUPPY | 1:edc264954800 | 190 | motorStopL(); |
YUPPY | 1:edc264954800 | 191 | motorForwardR(); |
YUPPY | 1:edc264954800 | 192 | motorForwardL(); |
YUPPY | 1:edc264954800 | 193 | startUS015(); |
YUPPY | 1:edc264954800 | 194 | } |
YUPPY | 1:edc264954800 | 195 | } |
YUPPY | 0:6212b283430c | 196 | //焦電センサー反応無し |
YUPPY | 0:6212b283430c | 197 | //焦電センサーOFF |
YUPPY | 0:6212b283430c | 198 | //方向転換 |
YUPPY | 0:6212b283430c | 199 | //超音波センサーON |
YUPPY | 0:6212b283430c | 200 | //直進 |
YUPPY | 1:edc264954800 | 201 | } |
YUPPY | 2:e2b803e3bcbc | 202 | else if(distance>=2000){ |
YUPPY | 1:edc264954800 | 203 | motorStopL(); |
YUPPY | 1:edc264954800 | 204 | motorStopR(); |
YUPPY | 1:edc264954800 | 205 | motorForwardL(); |
YUPPY | 1:edc264954800 | 206 | motorStopL(); |
YUPPY | 1:edc264954800 | 207 | motorForwardR(); |
YUPPY | 1:edc264954800 | 208 | motorForwardL(); |
YUPPY | 1:edc264954800 | 209 | } |
YUPPY | 0:6212b283430c | 210 | //超音波センサー反応無し |
YUPPY | 0:6212b283430c | 211 | //停止 |
YUPPY | 0:6212b283430c | 212 | //方向転換 |
YUPPY | 0:6212b283430c | 213 | //直進 |