CORE
/
valve_finish
STM32でDS5160を動かすプログラム
main.cpp@0:8765ef6c674c, 2020-10-15 (annotated)
- Committer:
- hosei2
- Date:
- Thu Oct 15 14:49:28 2020 +0000
- Revision:
- 0:8765ef6c674c
initialCommit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hosei2 | 0:8765ef6c674c | 1 | #include "mbed.h" |
hosei2 | 0:8765ef6c674c | 2 | #include "Servo.h" |
hosei2 | 0:8765ef6c674c | 3 | DigitalOut SV(PA_1);// MOSFET制御用(サーボ) |
hosei2 | 0:8765ef6c674c | 4 | DigitalOut dump(PA_14);// MOSFET制御用(電磁弁) |
hosei2 | 0:8765ef6c674c | 5 | DigitalOut L1(PA_4);//LED用ピン |
hosei2 | 0:8765ef6c674c | 6 | DigitalOut L2(PA_5); |
hosei2 | 0:8765ef6c674c | 7 | DigitalOut L3(PA_6); |
hosei2 | 0:8765ef6c674c | 8 | DigitalOut out1(PB_0);//動作確認用ピン |
hosei2 | 0:8765ef6c674c | 9 | DigitalOut out2(PB_1); |
hosei2 | 0:8765ef6c674c | 10 | DigitalOut out3(PA_7); |
hosei2 | 0:8765ef6c674c | 11 | DigitalIn TWE(PB_7);//TWEの入力の端子(サーボ) |
hosei2 | 0:8765ef6c674c | 12 | //DigitalIn TWE(PB_5);//TWEの入力の端子(電磁弁) |
hosei2 | 0:8765ef6c674c | 13 | PwmOut pwm(PA_8);//サーボモーターの端子 |
hosei2 | 0:8765ef6c674c | 14 | //int caunt;//動作を一度しか行わないための関数 |
hosei2 | 0:8765ef6c674c | 15 | int stop_time=10;//バルブをあけている時間(秒) |
hosei2 | 0:8765ef6c674c | 16 | int start=500, end=1500;//startが基準位置、endが動作後の停止位置、start:500,end:1500の時サーボの回転角が約90度、start:500,end:2400の時サーボの回転角が約180度 |
hosei2 | 0:8765ef6c674c | 17 | |
hosei2 | 0:8765ef6c674c | 18 | int main() { |
hosei2 | 0:8765ef6c674c | 19 | |
hosei2 | 0:8765ef6c674c | 20 | //caunt=0; |
hosei2 | 0:8765ef6c674c | 21 | SV=1;//サーボ用電源オン |
hosei2 | 0:8765ef6c674c | 22 | //↓サーボモーターの初期位置への移動 |
hosei2 | 0:8765ef6c674c | 23 | for(int p = end; p >=start; p -= 10) { |
hosei2 | 0:8765ef6c674c | 24 | pwm.pulsewidth_us(p); |
hosei2 | 0:8765ef6c674c | 25 | wait_ms(20);//15辺りが限界 |
hosei2 | 0:8765ef6c674c | 26 | } |
hosei2 | 0:8765ef6c674c | 27 | SV=0;//サーボ用電源オフ |
hosei2 | 0:8765ef6c674c | 28 | |
hosei2 | 0:8765ef6c674c | 29 | while(1){ |
hosei2 | 0:8765ef6c674c | 30 | if(dump==0){ |
hosei2 | 0:8765ef6c674c | 31 | } |
hosei2 | 0:8765ef6c674c | 32 | |
hosei2 | 0:8765ef6c674c | 33 | if(TWE==1){ |
hosei2 | 0:8765ef6c674c | 34 | L1=1;//待機LED点灯 |
hosei2 | 0:8765ef6c674c | 35 | out1=1;//subSTMに待機の信号を送る |
hosei2 | 0:8765ef6c674c | 36 | } |
hosei2 | 0:8765ef6c674c | 37 | |
hosei2 | 0:8765ef6c674c | 38 | if(TWE==0){ |
hosei2 | 0:8765ef6c674c | 39 | SV=1;//サーボ用電源オン |
hosei2 | 0:8765ef6c674c | 40 | out1=0;//待機信号を消す |
hosei2 | 0:8765ef6c674c | 41 | out2=1;//動作1信号を送る |
hosei2 | 0:8765ef6c674c | 42 | for(int p = start; p < end; p += 10) { |
hosei2 | 0:8765ef6c674c | 43 | pwm.pulsewidth_us(p); |
hosei2 | 0:8765ef6c674c | 44 | wait_ms(20); |
hosei2 | 0:8765ef6c674c | 45 | L1=0;//待機LED消灯 |
hosei2 | 0:8765ef6c674c | 46 | L2=1;//動作LED点灯 |
hosei2 | 0:8765ef6c674c | 47 | } |
hosei2 | 0:8765ef6c674c | 48 | |
hosei2 | 0:8765ef6c674c | 49 | wait(stop_time); |
hosei2 | 0:8765ef6c674c | 50 | out2=0;//動作1信号を消す |
hosei2 | 0:8765ef6c674c | 51 | out3=1;//動作2信号を送る |
hosei2 | 0:8765ef6c674c | 52 | |
hosei2 | 0:8765ef6c674c | 53 | for(int p = end; p >=start; p -= 10) { |
hosei2 | 0:8765ef6c674c | 54 | pwm.pulsewidth_us(p); |
hosei2 | 0:8765ef6c674c | 55 | wait_ms(20); |
hosei2 | 0:8765ef6c674c | 56 | L3=1;//終了LED点灯 |
hosei2 | 0:8765ef6c674c | 57 | L2=0;//動作LED消灯 |
hosei2 | 0:8765ef6c674c | 58 | } |
hosei2 | 0:8765ef6c674c | 59 | |
hosei2 | 0:8765ef6c674c | 60 | wait(5); |
hosei2 | 0:8765ef6c674c | 61 | out3=0;//動作2信号を消す |
hosei2 | 0:8765ef6c674c | 62 | //caunt=1; |
hosei2 | 0:8765ef6c674c | 63 | SV=0;//サーボ用電源オフ |
hosei2 | 0:8765ef6c674c | 64 | out1=1;//待機信号を送る |
hosei2 | 0:8765ef6c674c | 65 | L3=0; |
hosei2 | 0:8765ef6c674c | 66 | } |
hosei2 | 0:8765ef6c674c | 67 | |
hosei2 | 0:8765ef6c674c | 68 | } |
hosei2 | 0:8765ef6c674c | 69 | } |