0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

用Python完成鴻蒙開發(fā)板外設(shè)控制

OpenHarmony技術(shù)社區(qū) ? 來(lái)源:鴻蒙技術(shù)社區(qū) ? 作者:唐佐林 ? 2021-09-28 09:22 ? 次閱讀

話說(shuō)很久以前,我將 MicroPython 的解釋器給“挖”了出來(lái),然后做了適配,成功運(yùn)行于鴻蒙設(shè)備(Hi3861)之上。

詳見前一篇帖子:《使用 Python 開發(fā)鴻蒙設(shè)備程序(0-初體驗(yàn))》

然而,這在本質(zhì)上也就只是一件裝酷的事,除了寫個(gè) Hello World 體驗(yàn)資源受限設(shè)備上的 Python 語(yǔ)言程序設(shè)計(jì)之外,基本一無(wú)是處。..。..

為了實(shí)現(xiàn)最初的夢(mèng)想:通過 Python 降低鴻蒙設(shè)備開發(fā)的門檻。最近我又開始躁動(dòng)起來(lái),大刀闊斧的在之前工作的基礎(chǔ)上做了 Python SDK 的設(shè)計(jì)和開發(fā)。終于,現(xiàn)在可以直接用 Python 來(lái)控制鴻蒙開發(fā)板外設(shè)了。

我之前的帖子《《《鴻蒙開發(fā)板外設(shè)控制》》直播圖文版(2020.10.28)》中涉及的案例都可以用 Python 完成!

大家看完這篇帖子后,可以嘗試使用 C 和 Python 來(lái)實(shí)現(xiàn)相同的功能,體會(huì)一下不同。

OK!我們進(jìn)入正題,直接上 Python 代碼學(xué)習(xí)!

在這里給大家做一點(diǎn)點(diǎn)概念上的科普,幫助大家更好的理解代碼。GPIO(General Purpose Input/Output)即:通用型輸入輸出的簡(jiǎn)稱。

其物理表現(xiàn)形式為:可接收或輸出電信號(hào)的引腳,使用者可根據(jù)需要將其作為輸入(GPI)或輸出(GPO)使用。并且, 一般情況下,開發(fā)板上都有多個(gè) GPIO 引腳供使用。

當(dāng) GPIO 作為輸出使用時(shí),輸出的電信號(hào)為高電平(1)或者低電平(0),因此,只要在電路上稍加設(shè)計(jì)就可以接入外設(shè)(如:LED 燈,電動(dòng)機(jī),等),并通過程序控制外設(shè)的狀態(tài)。

有了這些概念之后,上面的示例的代碼理解起來(lái)就簡(jiǎn)單了!無(wú)非就是將 LED 燈(一種外設(shè))接入第 7 號(hào) GPIO 引腳,并通過程序設(shè)置第 7 號(hào)引腳輸出高電平,點(diǎn)亮 LED 燈。

如果只是單純的通過代碼點(diǎn)亮一個(gè) LED 燈,是真的不難,但也是真的挺無(wú)聊。所以,再給大家一個(gè)稍微復(fù)雜一點(diǎn)的示例:通過開關(guān)控制 LED 燈的狀態(tài)。

“Show me the code!”

這個(gè)示例看起來(lái)挺嚇人的,比上一個(gè)示例復(fù)雜了一些。然而,本質(zhì)卻依舊是 GPIO 外設(shè)控制。

硬件連接上,第 11 號(hào) GPIO 引腳接入了一個(gè)按鍵,其目的是接收按鍵的信號(hào),既然是接收信號(hào)那么顯然 GPIO 基本功能應(yīng)該設(shè)置為“輸入”(與連接 LED 的第 7 號(hào) GPIO 基本功能設(shè)置相反)。

并且,將初始狀態(tài)設(shè)置為高電平(pull up)態(tài),當(dāng)引腳電平從高電平轉(zhuǎn)為低電平(按鍵被按下)時(shí)觸發(fā)中斷。

最后,設(shè)置中斷觸發(fā)后調(diào)用的函數(shù)為 button_callback,當(dāng)這個(gè)函數(shù)被調(diào)用時(shí)會(huì)通過 GPIO_7 改變外接 LED 燈的狀態(tài)。

整個(gè)過程如下圖所示:

相信大家已經(jīng)迫不及待想要?jiǎng)邮謱?shí)戰(zhàn),體驗(yàn)一下 Python 操作外設(shè)的快感了。

OK!方法如下:

下載附件中的 libdtpython.a 并存儲(chǔ)到 /code/vendor/hisi/hi3861/hi3861/build/libs。

編寫 Python 代碼并使用工具 Txt2CStr.exe 轉(zhuǎn)換為 C 數(shù)組。

將轉(zhuǎn)換后的代碼加入附件中的 demo 工程中編譯并執(zhí)行。

注意:

由于在 Python 中提供了 i2c 相關(guān)接口,因此,需要改動(dòng)文件 user_config.mk

路徑:/code/vendor/hisi/hi3861/hi3861/build/config/usr_config.mk

配置:CONFIG_I2C_SUPPORT=y

代碼已經(jīng)開源,記得給個(gè)星星哦!

https://gitee.com/delphi-tang/python-for-hos

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6609

    瀏覽量

    123026
  • python
    +關(guān)注

    關(guān)注

    54

    文章

    4758

    瀏覽量

    84289
  • 鴻蒙系統(tǒng)
    +關(guān)注

    關(guān)注

    183

    文章

    2632

    瀏覽量

    66048

原文標(biāo)題:用Python控制鴻蒙開發(fā)板,YYDS!

文章出處:【微信號(hào):gh_834c4b3d87fe,微信公眾號(hào):OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    瑞芯微RK3566鴻蒙開發(fā)板Android11修改第三方輸入法為默認(rèn)輸入法

    本文適用于觸覺智能所有支持Android11系統(tǒng)的開發(fā)板修改第三方輸入法為默認(rèn)輸入法。本次使用的是觸覺智能的Purple Pi OH鴻蒙開源主板,搭載了瑞芯微RK3566芯片,類樹莓派設(shè)計(jì),是Laval官方社區(qū)主薦的一款鴻蒙
    的頭像 發(fā)表于 09-24 09:43 ?233次閱讀
    瑞芯微RK3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)板</b>Android11修改第三方輸入法為默認(rèn)輸入法

    瑞芯微RK3566鴻蒙開發(fā)板OpenHarmony標(biāo)準(zhǔn)系統(tǒng)應(yīng)用兼容性測(cè)試指導(dǎo)

    本文OpenHarmony標(biāo)準(zhǔn)系統(tǒng)應(yīng)用兼容性測(cè)試指導(dǎo),適用鴻蒙系統(tǒng)軟件開發(fā)測(cè)試的新手入門學(xué)習(xí)課程,設(shè)備為觸覺智能的瑞芯微RK3566開發(fā)板,型號(hào)Purple Pi OH。是Laval官方社區(qū)主薦的一款
    的頭像 發(fā)表于 09-10 11:56 ?227次閱讀
    瑞芯微RK3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)板</b>OpenHarmony標(biāo)準(zhǔn)系統(tǒng)應(yīng)用兼容性測(cè)試指導(dǎo)

    單片機(jī)STM32可以Python寫嗎?可以的開發(fā)板有哪些?

    可以使用Python進(jìn)行開發(fā),并分析市面上支持Python開發(fā)的單片機(jī)及開發(fā)板。首先,傳統(tǒng)的STM32單片機(jī)主要使用C語(yǔ)言或匯編語(yǔ)言進(jìn)行
    的頭像 發(fā)表于 09-05 08:00 ?1339次閱讀
    單片機(jī)STM32可以<b class='flag-5'>用</b><b class='flag-5'>Python</b>寫嗎?可以的<b class='flag-5'>開發(fā)板</b>有哪些?

    linux開發(fā)板和單片機(jī)開發(fā)的區(qū)別

    硬件架構(gòu) Linux開發(fā)板和單片機(jī)開發(fā)在硬件架構(gòu)上有很大的區(qū)別。Linux開發(fā)板通常基于ARM、x86或其他處理器架構(gòu),具有較高的處理能力和內(nèi)存容量。而單片機(jī)開發(fā)則基于微
    的頭像 發(fā)表于 08-30 15:30 ?446次閱讀

    鴻蒙OpenHarmony開發(fā)板解析:【芯片解決方案】

    芯片解決方案是指基于某款開發(fā)板的完整解決方案,包含驅(qū)動(dòng)、設(shè)備側(cè)接口適配、開發(fā)板sdk等。
    的頭像 發(fā)表于 05-10 15:42 ?1061次閱讀
    <b class='flag-5'>鴻蒙</b>OpenHarmony<b class='flag-5'>開發(fā)板</b>解析:【芯片解決方案】

    鴻蒙OpenHarmony南向:【Hi3861開發(fā)板介紹】

    Hi3861開發(fā)板是一片大約2cm*5cm大小的開發(fā)板,是一款高度集成的2.4GHz WLAN SoC芯片,集成IEEE 802.11b/g/n基帶和RF(Radio Frequency)電路。支持,并配套提供開放、易用的開發(fā)
    的頭像 發(fā)表于 05-06 17:19 ?838次閱讀
    <b class='flag-5'>鴻蒙</b>OpenHarmony南向:【Hi3861<b class='flag-5'>開發(fā)板</b>介紹】

    鴻蒙OpenHarmony【標(biāo)準(zhǔn)系統(tǒng) 運(yùn)行】(基于RK3568開發(fā)板

    燒錄完成重啟開發(fā)板后,系統(tǒng)將會(huì)自動(dòng)啟動(dòng)。開發(fā)板附帶的屏幕呈現(xiàn)以下界面,表明系統(tǒng)已運(yùn)行成功。
    的頭像 發(fā)表于 05-06 15:38 ?396次閱讀
    <b class='flag-5'>鴻蒙</b>OpenHarmony【標(biāo)準(zhǔn)系統(tǒng) 運(yùn)行】(基于RK3568<b class='flag-5'>開發(fā)板</b>)

    鴻蒙OpenHarmony【標(biāo)準(zhǔn)系統(tǒng) 運(yùn)行】 (基于RK3568開發(fā)板

    燒錄完成重啟開發(fā)板之后,系統(tǒng)將會(huì)自動(dòng)啟動(dòng)……
    的頭像 發(fā)表于 04-25 15:56 ?674次閱讀
    <b class='flag-5'>鴻蒙</b>OpenHarmony【標(biāo)準(zhǔn)系統(tǒng) 運(yùn)行】 (基于RK3568<b class='flag-5'>開發(fā)板</b>)

    OpenHarmony開發(fā)實(shí)例:【鴻蒙.bin文件燒錄】

    如何使用HiBurn工具燒錄鴻蒙的.bin文件到Hi3861開發(fā)板
    的頭像 發(fā)表于 04-14 09:54 ?346次閱讀
    OpenHarmony<b class='flag-5'>開發(fā)</b>實(shí)例:【<b class='flag-5'>鴻蒙</b>.bin文件燒錄】

    ELF 1技術(shù)貼|如何將Python3.6.9移植到開發(fā)板

    在ELF1開發(fā)板的Linux4.1.15eMMC鏡像中,默認(rèn)預(yù)裝了Python2.7。為了適應(yīng)更多應(yīng)用場(chǎng)景,有些小伙伴可能需要移植其他版本的Python,下面將以Python3.6.9
    的頭像 發(fā)表于 02-22 14:06 ?371次閱讀
    ELF 1技術(shù)貼|如何將<b class='flag-5'>Python</b>3.6.9移植到<b class='flag-5'>開發(fā)板</b>上

    盤點(diǎn)那些硬件+項(xiàng)目學(xué)習(xí)套件:Hi3861鴻蒙開發(fā)板及入門常見問題解答

    防、智能辦公等方向,非常適合于競(jìng)賽項(xiàng)目的創(chuàng)新拓展,敬請(qǐng)期待。 ▋常見問題 1.學(xué)校搞畢設(shè),這個(gè)板子學(xué)起來(lái)難不難? 答:不難的。Hi3861鴻蒙開發(fā)板的整個(gè)學(xué)習(xí),因?yàn)椴⒉惶婕暗讓哟a,且我們配套
    發(fā)表于 02-01 16:55

    itop-RK3588開發(fā)板機(jī)器視覺開發(fā)OpenCV-Python的安裝

    itop-RK3588開發(fā)板機(jī)器視覺開發(fā)OpenCV-Python的安裝
    的頭像 發(fā)表于 01-26 15:18 ?3851次閱讀
    itop-RK3588<b class='flag-5'>開發(fā)板</b>機(jī)器視覺<b class='flag-5'>開發(fā)</b>OpenCV-<b class='flag-5'>Python</b>的安裝

    鴻蒙設(shè)備-開發(fā)板基礎(chǔ)學(xué)習(xí)(BearPi-HM Micro)

    theme: minimalism 每當(dāng)學(xué)習(xí)一門新的編程語(yǔ)言或者上手一款新的開發(fā)板,在學(xué)習(xí)鴻蒙設(shè)備開發(fā)過程中,帶大家寫的第一個(gè)程序,通過這個(gè)程序,我們可以對(duì)鴻蒙設(shè)備
    發(fā)表于 01-08 21:54

    利用星閃BS25開發(fā)板NL001測(cè)試官方sdk中的外設(shè)程序uart

    本文利用星閃BS25開發(fā)板NL001測(cè)試一下官方sdk中的外設(shè)程序uart,以便熟悉外設(shè)的基本操作。
    的頭像 發(fā)表于 01-02 11:30 ?2641次閱讀
    利用星閃BS25<b class='flag-5'>開發(fā)板</b>NL001測(cè)試官方sdk中的<b class='flag-5'>外設(shè)</b>程序uart

    利用星閃BS25開發(fā)板NL001測(cè)試SDK中外設(shè)程序

    本文利用星閃BS25開發(fā)板NL001測(cè)試一下官方sdk中的外設(shè)程序,以便熟悉外設(shè)的基本操作。
    的頭像 發(fā)表于 12-22 10:49 ?1920次閱讀
    利用星閃BS25<b class='flag-5'>開發(fā)板</b>NL001測(cè)試SDK中<b class='flag-5'>外設(shè)</b>程序