![](/media/cache/group/mebd_thumbnail.jpg.50x50_q85.jpg)
f303k8(メイン)用のプログラム。 ver1
Dependencies: mbed BufferedSerial
main.cpp
- Committer:
- MatsumotoKouki
- Date:
- 2021-08-15
- Revision:
- 0:9669502e17f0
- Child:
- 1:b12e35a43ee1
File content as of revision 0:9669502e17f0:
#include "mbed.h" //コマンド取得とモード変換は関数にいれたほうがわかりやすい void nichrome_ON(); void buzzerON(); void getCommand(); Serial pc(USBTX, USBRX,38400);//ボーレートを落とすと,USB側からのデータが正確に出力されない.//pcと直接通信してないのに定義する必要ある? Serial im920(PA_9,PA_10,19200);//TX(IM920_RX), RX(IM920_TX) DigitalOut mcu_1(PA_7); DigitalOut mcu_2(PA_6); DigitalOut cameraPow(PF_0); DigitalOut cameraRec(PF_1); DigitalOut nichrome(PA_8); DigitalOut buzzer(PA_11); DigitalIn flightPin(PA_12); Timeout t; int main() { //ここに電源投入のプロトコル char temp; char str[100]; int i=0; Timeout t; while(1) { if(im920.readable()) { //IM920からのデータがある場合 temp = im920.getc();//一文字読み込む if(temp != '\r') { //読み込み文字が改行で無い場合 str[i] = temp; i++; } else if(temp == '\r') { //読み込み文字が改行の場合//\nではなく\rを使うのに理由はある? if(str[i-2] == 's') { if(str[i-1] == 't') { //今回はstartの"st"で判定する mcu_1=1; wait(0.1); //電流流すの何秒間にしましょう? mcu_1=0; break; } } } } } cameraPow=1; cameraRec=1;//カメラスタートという指示しかないけど、電源と録画開始は同じ時間でいいのか? while(flightPin!=1) { if(im920.readable()) { //IM920からのデータがある場合 temp = im920.getc();//一文字読み込む if(temp != '\r') { //読み込み文字が改行で無い場合 str[i] = temp; i++; } else if(temp == '\r') { //読み込み文字が改行の場合//\nではなく\rを使うのに理由はある? if(str[i-2] == 'r') { if(str[i-1] == 'e') { //今回はresetの"re"で判定する mcu_1=1; mcu_2=1; wait(0.1); //電流流すの何秒間にしましょう? mcu_1=0; mcu_2=0; } } } } } t.attach(nichrome_ON,3);//ニクロムを作動させるまでの時間 //ここからGPSの情報取得して送信 } void nichrome_ON(){ printf("テグスカット!\n\r"); nichrome=1; wait(2.0);//テグスを切るまでにかかる時間 nichrome=0; t.detach(); t.attach(buzzerON,6);//ブザー作動までの時間 } void buzzerON(){ printf("ブザー作動\n\r"); buzzer=1; //ここからモード変換だけど、わかりにくかったら他の関数に入れてもいいかも mcu_1=1; wait(0.1);//電流何秒流す? mcu_1=0; } void getCommand(){}