1. 程式人生 > >基於ROS使用Arduino控制超聲波感測器

基於ROS使用Arduino控制超聲波感測器

1. 硬體

Arduino控制板:1個;

超聲波感測器:1個;

杜邦線:若干;

1.1 接線方式

接線方式為:5v電源腳(Vcc),觸發控制端(Trig),接收端(Echo),地端(GND)

其中觸發端設定為輸出,這裡連線引腳11;接收端設定為輸入,連線引腳12。

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

 2 程式

#include <ros.h>
#include <std_msgs/Int32.h>
 
ros::NodeHandle nh;
 
std_msgs::Int32 distance;
ros::Publisher chatter("chatter", &distance);
 
const int TrigPin = 11;
const int EchoPin = 12;
 
void setup()
{
  nh.initNode();
  pinMode(TrigPin, OUTPUT);
  pinMode(EchoPin, INPUT);
  nh.advertise(chatter);
}
 
void loop()
{
  // 產生一個10us的高脈衝去觸發TrigPin
  digitalWrite(TrigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(TrigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(TrigPin, LOW);
  // 檢測脈衝寬度,並計算出距離
  //delayMicroseconds(2);
  distance.data = pulseIn(EchoPin, HIGH) / 58.00;
  chatter.publish( &distance);
  nh.spinOnce();
  delay(1000);
}

2.1 程式下載和執行

首先:roscore

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

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

最後:rostopic echo /chatter

來張圖片: