話說(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
-
操作系統(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)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論