STM32でDS5160を動かすプログラム

Dependencies:   mbed Servo

Committer:
hosei2
Date:
Thu Oct 15 14:49:28 2020 +0000
Revision:
0:8765ef6c674c
initialCommit

Who changed what in which revision?

UserRevisionLine numberNew 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 }