
darumasan ga koronda!
Dependencies: mbed QEI ros_lib_kinetic USBDevice
main.cpp
- Committer:
- ksingyuunyuu
- Date:
- 2019-11-13
- Revision:
- 0:85391b8275ee
File content as of revision 0:85391b8275ee:
#include "mbed.h" #include <ros.h> #include <geometry_msgs/Twist.h> #include "QEI.h" #include <std_msgs/Bool.h> ros::NodeHandle nh; // マクロ定義(ピン配置) #define D0 PA_3 #define D1 PA_2 #define D2 PA_10 #define D3 PB_3 #define D4 PB_5 #define D5 PB_4 #define D6 PB_10 #define D7 PA_8 #define D8 PA_9 #define D9 PC_7 #define D10 PB_6 #define D11 PA_7 #define D12 PA_6 #define D13 PA_5 // アナログ #define A0 PA_0 #define A1 PA_1 #define A2 PA_4 #define A3 PB_0 #define A4 PC_1 #define A5 PC_0 #define B1 PC_13 // その他マクロ定義 // 入出力モード、各種モードの設定 BusIn sw(B1); DigitalOut step(D9); DigitalOut dir(D10); DigitalOut myled(LED1); PwmOut PWM(D3); //初期化 // 関数のプロトタイプ宣言 void turn(const std_msgs::Bool& cmd_turn); ros::Subscriber<std_msgs::Bool> sub("hurimuki", turn); void fake_turn(const std_msgs::Bool& cmd_fake_turn); ros::Subscriber<std_msgs::Bool> fake("fake_hurimuki", fake_turn); int main() { PWM.period_us(20000); //周期設定 nh.initNode(); nh.subscribe(sub); nh.subscribe(fake); while (1) { nh.spinOnce(); wait_ms(1); } } // 振り向き関数 std_msgs/Bool型"hurimuki"トピック True:振り向き False:非振り向き void turn(const std_msgs::Bool& cmd_turn){ if(cmd_turn.data){ // 振り向き PWM.pulsewidth_us(595); //パルス幅変更 wait_ms(200); } else { // 振り向いていない PWM.pulsewidth_us(2300); wait(1); } } // 振り向き関数 std_msgs/Bool型"fake_hurimuki"トピック "hurimuki"トピックがTrueの場合、非振り向きのフェイクとして機能する // True:フェイク動作 False:振り向きのまま void fake_turn(const std_msgs::Bool& cmd_fake_turn){ if(cmd_fake_turn.data){ // 振り向き PWM.pulsewidth_us(1000); //パルス幅変更 wait(1); PWM.pulsewidth_us(595); //パルス幅変更 } else { // 振り向いていない PWM.pulsewidth_us(2300); wait(1); } }