f303k8(メイン)用のプログラム。 ver1
Dependencies: mbed BufferedSerial
main.cpp@3:bc0359b37d5c, 2021-09-09 (annotated)
- 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?
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 | 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 | } |