基於ROS使用Arduino讀取紅外遙控的輸入
阿新 • • 發佈:2018-11-01
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資料亂碼較多,後期還需要進一步的校正。
來張圖片: