色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

基于RT-Thread開發電子魔方實現功能

RTThread物聯網操作系統 ? 來源:RTThread物聯網操作系統 ? 作者:tobot ? 2022-07-15 11:31 ? 次閱讀

一、應用背景


魔方,又叫魯比克方塊(Rubik’s Cube),是匈牙利布達佩斯建筑學院厄爾諾·魯比克教授發明的機械益智玩具,由若干個積木塊組成,積木塊之間通過卡榫契合,能做到“組”的相對位置改變,從而構成各種形狀的花紋,基本的玩法就是通過旋轉,打散各面色塊后用最快速度還原。魔方的設計初衷是用來認識空間組成和結構的教具,后來成為風靡全球的玩具,形狀從原始的正方體發展出球型、鉆石型、粽子型等異形,階數從最早的三階擴充到三十階以上。

魔方競賽也成為國際比賽項目,通過世界魔方協會比賽的認證成績甚至可以記載入世界紀錄當中。

傳統魔方采用物理結構契合,高階魔方使用時旋轉次數多,要求速度快、精度高,很容易磨損導致性能下降無法使用(我自己就有一天玩壞一個高階魔方的經歷)。基于此,試圖將魔方功能“電子”化,減少機械磨損。

二、實現功能


本設計分為兩個部分:電子魔方和GUI。

電子魔方基于RT-Thread開發,使用N32G457驅動WS2812板,通過點亮WS2812燈珠,實現魔方轉動效果。本次開發所用WS2812板為8*8的板卡,共用了5塊,搭成正方體形狀(留出底面),共計320顆燈珠,用于模擬一個8階魔方。


GUI為純軟件開發,在電腦上運行,可以通過鼠標或鍵盤操作,實現魔方的轉動。為配合電子魔方,設計了界面,8階魔方共有24個方向可轉動(反向可以通過旋轉3次實現),設計24個按鈕,由于高階魔方還原難度較高,因此還預留了“一鍵還原”功能。


a744d104-0365-11ed-ba43-dac502259ad0.png
圖四 GUI

三、開發板和RT-Thread使用情況概述

使用N32G45XVL-STB開發板,該開發板MCU芯片型號為國民技術的N32G457VEL7,LQFP100管腳封裝,板卡把所有GPIO都引出連接到J1,J2和J12插針上,非常便于開發和調試,但在本項目中,僅使用了PA7(SPI0的MOSI接口)。

a75300f8-0365-11ed-ba43-dac502259ad0.jpg
圖五 N32G45XVL-STB開發板

安裝的RT-Thread Studio,版本: 2.1.5(構建ID: 202201191915),其上已經自帶了RT-Thread模塊,直接從SDK中拖取了Nations的n32g45xvl-stb板,并使能了其SPI功能,所用SPI為SPI0。


用于呈現的WS2812,采用購買的88模塊成品,自己拼裝成立方體,考慮到底面沒有人會去看,因此直接空出來。


WS2812的實現原理比較簡單,就是通過輸入特定長度的高低電平,驅動若干顆燈珠,每個顏色比特傳輸數據需要1.25us,可以略微超頻(甚至有的datasheet中表示可以超頻600ns,實測做不到的),在本項目中,采用的是SPI驅動,將其設置為1.2us/顏色比特使用,分別通過SPI傳輸ffc0、f000作為其0、1碼表示。


a75fff42-0365-11ed-ba43-dac502259ad0.jpg
圖六 WS2812的datasheet

四、硬件框架

其硬件結構非常簡單,采用5塊88的WS2812燈板串接作為輸出,將其搭建成立體形狀,串接各面的板和板之間串接順序為頂、前、右、后、左,在平面展開圖中,每塊燈板上的燈珠的順序為從左到右,從上到下依次遞增,共320顆,在最初設計和調試時,使用了外部供電,后省略,直接由板上的5V從USB接口取電。大致框架如下:


a774ad34-0365-11ed-ba43-dac502259ad0.jpg
圖七 硬件框架示意圖


五、軟件框架


由于上位機和下位機分別開發,上位機所用語言為python,基于windows環境運行(理論上移植linux也很簡單),下位機使用c開發,在N32開發板上運行,其操作/執行流程如下:


a78400ae-0365-11ed-ba43-dac502259ad0.jpg
圖八 軟件業務流程


六、軟件模塊說明


1、定義

由于本項目使用pin資源較少,因此沒有修改drv_gpio.c文件中的定義

define N32F10X_PIN_NUMBERS 64

而是直接在代碼中定義了所用的pin腳和相關資源

define SPI1_BUS_NAME “spi1”

define SPI1__DEVICE_NAME “spi10”

define SPI1_NCS_PIN 29 //PA4

如之前所述,魔方最重要的就是色塊的變化,各個時期和地方的版本雖然有所區別,但主流采用紅、黃、藍、綠、白、橙六種顏色,目前主要有兩種配色:世界版(WCA大賽所用配色)和日版(Rubik教授最初研發時的配色)。
a7944e28-0365-11ed-ba43-dac502259ad0.png
圖九 顏色要求


對于每個面具體的顏色,采用的是原色大辭典中標準色號:


a7a175a8-0365-11ed-ba43-dac502259ad0.png
圖十 標準色表


定義為:
Yellow:#ffff00
Green:#008000
Orange:#ffa500
Blue:#0000ff
Red:#ff0000
White:#ffffff


WS2812點燈采用24位色,與標準RGB不同,為GRB,因此初始六個顏色如下:
const uint32_t rgbclr[]={0xffff00,0x800000,0xa5ff00,0x0000ff,0x00ff00,0xffffff};


對于點燈采用的六個面(底面雖然不用點燈,但仍然需要存儲顏色),共計384塊,使用uint32_t格式儲存,每個數只使用其中24位,高8位空閑。


static uint32_t face[384]={0};


在本項目的硬件結構中,只需要輸出320塊(沒有底)顏色,共計15360,考慮到WS2812信號必須間隔低電平間隔,預留200個0,每次輸出的buff:
static uint8_t buff[15560]={0};

2、點燈實現函數


點燈功能實現主要包括:
1)初始化SPI接口函數int rt_hw_spi_config(void),并使用INIT_DEVICE_EXPORT(rt_hw_spi_config);將其加入板卡初始化中。在這個函數中,將SPI0速率初始為13.333MHz。
2)修改單個node的buff函數void reflush_one_node(uint16_t node),該函數的功能就是在旋轉時,修改對應的buff值,每次修改48個uint8_t,使其輸出與WS2812的單顆燈珠相符合。
3)通過SPI寫WS2812燈函數void draw_face2(void),實際上是調用spi.c中的rt_spi_send(spi,buff,sizeof(buff));寫入15560個uint8_t。

3、MSH交互功能

加入預留命令

1MSH_CMD_EXPORT(init_face,init_face);
2MSH_CMD_EXPORT(rotate_x_try,rotate_x_try<0-7>);
3MSH_CMD_EXPORT(rotate_y_try,rotate_y_try<0-7>);
4MSH_CMD_EXPORT(rotate_z_try,rotate_z_try<0-7>);

分別用于調用初始化方塊函數void init_face(void)、旋轉x軸函數static void rotate_x_try(int argc, charargv)、旋轉y軸函數static void rotate_y_try(int argc, charargv)、旋轉z軸static void rotate_z_try(int argc, char**argv)。

七、其它

作品圖片


a7b6dfba-0365-11ed-ba43-dac502259ad0.jpg
a7cc7208-0365-11ed-ba43-dac502259ad0.jpg

視頻效果

https://v.youku.com/v_show/id_XNTg1MzE3NDQxMg==.html?spm=a2hcb.profile.app.5~5!2~5~5!3~5!2~5~5~A

代碼地址

https://gitee.com/tobottest/rubiks-cube

原文標題:【N32G457】基于RT-Thread和N32G457的高階魔方

文章出處:【微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。

審核編輯:彭靜

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

    關注

    0

    文章

    4

    瀏覽量

    6056
  • RT-Thread
    +關注

    關注

    31

    文章

    1296

    瀏覽量

    40241
  • MCU芯片
    +關注

    關注

    3

    文章

    253

    瀏覽量

    11557
收藏 人收藏

    評論

    相關推薦

    RT-Thread記錄(一、版本開發環境及配合CubeMX)

    RT-Thread 學習記錄的第一篇文章,RT-Thread記錄(一、RT-Thread 版本、RT-Thread Studio開發環境 及
    的頭像 發表于 06-20 00:28 ?5278次閱讀
    <b class='flag-5'>RT-Thread</b>記錄(一、版本<b class='flag-5'>開發</b>環境及配合CubeMX)

    RT-Thread的C語言編碼規范

    這是一份 RT-Thread 開發人員的開發指引。RT-Thread 做為一份開源軟件,它需要由不同的人采用合作的方式完成,這份文檔是開發
    的頭像 發表于 02-21 16:50 ?2499次閱讀

    基于RT-Thread os實現混合定位介紹

    wayz_iotkit 是上海圖趣信息科技有限公司,針對RT-thread開發的能夠實現定位功能的物聯網組件。
    的頭像 發表于 11-15 16:19 ?847次閱讀
    基于<b class='flag-5'>RT-Thread</b> os<b class='flag-5'>實現</b>混合定位介紹

    【開源分享】基于RT-Thread和N32G457的電子魔方

    數從最早的三階擴充到三十階以上。二、實現功能本設計分為兩個部分:電子魔方和GUI。電子魔方基于
    發表于 06-13 15:36

    RT-Thread編程指南

    RT-Thread編程指南——RT-Thread開發組(2015-03-31)。RT-Thread做為國內有較大影響力的開源實時操作系統,本文是RT
    發表于 11-26 16:06 ?0次下載

    RT-Thread開發,如何有效學習RT-Thread的五個步驟

    RT-Thread推出RT-Thread Inside戰略開放RT-Thread開發平臺授權合作,與硬件十萬個為什么合作首次推出第一款RT-
    的頭像 發表于 09-25 09:55 ?3.5w次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>開發</b>,如何有效學習<b class='flag-5'>RT-Thread</b>的五個步驟

    RT-Thread軟件包定義和使用

    RT-Thread軟件包是運行于RT-Thread物聯網操作系統平臺上,面向不同應用領域的通用軟件組件 。RT-Thread 同時提供了開放的軟件包平臺,為開發者提供了眾多可重用軟件包
    的頭像 發表于 05-21 11:29 ?1w次閱讀
    <b class='flag-5'>RT-Thread</b>軟件包定義和使用

    RT-Thread Studio 主要亮點功能

    RT-Thread Studio V1.1.0 快速上手體驗 RT-Thread Studio 主要包括工程創建和管理,代碼編輯,SDK管理器,RT-Thread配置,構建配置,調試配置,程序下載
    的頭像 發表于 06-19 11:45 ?5919次閱讀

    嵌入式RT-Thread應用與開發

    嵌入式RT-Thread應用與開發說明。
    發表于 04-06 14:12 ?72次下載
    嵌入式<b class='flag-5'>RT-Thread</b>應用與<b class='flag-5'>開發</b>

    RT-Thread Studio驅動SD卡

    總結前言硬件平臺:RT-Thread ART-Pi STM32H750XBH6開發板 H750開發開發軟件:RT-Thread Studi
    發表于 12-27 19:13 ?20次下載
    <b class='flag-5'>RT-Thread</b> Studio驅動SD卡

    RT-Thread AI kit開源:輕松實現一鍵部署AI模型至 RT-Thread

    RT-AK 是 RT-Thread 團隊為 RT-Thread 實時操作系統所開發的 AI 套件,能夠一鍵將 AI 模型部署到 RT-Thread
    發表于 01-25 18:18 ?3次下載
    <b class='flag-5'>RT-Thread</b> AI kit開源:輕松<b class='flag-5'>實現</b>一鍵部署AI模型至 <b class='flag-5'>RT-Thread</b>

    RT-Thread全球技術大會:RT-Thread對POSIX的實現情況介紹

    RT-Thread全球技術大會:RT-Thread對POSIX的實現情況介紹 ? ? ? ? ? ? 審核編輯:彭靜
    的頭像 發表于 05-27 16:52 ?1903次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術大會:<b class='flag-5'>RT-Thread</b>對POSIX的<b class='flag-5'>實現</b>情況介紹

    RT-Thread學習筆記 RT-Thread的架構概述

    的種種優越之處。RT-Thread 是一款完全由國內團隊開發維護的嵌入式實時操作系統(RTOS),具有完全的自主知識產權。經過 16 個年頭的沉淀,伴隨著物聯網的興起,它正演變成一個功能強大、組件豐富的物
    的頭像 發表于 07-09 11:27 ?4572次閱讀
    <b class='flag-5'>RT-Thread</b>學習筆記 <b class='flag-5'>RT-Thread</b>的架構概述

    RT-Thread文檔_RT-Thread 簡介

    RT-Thread文檔_RT-Thread 簡介
    發表于 02-22 18:22 ?5次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 簡介

    RT-Thread文檔_RT-Thread SMP 介紹與移植

    RT-Thread文檔_RT-Thread SMP 介紹與移植
    發表于 02-22 18:31 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> SMP 介紹與移植
    主站蜘蛛池模板: 伊人久久中文大香线蕉综合| 欧美精品色视频| 夜月视频直播免费观看| 欧美性猛交xxxxxxxx软件| 国产亚洲999精品AA片在线爽| 中文字幕亚洲欧美在线视频| 三级在线网址| 美女视频黄色的| 国内精品人妻无码久久久影院蜜桃| 99热久久精品国产一区二区| 亚洲无吗视频| 翁熄性放纵交换01| 日本wwwxx| 男男女女爽爽爽视频免费| 精品精品国产yyy5857香蕉| 国产成人高清视频| a视频在线观看| 最近中文字幕mv手机免费高清| 亚洲 中文 自拍 无码| 肉动漫3D卡通无修在线播放| 男人和女人一起愁愁愁很痛| 久久国产亚洲精品AV麻豆| 国产女人91精品嗷嗷嗷嗷| 哺乳溢出羽月希中文字幕| 91精品视频网站| 野花日本免费完整版高清版动漫| 王晶经典三级| 日日噜噜夜夜爽爽| 欧美 亚洲 日韩 在线综合| 久久久久久久电影| 国产在线精品亚洲二品区| 攻把受做哭边走边肉楼梯PLAY| a视频在线观看| 9久久免费国产精品特黄| 综合激情区视频一区视频二区| 亚洲精品久久久久久偷窥| 素人约啪第五季| 手机在线观看毛片| 世界上第一个得抑郁症的人是谁| 人人插人人射| 欧美xxx性|