f303k8(メイン)用のプログラム。 ver1

Dependencies:   mbed BufferedSerial

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?

UserRevisionLine numberNew 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(){}