基于ROS使用Arduino读取红外遥控的输入

1. 硬件

Arduino控制板:1个;

遥控器:1个;

红外接收头:1个;

杜邦线:若干;

1.1 接线方式

红外接收头有三个引脚如下图: 

用的时候将VOUT接到模拟口(11),GND接到实验板上的GND,VCC接到实验板上的+5v

来张实际的照片(略麻烦):

 2 程序 

#include <IRremote.h>
#include <ros.h>
#include <std_msgs/Char.h>

ros::NodeHandle nh;
std_msgs::Char data;
ros::Publisher chatter("chatter1",&data);

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup(){
  nh.initNode();
  nh.advertise(chatter);
  irrecv.enableIRIn(); 
}
  
void loop(){
 if (irrecv.decode(&results)) {
    data.data = results.value;
    chatter.publish(&data);
    irrecv.resume(); // Receive the next value
  }

  nh.spinOnce();
}

2.1 程序下载和运行

首先:roscore

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

/dev/ttyACM0  这个是自己的端口号

最后:rostopic echo /chatter1

备注:接收到的char数据乱码较多,后期还需要进一步的校正。 

来张图片:

猜你喜欢

转载自blog.csdn.net/qq_27806947/article/details/83350887