基于ROS系统使用Arduino控制LCD1602
1. 硬件
Arduino控制板:1个;
LCD1602:1个;
杜邦线:若干;
电位器:1个;
1.1 接线方式
接线方式为:采用4接线方式
来张实际的照片(略麻烦):
2 程序
#include <ros.h>
#include <std_msgs/String.h>
#include <LiquidCrystal.h>
#define USE_USBCON
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs,en,d4,d5,d6,d7);
ros::NodeHandle nh;
void messageCb(std_msgs::String print_msg)
{
lcd.clear();
lcd.setCursor(0,1);
lcd.print(print_msg.data);
}
ros::Subscriber<std_msgs::String> sub("lcd1602", &messageCb);
void setup() {
nh.initNode();
nh.subscribe(sub);
lcd.begin(16,2);
lcd.print("Test!");
}
void loop() {
nh.spinOnce();
delay(1000);
}
2.1 程序下载和运行
首先:roscore
其次:rosrun rosserial_python serial_node.py /dev/ttyACM0
/dev/ttyACM0 这个是自己的端口号
最后:rostopic pub -1 /print_msgs/String "hello JunJun!"
来张图片: