发送Topic指令 控制OLED显示
由于Serial被用作agent传输了,代码的传输也需要用到Serial,在没有找到更好的办法的时候,我需要用OLED能作为一个显示器,来反馈所受到的topic消息。
源代码参考:
2.做个时钟-系统时间同步
作了一些修改
一.添加依赖
这里需要使用二个库,microros、oled驱动
[env:featheresp32]
platform = espressif32
board = featheresp32
framework = arduino
lib_deps =
https://gitee.com/harebert/micro_ros_platformio.git
adafruit/Adafruit SSD1306@^2.5.7
paulstoffregen/Time@^1.6.1
二.代码部分
为了方便阅读,代码分为几个部分:
1.引入
#include <Arduino.h>
#include <micro_ros_platformio.h>
#include <rcl/rcl.h>
#include <rclc/rclc.h>
#include <rclc/executor.h>
#include <std_msgs/msg/int32.h>
#include <Arduino.h>
#include <Adafruit_GFX.h> // 加载Adafruit_GFX库
#include <Adafruit_SSD1306.h> // 加载Adafruit_SSD1306库
2.申明一些必须的对象
Adafruit_SSD1306 display; // 声明对象
rclc_executor_t executor;
rclc_support_t support;
rcl_allocator_t allocator;
rcl_node_t node;
// 声明话题订阅者
rcl_subscription_t subscriber;
// 声明消息文件
std_msgs__msg__Int32 sub_msg;
3.回调函数
在Adafruit SSD1306上显示中文比较复杂,所以,我这里暂时先用英文替代,最后上一个中文的解决方案。
void callback_subscription_