那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何實現對開發板上LED的控制

CHANBAEK ? 來源:魚香ROS ? 作者:小魚 ? 2023-07-15 16:54 ? 次閱讀

你好,我是愛吃魚香ROS的小魚。本節我們正式進入到MicroROS的核心通信部分的學習中來,本節我們將通過話題訂閱,實現通過話題控制LED的亮滅。

硬件開發平臺

為方便學習,本教程配套的硬件是小魚自制的MicroROS學習板,同時該板可以作為下一章節搭建實體移動機器人的主控板以及后續制作機械臂的驅動板使用。

板載資源圖如下:

圖片

該主控板可以在小魚的店鋪直接購買,性價比接地氣,點擊左下角閱讀原文直達魚香小鋪。

一、新建工程添加依賴

新建example11_microros_topic_sub工程

圖片

修改platformio.ini添加依賴

; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html


[env:featheresp32]
platform = espressif32
board = featheresp32
framework = arduino
lib_deps = 
    https://gitee.com/ohhuo/micro_ros_platformio.git

二、編寫代碼-實現訂閱

編輯main.cpp,代碼如下,注釋小魚已經添加到代碼中來了

#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 >


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;
// 定義話題接收回調函數
void callback_subscription_(const void *msgin)
{
  const std_msgs__msg__Int32 *msg = (const std_msgs__msg__Int32 *)msgin;
  if (msg- >data == 0)
  {
    digitalWrite(2, HIGH);
  }
  else
  {
    digitalWrite(2, LOW);
  }
}


void setup()
{
  Serial.begin(115200);
  // 設置通過串口進行MicroROS通信
  set_microros_serial_transports(Serial);
  // 延時時一段時間,等待設置完成
  delay(2000);
  // 初始化內存分配器
  allocator = rcl_get_default_allocator();
  // 創建初始化選項
  rclc_support_init(&support, 0, NULL, &allocator);
  // 創建節點 topic_sub_test
  rclc_node_init_default(&node, "topic_sub_test", "", &support);
  // 訂閱者初始化
  rclc_subscription_init_default(
      &subscriber,
      &node,
      ROSIDL_GET_MSG_TYPE_SUPPORT(std_msgs, msg, Int32),
      "led_control");
  // 創建執行器
  rclc_executor_init(&executor, &support.context, 1, &allocator);
  // 為執行器添加一個訂閱者
  rclc_executor_add_subscription(&executor, &subscriber, &sub_msg, &callback_subscription_, ON_NEW_DATA);
  // 初始化LED
  pinMode(2, OUTPUT);
}


void loop()
{
  delay(100);
  // 循環處理數據
  rclc_executor_spin_some(&executor, RCL_MS_TO_NS(100));
}

三、代碼注解

相比之前的節點代碼這里主要多了這幾行

?#include 添加消息類型頭文件

?rcl_subscription_t subscriber; 聲明話題訂閱者

?std_msgs__msg__Int32 sub_msg; 聲明消息文件,這一點和上位機不同,因為內存緊缺,所以提前定義

?void callback_subscription_(const void *msgin) 接收到數據的回調函數

?rclc_subscription_init_default 初始化話題訂閱者

?rclc_executor_add_subscription(&executor, &subscriber, &sub_msg, &callback_subscription_, ON_NEW_DATA);,為執行器添加一個訂閱者

四、下載測試

4.1 編譯下載

連接開發板,編譯下載。

圖片

4.2 啟動Agent

接著打開終端啟動agent

sudo docker run -it --rm -v /dev:/dev -v /dev/shm:/dev/shm --privileged --net=host microros/micro-ros-agent:$ROS_DISTRO serial --dev /dev/ttyUSB0 -v

點擊下RST按鈕,重啟開發板,正常可以看到下圖內容

圖片

4.3 查看是否連通

接著打開終端查看節點和話題

ros2 node list
ros2 topic list

4.4 測試控制

關閉LED

ros2 topic pub /led_control  std_msgs/msg/Int32 "{data: 0}" --once

打開LED

ros2 topic pub /led_control  std_msgs/msg/Int32 "{data: 1}" --once

五、總結

本節我們通過話題訂閱,實現對開發板上LED的控制,下一節我們將嘗試讀取開發板上的VM引腳電壓,并將其通過話題發布到上位機中。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • led
    led
    +關注

    關注

    242

    文章

    23362

    瀏覽量

    663227
  • 機器人
    +關注

    關注

    211

    文章

    28646

    瀏覽量

    208429
  • 開發板
    +關注

    關注

    25

    文章

    5121

    瀏覽量

    98210
  • 學習板
    +關注

    關注

    0

    文章

    45

    瀏覽量

    12196
  • ROS
    ROS
    +關注

    關注

    1

    文章

    280

    瀏覽量

    17100
收藏 人收藏

    評論

    相關推薦

    基于OpenHarmony開發板測試Native C++應用開發

    本文主要分享在軟通動力揚帆系列“競”OpenHarmony開發板測試Native C++應用開發實現eTS調用Native C++ 程序實現
    的頭像 發表于 10-08 14:37 ?4068次閱讀

    FTHR-G0140開發板LED點燈

    FTHR-G0140開發板LED點燈;這個例程是基于MiniBoard (MM32G0141C4PV)的,所要修改PIN才能工作。經查看開發板L
    的頭像 發表于 06-05 12:54 ?21.8w次閱讀
    FTHR-G0140<b class='flag-5'>開發板</b><b class='flag-5'>LED</b>點燈

    PC的QT怎樣控制開發板LED

    請問如何用電腦的QT界面控制S3C2440的驅動程序,使得LED燈亮?我在PC機上用QT編寫了一個程序,通過按鍵使得開發板
    發表于 09-02 10:32

    用手機遙控開發板LED

    開發板通過一個藍牙串口模塊接收手機藍牙控制信號控制開發板
    發表于 12-04 10:48

    【FireBeetle 2 ESP32-S3開發板體驗】串口控制LED

    .value(0) 【實現效果】 用TTL轉串口接到開發板后,發送on、off就實現對開發板LED燈的關與開。
    發表于 07-28 23:09

    開發板LED燈閃爍起來吧

    這節課給大家講一下如何讓開發板上網絡編號為 D4 LED 燈閃爍起來,先看一下開發板上關于 LED 的原理圖
    發表于 11-11 17:17 ?13次下載

    代碼控制開發板LED:STM32跑馬燈試驗

    STM32F103跑馬燈實驗。本實驗通過代碼控制開發板的兩個LED:DS0和DS1交替閃爍,實現類似跑馬燈的效果。
    發表于 08-31 10:52 ?26次下載

    分析ARM開發板哪家好

    目前市場上有許多ARM開發板生產商,市面上也有許許多多不同系列。不免有時候面對開發板的選擇時犯難,阿么ARM開發板該如何選擇呢?下面針對幾家廠商進行分析?
    發表于 10-26 14:28 ?1.9w次閱讀

    HC6800-ES V2.0開發板的介紹及使用資料說明

    通過前面對開發板結構的了解,知道此款開發板擁有的模塊及接口比較多,每個模塊或接口都能實現對應的功能
    發表于 03-26 14:35 ?61次下載
    HC6800-ES V2.0<b class='flag-5'>開發板</b>的介紹及使用資料說明

    如何使用代碼控制開發板

      HarmonyOS Connect設備開發,相信不少剛入門的開發者都被這些問題所困擾,面對五花八門的開發板不知道該怎么選取?芯片、模組、開發板傻傻分不清?如何使用代碼
    的頭像 發表于 03-14 14:40 ?4017次閱讀

    【時擎科技AT1000開發板試用體驗】時擎科技AT1000 DEV開發板 – 燒錄工具

    時擎科技AT1000 DEV 開發板 ?– 燒錄工具 ? 本次時擎科技開發板獲取的官方資料特別少,以至于不能很好的對開發板由一個清晰的了解。 ? 本文將簡單介紹時擎開發板的燒錄工具mu
    的頭像 發表于 11-22 11:23 ?1222次閱讀
    【時擎科技AT1000<b class='flag-5'>開發板</b>試用體驗】時擎科技AT1000 DEV<b class='flag-5'>開發板</b> – 燒錄工具

    通過Web網頁控制開發板LED

    接下來將介紹如何通過Web網頁來控制開發板LED燈,本文只是在網頁實現功能,并無交互功能,
    的頭像 發表于 04-25 15:05 ?1617次閱讀
    通過Web網頁<b class='flag-5'>控制</b><b class='flag-5'>開發板</b><b class='flag-5'>LED</b>燈

    【Start_DSC28034PNT湖人開發板免費體驗】+湖人開發板功耗測試

    開發板無法解決下載問題之前,只好先對開發板的功耗進行一下測試。
    的頭像 發表于 07-10 09:07 ?646次閱讀
    【Start_DSC28034PNT湖人<b class='flag-5'>開發板</b>免費體驗】+湖人<b class='flag-5'>開發板</b>功耗測試

    如何在開發板實現話題發布流程

    你好,我是愛吃魚香ROS的小魚。本節將學習在開發板實現話題的發布,最終實現通過話題發布當前開發板的電池電量信息,關于電量信息的測量,請參考
    的頭像 發表于 07-15 16:56 ?695次閱讀
    如何在<b class='flag-5'>開發板</b><b class='flag-5'>上</b><b class='flag-5'>實現</b>話題發布流程

    S3C2440開發板實現按鍵點亮LED驅動開發的詳細過程

    電子發燒友網站提供《S3C2440開發板實現按鍵點亮LED驅動開發的詳細過程.pdf》資料免費下載
    發表于 10-11 09:36 ?0次下載
    S3C2440<b class='flag-5'>開發板</b><b class='flag-5'>上</b><b class='flag-5'>實現</b>按鍵點亮<b class='flag-5'>LED</b>驅動<b class='flag-5'>開發</b>的詳細過程
    澳门百家乐官网真人娱乐场| 大发888游戏优惠| 百家乐官网美食坊| 威尼斯人娱乐城真钱游戏| 番禺百家乐官网电器店| 大发扑克娱乐场| 百家乐代理商博彩e族| 保康县| 百家乐赌博走势图| 百家乐官网趋势图怎么看| 大发888娱乐城出纳| 百家乐攻略投注法| A8百家乐官网游戏| 威尼斯人娱乐棋牌app| LV百家乐官网赢钱LV| 德州扑克刷分| 百家乐路单规则| 太阳城百家乐官网手机投注| 缅甸赌场| 做生意门朝哪个方向好| 新西兰百家乐的玩法技巧和规则| 巴西百家乐官网的玩法技巧和规则 | 彭阳县| 太阳百家乐管理网| 胶南市| 皇马百家乐的玩法技巧和规则 | 百家乐美女荷官| 百家乐官网的庄闲概率| 威尼斯人娱乐网网上百家乐| 百家乐玩法的技巧| 真人百家乐官网平台排行| 麻将二八杠技巧| 百家乐有什么打法| 真人百家乐官网平台下载| 360棋牌游戏大厅| 百家乐海滨网现场| 博E百百家乐官网的玩法技巧和规则 | 百家乐官网最好的平台是哪个| 迷你百家乐的玩法技巧和规则| 七匹狼百家乐官网的玩法技巧和规则| 政和县|