星慈光編程蟲2號小車講解第一篇--向前向后

星慈光編程蟲2號小車是一款基于微控制器(如Arduino)的編程教學小車,常用于學習機器人控制和編程基礎。本講解將重點介紹小車的基本運動:前進、后退、左轉和右轉。這些運動通過控制電機實現,通常涉及調整電機的方向和速度。小編將逐步解釋原理、編程實現和注意事項,幫助您快速上手。

目錄

準備工作

硬件:

軟件:

運動原理

麥克拉姆輪的運動原理

基本概念

向前運動

向后運動

向左平移(向左橫移)

向右平移(向右橫移)

旋轉運動

代碼

宏定義

設置引腳 setup()函數

輔助函數

up()

down()

完整代碼:讓小車不停向前移動5秒,向后移動5秒

準備工作

硬件:
  1. Arduino UNO R3 原裝進口
  2. 星慈光 HJ-P20R34
  3. 驅動版編程蟲2號小車套裝
軟件:

arduino IDEhttps://www.arduino.cc/en/software/

運動原理

星慈光編程蟲2號小車使用麥克拉姆輪驅動。

麥克拉姆輪的運動原理

麥克拉姆輪(Mecanum wheel)是一種特殊設計的輪子,常用于全向移動機器人。它的輪緣上安裝有多個傾斜的輥子(通常呈45度角),這些輥子允許輪子在滾動時產生側向力。通過獨立控制每個輪子的旋轉方向和速度,機器人可以實現復雜的運動,包括向前、向后、向左平移、向右平移以及旋轉。下面小編將逐步解釋如何實現這些基本運動。

基本概念
  • 麥克拉姆輪通常安裝在機器人的四個角落:前左輪(FL)、前右輪(FR)、后左輪(BL)、后右輪(BR)。
  • 每個輪子的輥子角度決定了其力分解:當輪子旋轉時,產生的力可以分解為縱向分量(沿機器人前進方向)和橫向分量(垂直于前進方向)。
  • 通過組合四個輪子的旋轉,可以合成機器人的整體運動。運動方向由輪子速度向量控制,其中正速度表示輪子向前旋轉(例如,順時針),負速度表示向后旋轉(逆時針)。
向前運動
  • 原理:機器人向正前方移動時,需要所有輪子產生的縱向分量疊加,而橫向分量相互抵消。
  • 控制方式
    • 所有四個輪子以相同速度向前旋轉(正速度)。
    • 例如:FL = +v, FR = +v, BL = +v, BR = +v(其中 v 是速度值)。
  • 為什么有效:每個輪子的力分解中,縱向分量主導,橫向分量由于對稱布局而抵消,合力推動機器人向前。
  • 簡化公式:機器人的縱向速度v_x與輪子速度成正比:?v_x \propto \frac{w_{\text{FL}} + w_{\text{FR}} + w_{\text{BL}} + w_{\text{BR}}}{4}??其中 w 表示輪子角速度。
向后運動
  • 原理:與向前運動相反,所有輪子向后旋轉,縱向分量疊加向后。
  • 控制方式
    • 所有四個輪子以相同速度向后旋轉(負速度)。
    • 例如:FL = -v, FR = -v, BL = -v, BR = -v
  • 為什么有效:力分解中,縱向分量反向,橫向分量抵消,機器人整體向后移動。
  • 簡化公式:縱向速度v_x為負值。
旋轉運動
  • 順時針旋轉:左輪向前旋轉(FL = +v, BL = +v),右輪向后旋轉(FR = -v, BR = -v)。
  • 逆時針旋轉:左輪向后旋轉(FL = -v, BL = -v),右輪向前旋轉(FR = +v, BR = +v)。

代碼

宏定義
// M1
#define FR1 6
#define FR2 10
// M2
#define FL1  5
#define FL2  9
// M3
#define BR1  A5
#define BR2  11
// M4
#define BL1  A4
#define BL2  3
設置引腳 setup()函數
  pinMode(FR1, OUTPUT);pinMode(FR2, OUTPUT);pinMode(FL1, OUTPUT);pinMode(FL2, OUTPUT);pinMode(BR1, OUTPUT);pinMode(BR2, OUTPUT);pinMode(BL1, OUTPUT);pinMode(BL2, OUTPUT);
輔助函數
  1. up()
    void up() {digitalWrite(FR1, 0);digitalWrite(FR2, 1);digitalWrite(FL1, 0);digitalWrite(FL2, 1);digitalWrite(BR1, 0);digitalWrite(BR2, 1);digitalWrite(BL1, 0);digitalWrite(BL2, 1);
    }
  2. down()
    void down() {digitalWrite(FR1, 1);digitalWrite(FR2, 0);digitalWrite(FL1, 1);digitalWrite(FL2, 0);digitalWrite(BR1, 1);digitalWrite(BR2, 0);digitalWrite(BL1, 1);digitalWrite(BL2, 0);
    }

  • 1表示高電平,0表示低電平

完整代碼:讓小車不停向前移動5秒,向后移動5秒

// M1
#define FR1 6
#define FR2 10
// M2
#define FL1  5
#define FL2  9
// M3
#define BR1  A5
#define BR2  1
// M4
#define BL1  A4
#define BL2  3
void setup() {pinMode(FR1, OUTPUT);pinMode(FR2, OUTPUT);pinMode(FL1, OUTPUT);pinMode(FL2, OUTPUT);pinMode(BR1, OUTPUT);pinMode(BR2, OUTPUT);pinMode(BL1, OUTPUT);pinMode(BL2, OUTPUT);
}// 00停,01前,10退
void up() {digitalWrite(FR1, 0);digitalWrite(FR2, 1);digitalWrite(FL1, 0);digitalWrite(FL2, 1);digitalWrite(BR1, 0);digitalWrite(BR2, 1);digitalWrite(BL1, 0);digitalWrite(BL2, 1);
}
void down() {digitalWrite(FR1, 1);digitalWrite(FR2, 0);digitalWrite(FL1, 1);digitalWrite(FL2, 0);digitalWrite(BR1, 1);digitalWrite(BR2, 0);digitalWrite(BL1, 1);digitalWrite(BL2, 0);
}void loop() {up();delay(5000);down();delay(5000);
}

下一篇:星慈光編程蟲2號小車講解第二篇--向左向右平移https://blog.csdn.net/LiuYiCheng123456/article/details/149360016?spm=1001.2014.3001.5501

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/92734.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/92734.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/92734.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

iOS 加固工具有哪些?快速發布團隊的實戰方案

在當今快速迭代的 iOS 開發環境中,團隊需要在高頻上線與應用安全之間找到平衡。快速發布不應犧牲安全性,而安全加固也不應成為阻礙上線的瓶頸。這就要求開發者在加固工具的選型與流程設計上,做到既高效又可靠。 那么,iOS 加固工具…

結構型模式-架構解耦與擴展實踐

結構型模式聚焦于對象間的組合關系,通過優化類與對象的裝配方式,實現系統的靈活性與可擴展性。在分布式系統中,由于多節點協作、跨網絡通信及異構環境集成等特性,傳統結構型模式需進行適應性改造,以應對分布式特有的復…

scratch筆記和練習-第三課

角色的大小變化 亮度等特效設置 流程圖圖形符號 Figma攻略:26個流行流程圖符號及其解釋 練習 實現在閃動10次后角色緩緩變回原形

Redis MCP 安裝與配置完整指南

一、Redis MCP 簡介 Redis MCP (Managed Control Plane) 是一個獨立于 Redis 服務運行的管理控制平臺,用戶可通過該平臺快速高效地管理和配置 Redis 實例。Redis MCP 可配合開源 Redis 或 Redis Cloud 使用。 二、安裝 Redis MCP 服務 Redis MCP 提供多種安裝方式&a…

Spring Boot配置文件加載全指南:從基礎到Spring Cloud集成

??? ??一、核心概念? 配置文件默認存在加載順序優先級主要用途必需依賴bootstrap.yml? 無1(最先)最高Spring Cloud上下文初始化spring-cloud-starter-bootstrapbootstrap.properties? 無1(略高于.yml)最高同上同上application.yml? 自動創建2中等應用核心配置無appl…

Python通關秘籍(六)數據結構——字典

前文復習 五、數據結構 5.1 列表(List) 列表是一種有序的可變數據集合,可以包含不同類型的元素。

自學嵌入式 day33 TCP、HTTP協議(超文本傳輸協議)

6、黏包問題(1)、原因:發送方發送數據太快或者接收方接收數據太慢,導致數據在緩沖區緩存。(2)、解決方法:①發送指定大小數據(結構體)問題:結構體對齊問題&am…

LinuxShell 的 Here-Document(<< EOF) 筆記250723

LinuxShell 的 Here-Document(<< EOF) 筆記250723 Here-Document(<< EOF) Linux Shell Here Document (<< EOF) 終極指南 Here Document&#xff08;立即文檔&#xff09;是 Shell 中用于多行輸入重定向的強大功能&#xff0c;其核心語法為 << DELI…

【windows修復】解決windows10,沒有【相機] 功能問題

問題: windows10,相機模塊,好像是被卸載了,想重新安裝 方法簡介: 先下載windows store, 然后,在windows store 里面下載 相機功能: 解決: 直接下載官方離線包并手動安裝(成功率 90%+) 1 用瀏覽器打開 https://store.rg-adguard.net 這是微軟 CDN 解析站,安…

Python 中字典和 if-else 的選擇

一、為什么要寫這篇文章&#xff1f; 在 Python 編程中&#xff0c;我們經常需要根據不同的條件做不同的事情。比如&#xff1a; 根據用戶等級顯示不同的內容根據成績給出不同的評價根據天氣決定穿什么衣服 這時候&#xff0c;我們通常有兩種選擇&#xff1a; 用 if-else 語句用…

【開源解析】基于HTML5的智能會議室預約系統開發全攻略:從零構建企業級管理平臺

&#x1f680; 【開源解析】基于HTML5的智能會議室預約系統開發全攻略&#xff1a;從零構建企業級管理平臺 &#x1f308; 個人主頁&#xff1a;創客白澤 - CSDN博客 &#x1f4a1; 熱愛不止于代碼&#xff0c;熱情源自每一個靈感閃現的夜晚。愿以開源之火&#xff0c;點亮前行…

中央廣播電視總臺聯合阿里云研究院權威發布《中國人工智能應用發展報告(2025)》:我國依舊需要大力注重人工智能人才的培養

你好&#xff0c;我是杰哥。 中央廣播電視總臺聯合阿里云研究院權威發布《中國人工智能應用發展報告&#xff08;2025&#xff09;》&#xff0c;以下為報告核心看點&#xff1a; 報告首提 “654”體系&#xff1a;揭秘 6大技術趨勢、5 新應用場景、4 力產業模型&#xff1b;成…

Visual Studio 2010-.Net Framework 4.0-DevExpress安裝

最新版的DevExpress已不支持.Net Framework 4.0&#xff0c;需要下載18.1及以下版本。 17.2.5版DevExpress下載&#xff1a; 百度網盤 請輸入提取碼

借助Aspose.HTML控件,在 Python 中將 HTML 轉換為 Markdown

在這個人工智能時代&#xff0c;Markdown因其易用性而備受重視。這種標記語言易于人類和機器理解。此外&#xff0c;與 HTML 和 DOCX 相比&#xff0c;這種格式更有助于法學碩士 (LLM) 理解文檔結構。因此&#xff0c;本指南將介紹如何以 Python 編程方式將HTML轉換為 Markdown…

【2026版】Redis面試題

文章目錄1. Redis為什么這么快&#xff1f;2. Redis的持久化機制是怎樣的&#xff1f;3. Redis 的過期策略是怎么樣的&#xff1f;4. Redis的內存淘汰策略是怎么樣的&#xff1f;5. 什么是熱Key問題&#xff0c;如何解決熱key問題&#xff1f;6. 什么是大Key問題&#xff0c;如…

Python編程進階知識之第四課處理數據(pandas)

目錄 簡介 1. 安裝 Pandas 2.基本數據結構 1.Series &#xff08;1.&#xff09;創建Series &#xff08;2.&#xff09;Series的屬性 &#xff08;3.&#xff09;Series 的索引和切片 2.DataFrame &#xff08;1.&#xff09;創建 DataFrame &#xff08;2.&#xff09;…

使用 Vue 實現移動端視頻錄制與自動截圖功能

文章目錄技術棧功能介紹video標簽屬性完整代碼js 前端實現將視頻Blob轉Base64java 后端實現將視頻Base64轉mp4文件在移動端網頁開發中&#xff0c;使用攝像頭錄制視頻并自動生成截圖是一個常見的需求&#xff0c;比如身份認證、人臉識別或互動問卷等場景。本文將介紹如何使用 V…

單片機是怎么控制步進電機的?

步進電機作為一種將電脈沖信號轉化為角位移的執行機構&#xff0c;其運轉依賴于脈沖信號的控制&#xff0c;而單片機作為控制核心&#xff0c;通過輸出特定的脈沖信號和方向信號&#xff0c;實現對步進電機的步數、方向、轉速的精準控制&#xff0c;整個過程需結合驅動電路、程…

數據庫binlog日志查看方案

binlog可以查看當前數據庫中所有的修改操作&#xff0c;包含數據和結構的修改&#xff0c;所以掌握數據庫日志查看是有必要的 通過客戶端連接到mysql 查看binlog日志的存儲位置&#xff08;前提是已開啟binlog&#xff09; -- 查看日志文件列表 SHOW BINARY LOGS;結果示例-- 這…

MinIO Go 客戶端使用詳解:對象存儲開發實戰指南

MinIO GO-SDK ? 一、準備工作 1. 環境依賴 2. 安裝 SDK ?? 二、初始化 MinIO 客戶端 ?? 三、創建 Bucket(存儲桶) ?? 四、上傳對象 ?? 五、下載對象 ?? 六、列出對象列表 ??? 七、刪除對象 ?? 八、總結 ?? 推薦閱讀: 隨著云原生架構的發展,對象存儲已成為…