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

Dependencies:   mbed BufferedSerial

Committer:
taquto
Date:
Thu Sep 09 09:12:48 2021 +0000
Revision:
3:bc0359b37d5c
Parent:
1:b12e35a43ee1
added code about the camera

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 1:b12e35a43ee1 6 int 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 1:b12e35a43ee1 18 char str[100];
MatsumotoKouki 1:b12e35a43ee1 19 int i=0;
MatsumotoKouki 0:9669502e17f0 20
MatsumotoKouki 0:9669502e17f0 21 int main()
MatsumotoKouki 0:9669502e17f0 22 {
MatsumotoKouki 0:9669502e17f0 23 //ここに電源投入のプロトコル
MatsumotoKouki 1:b12e35a43ee1 24 int flag=0;
MatsumotoKouki 1:b12e35a43ee1 25 while(flightPin==1){
MatsumotoKouki 1:b12e35a43ee1 26 if(flag==0){
MatsumotoKouki 1:b12e35a43ee1 27 while(1){
MatsumotoKouki 1:b12e35a43ee1 28 if(getCommand()==1){
MatsumotoKouki 1:b12e35a43ee1 29 flag=1;//flagに1を代入することで先に進む
taquto 3:bc0359b37d5c 30
MatsumotoKouki 1:b12e35a43ee1 31 cameraPow=1;
taquto 3:bc0359b37d5c 32 wait(3);//3秒間長押しでカメラ起動開始
taquto 3:bc0359b37d5c 33 cameraPow=0;
taquto 3:bc0359b37d5c 34 wait(7);//カメラ起動待ち時間
taquto 3:bc0359b37d5c 35 cameraRec=1;//撮影開始指示
taquto 3:bc0359b37d5c 36 wait(0.2);//この待機時間は要らないのかもしれない
taquto 3:bc0359b37d5c 37 cameraRec=0;
taquto 3:bc0359b37d5c 38
MatsumotoKouki 1:b12e35a43ee1 39 break;
MatsumotoKouki 0:9669502e17f0 40 }
MatsumotoKouki 0:9669502e17f0 41 }
MatsumotoKouki 0:9669502e17f0 42 }
MatsumotoKouki 1:b12e35a43ee1 43
MatsumotoKouki 1:b12e35a43ee1 44 else if(flag==1){
MatsumotoKouki 1:b12e35a43ee1 45 while(1) {
MatsumotoKouki 1:b12e35a43ee1 46 if(getCommand()==1){
MatsumotoKouki 1:b12e35a43ee1 47 flag=0;//flagに0を代入することで最初に戻る
MatsumotoKouki 1:b12e35a43ee1 48 break;
MatsumotoKouki 0:9669502e17f0 49 }
MatsumotoKouki 0:9669502e17f0 50 }
MatsumotoKouki 0:9669502e17f0 51 }
MatsumotoKouki 0:9669502e17f0 52 }
MatsumotoKouki 0:9669502e17f0 53 t.attach(nichrome_ON,3);//ニクロムを作動させるまでの時間
MatsumotoKouki 0:9669502e17f0 54 //ここからGPSの情報取得して送信
MatsumotoKouki 0:9669502e17f0 55 }
MatsumotoKouki 0:9669502e17f0 56
MatsumotoKouki 0:9669502e17f0 57 void nichrome_ON(){
MatsumotoKouki 0:9669502e17f0 58 printf("テグスカット!\n\r");
MatsumotoKouki 0:9669502e17f0 59 nichrome=1;
MatsumotoKouki 0:9669502e17f0 60 wait(2.0);//テグスを切るまでにかかる時間
MatsumotoKouki 0:9669502e17f0 61 nichrome=0;
MatsumotoKouki 0:9669502e17f0 62 t.detach();
MatsumotoKouki 0:9669502e17f0 63 t.attach(buzzerON,6);//ブザー作動までの時間
MatsumotoKouki 0:9669502e17f0 64 }
MatsumotoKouki 0:9669502e17f0 65
MatsumotoKouki 0:9669502e17f0 66 void buzzerON(){
MatsumotoKouki 0:9669502e17f0 67 printf("ブザー作動\n\r");
MatsumotoKouki 0:9669502e17f0 68 buzzer=1;
taquto 3:bc0359b37d5c 69
taquto 3:bc0359b37d5c 70 cameraRec=1;//撮影終了指示
taquto 3:bc0359b37d5c 71 wait(0.2);//この待機時間は要らないのかもしれない
taquto 3:bc0359b37d5c 72 cameraRec=0;
taquto 3:bc0359b37d5c 73
MatsumotoKouki 0:9669502e17f0 74 //ここからモード変換だけど、わかりにくかったら他の関数に入れてもいいかも
MatsumotoKouki 0:9669502e17f0 75 mcu_1=1;
MatsumotoKouki 0:9669502e17f0 76 wait(0.1);//電流何秒流す?
MatsumotoKouki 0:9669502e17f0 77 mcu_1=0;
MatsumotoKouki 0:9669502e17f0 78 }
MatsumotoKouki 0:9669502e17f0 79
MatsumotoKouki 1:b12e35a43ee1 80 int getCommand(){
MatsumotoKouki 1:b12e35a43ee1 81 char temp;
MatsumotoKouki 1:b12e35a43ee1 82 if(im920.readable()) { //IM920からのデータがある場合
MatsumotoKouki 1:b12e35a43ee1 83 temp = im920.getc();//一文字読み込む
MatsumotoKouki 1:b12e35a43ee1 84 if(temp != '\r') { //読み込み文字が改行で無い場合
MatsumotoKouki 1:b12e35a43ee1 85 str[i] = temp;
MatsumotoKouki 1:b12e35a43ee1 86 i++;
MatsumotoKouki 1:b12e35a43ee1 87 } else if(temp == '\r') { //読み込み文字が改行の場合//\nではなく\rを使うのに理由はある?
MatsumotoKouki 1:b12e35a43ee1 88 if(str[i-2] == 's'&& str[i-1] == 't') { //startの"st"
MatsumotoKouki 1:b12e35a43ee1 89 mcu_1=1;
MatsumotoKouki 1:b12e35a43ee1 90 wait(0.1); //電流流すの何秒間にしましょう?
MatsumotoKouki 1:b12e35a43ee1 91 mcu_1=0;
MatsumotoKouki 1:b12e35a43ee1 92 return 1;
MatsumotoKouki 1:b12e35a43ee1 93 }
MatsumotoKouki 1:b12e35a43ee1 94 }
MatsumotoKouki 1:b12e35a43ee1 95 else if(temp == '\r') { //読み込み文字が改行の場合//\nではなく\rを使うのに理由はある?
MatsumotoKouki 1:b12e35a43ee1 96 if(str[i-2] == 'r' && str[i-1] == 'e') {
MatsumotoKouki 1:b12e35a43ee1 97 mcu_1=1;
MatsumotoKouki 1:b12e35a43ee1 98 mcu_2=1;
MatsumotoKouki 1:b12e35a43ee1 99 wait(0.1); //電流流すの何秒間にしましょう?
MatsumotoKouki 1:b12e35a43ee1 100 mcu_1=0;
MatsumotoKouki 1:b12e35a43ee1 101 mcu_2=0;
MatsumotoKouki 1:b12e35a43ee1 102 return 1;
MatsumotoKouki 1:b12e35a43ee1 103 }
MatsumotoKouki 1:b12e35a43ee1 104 }
MatsumotoKouki 1:b12e35a43ee1 105 }
MatsumotoKouki 1:b12e35a43ee1 106 }