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

Dependencies:   mbed Servo

main.cpp

Committer:
hosei2
Date:
2020-10-15
Revision:
0:8765ef6c674c

File content as of revision 0:8765ef6c674c:

#include "mbed.h"
#include "Servo.h"
DigitalOut SV(PA_1);// MOSFET制御用(サーボ)
DigitalOut dump(PA_14);// MOSFET制御用(電磁弁)
DigitalOut L1(PA_4);//LED用ピン
DigitalOut L2(PA_5);
DigitalOut L3(PA_6);
DigitalOut out1(PB_0);//動作確認用ピン
DigitalOut out2(PB_1);
DigitalOut out3(PA_7);
DigitalIn TWE(PB_7);//TWEの入力の端子(サーボ)
//DigitalIn TWE(PB_5);//TWEの入力の端子(電磁弁)
PwmOut pwm(PA_8);//サーボモーターの端子
//int caunt;//動作を一度しか行わないための関数
int stop_time=10;//バルブをあけている時間(秒)
int start=500, end=1500;//startが基準位置、endが動作後の停止位置、start:500,end:1500の時サーボの回転角が約90度、start:500,end:2400の時サーボの回転角が約180度
    
int main() {
    
        //caunt=0;
        SV=1;//サーボ用電源オン
        //↓サーボモーターの初期位置への移動
        for(int p = end; p >=start; p -= 10) {
        pwm.pulsewidth_us(p);
        wait_ms(20);//15辺りが限界
        }
        SV=0;//サーボ用電源オフ
        
    while(1){
        if(dump==0){
            }
            
        if(TWE==1){
        L1=1;//待機LED点灯
        out1=1;//subSTMに待機の信号を送る
        }  
        
        if(TWE==0){
            SV=1;//サーボ用電源オン
            out1=0;//待機信号を消す
            out2=1;//動作1信号を送る
            for(int p = start; p < end; p += 10) {
            pwm.pulsewidth_us(p);
            wait_ms(20);
            L1=0;//待機LED消灯
            L2=1;//動作LED点灯
            }
                
            wait(stop_time);
            out2=0;//動作1信号を消す    
            out3=1;//動作2信号を送る
            
            for(int p = end; p >=start; p -= 10) {
            pwm.pulsewidth_us(p);
            wait_ms(20);
            L3=1;//終了LED点灯
            L2=0;//動作LED消灯
            }
            
            wait(5);
            out3=0;//動作2信号を消す
            //caunt=1;
            SV=0;//サーボ用電源オフ
            out1=1;//待機信号を送る
            L3=0;
            }

            }
}