1. 程式人生 > >基於ROS使用Arduino讀取紅外遙控的輸入

基於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資料亂碼較多,後期還需要進一步的校正。 

來張圖片: