基于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

来张图片:

猜你喜欢

转载自blog.csdn.net/qq_27806947/article/details/83279019
今日推荐