1. 程式人生 > >基於ROS使用Arduino控制直流電機

基於ROS使用Arduino控制直流電機

1. 硬體

Arduino控制板:1個;

直流電機:1個;

杜邦線:若干;

UN2003LA: 1個

1.1 接線方式

接線方式為:ULN2003     arduino主機板
                      1腳            9
                      8腳           GND
                      9腳           VCC

ULN2003正面從左右到右,從下到上引腳為1~8 16~9。

ULN2003的16腳接直流電機的任意一個腳,直流電機的另外一個腳接arduino主機板的+5v。

來張實際的照片(略麻煩):

2 程式 

#include <ros.h>
#include <std_msgs/Int16.h>
 
const int U=9;
int re_data=0;
 
ros::NodeHandle nh;
 
void messageCb(std_msgs::Int16 message)
{
  re_data = message.data;

 
}
 
ros::Subscriber<std_msgs::Int16> sub("motor",&messageCb);
 
void setup()
{
  nh.initNode();
  nh.subscribe(sub);
}
 
void loop()
{
  analogWrite(U,re_data);;
  nh.spinOnce();
}

 

2.1 程式下載和執行

首先:roscore

其次:rosrun rosserial_python serial_node.py /dev/ttyACM0

/dev/ttyACM0  這個是自己的埠號

最後:rostopic pub -1 /motor/Int16 0

          rostopic pub -1 /motor/Int16 125

         rostopic pub -1 /motor/Int16 255

來張圖片: