f303k8(メイン)用のプログラム。 コメントに書いているのは議論点
Dependencies: mbed
main.cpp@0:9669502e17f0, 2021-08-15 (annotated)
- Committer:
- MatsumotoKouki
- Date:
- Sun Aug 15 14:07:43 2021 +0000
- Revision:
- 0:9669502e17f0
- Child:
- 1:b12e35a43ee1
for f303k8(main computer)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MatsumotoKouki | 0:9669502e17f0 | 1 | #include "mbed.h" |
MatsumotoKouki | 0:9669502e17f0 | 2 | |
MatsumotoKouki | 0:9669502e17f0 | 3 | //コマンド取得とモード変換は関数にいれたほうがわかりやすい |
MatsumotoKouki | 0:9669502e17f0 | 4 | void nichrome_ON(); |
MatsumotoKouki | 0:9669502e17f0 | 5 | void buzzerON(); |
MatsumotoKouki | 0:9669502e17f0 | 6 | void getCommand(); |
MatsumotoKouki | 0:9669502e17f0 | 7 | |
MatsumotoKouki | 0:9669502e17f0 | 8 | Serial pc(USBTX, USBRX,38400);//ボーレートを落とすと,USB側からのデータが正確に出力されない.//pcと直接通信してないのに定義する必要ある? |
MatsumotoKouki | 0:9669502e17f0 | 9 | Serial im920(PA_9,PA_10,19200);//TX(IM920_RX), RX(IM920_TX) |
MatsumotoKouki | 0:9669502e17f0 | 10 | DigitalOut mcu_1(PA_7); |
MatsumotoKouki | 0:9669502e17f0 | 11 | DigitalOut mcu_2(PA_6); |
MatsumotoKouki | 0:9669502e17f0 | 12 | DigitalOut cameraPow(PF_0); |
MatsumotoKouki | 0:9669502e17f0 | 13 | DigitalOut cameraRec(PF_1); |
MatsumotoKouki | 0:9669502e17f0 | 14 | DigitalOut nichrome(PA_8); |
MatsumotoKouki | 0:9669502e17f0 | 15 | DigitalOut buzzer(PA_11); |
MatsumotoKouki | 0:9669502e17f0 | 16 | DigitalIn flightPin(PA_12); |
MatsumotoKouki | 0:9669502e17f0 | 17 | Timeout t; |
MatsumotoKouki | 0:9669502e17f0 | 18 | |
MatsumotoKouki | 0:9669502e17f0 | 19 | int main() |
MatsumotoKouki | 0:9669502e17f0 | 20 | { |
MatsumotoKouki | 0:9669502e17f0 | 21 | //ここに電源投入のプロトコル |
MatsumotoKouki | 0:9669502e17f0 | 22 | char temp; |
MatsumotoKouki | 0:9669502e17f0 | 23 | char str[100]; |
MatsumotoKouki | 0:9669502e17f0 | 24 | int i=0; |
MatsumotoKouki | 0:9669502e17f0 | 25 | |
MatsumotoKouki | 0:9669502e17f0 | 26 | |
MatsumotoKouki | 0:9669502e17f0 | 27 | Timeout t; |
MatsumotoKouki | 0:9669502e17f0 | 28 | |
MatsumotoKouki | 0:9669502e17f0 | 29 | while(1) { |
MatsumotoKouki | 0:9669502e17f0 | 30 | if(im920.readable()) { //IM920からのデータがある場合 |
MatsumotoKouki | 0:9669502e17f0 | 31 | temp = im920.getc();//一文字読み込む |
MatsumotoKouki | 0:9669502e17f0 | 32 | if(temp != '\r') { //読み込み文字が改行で無い場合 |
MatsumotoKouki | 0:9669502e17f0 | 33 | str[i] = temp; |
MatsumotoKouki | 0:9669502e17f0 | 34 | i++; |
MatsumotoKouki | 0:9669502e17f0 | 35 | } else if(temp == '\r') { //読み込み文字が改行の場合//\nではなく\rを使うのに理由はある? |
MatsumotoKouki | 0:9669502e17f0 | 36 | if(str[i-2] == 's') { |
MatsumotoKouki | 0:9669502e17f0 | 37 | if(str[i-1] == 't') { //今回はstartの"st"で判定する |
MatsumotoKouki | 0:9669502e17f0 | 38 | mcu_1=1; |
MatsumotoKouki | 0:9669502e17f0 | 39 | wait(0.1); //電流流すの何秒間にしましょう? |
MatsumotoKouki | 0:9669502e17f0 | 40 | mcu_1=0; |
MatsumotoKouki | 0:9669502e17f0 | 41 | break; |
MatsumotoKouki | 0:9669502e17f0 | 42 | } |
MatsumotoKouki | 0:9669502e17f0 | 43 | } |
MatsumotoKouki | 0:9669502e17f0 | 44 | } |
MatsumotoKouki | 0:9669502e17f0 | 45 | } |
MatsumotoKouki | 0:9669502e17f0 | 46 | } |
MatsumotoKouki | 0:9669502e17f0 | 47 | cameraPow=1; |
MatsumotoKouki | 0:9669502e17f0 | 48 | cameraRec=1;//カメラスタートという指示しかないけど、電源と録画開始は同じ時間でいいのか? |
MatsumotoKouki | 0:9669502e17f0 | 49 | |
MatsumotoKouki | 0:9669502e17f0 | 50 | while(flightPin!=1) { |
MatsumotoKouki | 0:9669502e17f0 | 51 | if(im920.readable()) { //IM920からのデータがある場合 |
MatsumotoKouki | 0:9669502e17f0 | 52 | temp = im920.getc();//一文字読み込む |
MatsumotoKouki | 0:9669502e17f0 | 53 | if(temp != '\r') { //読み込み文字が改行で無い場合 |
MatsumotoKouki | 0:9669502e17f0 | 54 | str[i] = temp; |
MatsumotoKouki | 0:9669502e17f0 | 55 | i++; |
MatsumotoKouki | 0:9669502e17f0 | 56 | } else if(temp == '\r') { //読み込み文字が改行の場合//\nではなく\rを使うのに理由はある? |
MatsumotoKouki | 0:9669502e17f0 | 57 | if(str[i-2] == 'r') { |
MatsumotoKouki | 0:9669502e17f0 | 58 | if(str[i-1] == 'e') { //今回はresetの"re"で判定する |
MatsumotoKouki | 0:9669502e17f0 | 59 | mcu_1=1; |
MatsumotoKouki | 0:9669502e17f0 | 60 | mcu_2=1; |
MatsumotoKouki | 0:9669502e17f0 | 61 | wait(0.1); //電流流すの何秒間にしましょう? |
MatsumotoKouki | 0:9669502e17f0 | 62 | mcu_1=0; |
MatsumotoKouki | 0:9669502e17f0 | 63 | mcu_2=0; |
MatsumotoKouki | 0:9669502e17f0 | 64 | } |
MatsumotoKouki | 0:9669502e17f0 | 65 | } |
MatsumotoKouki | 0:9669502e17f0 | 66 | } |
MatsumotoKouki | 0:9669502e17f0 | 67 | } |
MatsumotoKouki | 0:9669502e17f0 | 68 | } |
MatsumotoKouki | 0:9669502e17f0 | 69 | t.attach(nichrome_ON,3);//ニクロムを作動させるまでの時間 |
MatsumotoKouki | 0:9669502e17f0 | 70 | //ここからGPSの情報取得して送信 |
MatsumotoKouki | 0:9669502e17f0 | 71 | } |
MatsumotoKouki | 0:9669502e17f0 | 72 | |
MatsumotoKouki | 0:9669502e17f0 | 73 | void nichrome_ON(){ |
MatsumotoKouki | 0:9669502e17f0 | 74 | printf("テグスカット!\n\r"); |
MatsumotoKouki | 0:9669502e17f0 | 75 | nichrome=1; |
MatsumotoKouki | 0:9669502e17f0 | 76 | wait(2.0);//テグスを切るまでにかかる時間 |
MatsumotoKouki | 0:9669502e17f0 | 77 | nichrome=0; |
MatsumotoKouki | 0:9669502e17f0 | 78 | t.detach(); |
MatsumotoKouki | 0:9669502e17f0 | 79 | t.attach(buzzerON,6);//ブザー作動までの時間 |
MatsumotoKouki | 0:9669502e17f0 | 80 | } |
MatsumotoKouki | 0:9669502e17f0 | 81 | |
MatsumotoKouki | 0:9669502e17f0 | 82 | void buzzerON(){ |
MatsumotoKouki | 0:9669502e17f0 | 83 | printf("ブザー作動\n\r"); |
MatsumotoKouki | 0:9669502e17f0 | 84 | buzzer=1; |
MatsumotoKouki | 0:9669502e17f0 | 85 | //ここからモード変換だけど、わかりにくかったら他の関数に入れてもいいかも |
MatsumotoKouki | 0:9669502e17f0 | 86 | mcu_1=1; |
MatsumotoKouki | 0:9669502e17f0 | 87 | wait(0.1);//電流何秒流す? |
MatsumotoKouki | 0:9669502e17f0 | 88 | mcu_1=0; |
MatsumotoKouki | 0:9669502e17f0 | 89 | } |
MatsumotoKouki | 0:9669502e17f0 | 90 | |
MatsumotoKouki | 0:9669502e17f0 | 91 | void getCommand(){} |