在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

怎么用Python開發(fā)OpenHarmony設(shè)備程序-GPIO外設(shè)控制

OpenAtom OpenHarmony ? 來源:OpenAtom OpenHarmony ? 作者:唐佐林 ? 2021-11-18 10:33 ? 次閱讀

(以下內(nèi)容來自嘉賓分享,不代表 OpenHarmony 項目群工作委員會觀點)

唐佐林

Python SIG Leader、狄泰軟件訓(xùn)練營創(chuàng)始人

軟件架構(gòu)師、視覺算法工程師

之前,我將 MicroPython 的解釋器給“挖”了出來,然后做了適配,成功運(yùn)行于 OpenHarmony 設(shè)備(Hi3861)之上(詳見前一篇帖子:《用Python開發(fā)OpenHarmony設(shè)備程序-初體驗》

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

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

import gpio  # 導(dǎo)入 gpio 模塊                                            import os    # 導(dǎo)入 os 模塊                                                                                                         led = 7            # GPIO_7 連接了一個 LED 燈                                                                                                                                                                                                                                                                               gpio.gpio_init()   # 初始化系統(tǒng) GPIO 環(huán)境                                                                                                  func = gpio.query_func_value(led, 'gpio')  # 查找 GPIO_7 目標(biāo)功能編號                                                         # 'gpio' 指基本輸入輸出功能                                             gpio.set_func(led, func)           # 設(shè)置 GPIO_7 為基本輸入輸出                        gpio.set_dir(led, gpio.dir_out)    # 設(shè)置 GPIO_7 作為輸出使用gpio.set_output(led, 1)            # 設(shè)置 GPIO_7 輸出高電平                                   # 即:點亮 GPIO_7 上的 LED 燈                                                                                                                                                                while True:                                                          os.sleep(1)    # 休眠 1 秒                                                                                                              gpio.gpio_deinit()#清理GPIO環(huán)境

在這里給大家做一點點概念上的科普,幫助大家更好的理解代碼。GPIO(General Purpose Input/Output)即:通用型輸入輸出的簡稱,其物理表現(xiàn)形式為:可接收或輸出電信號的引腳,使用者可根據(jù)需要將其作為輸入(GPI)或輸出(GPO)使用。并且, 一般情況下,開發(fā)板上都有多個 GPIO 引腳供使用。當(dāng) GPIO 作為輸出使用時,輸出的電信號為高電平(1)或者低電平(0),因此,只要在電路上稍加設(shè)計就可以接入外設(shè)(如:LED燈,電動機(jī),等),并通過程序控制外設(shè)的狀態(tài)。有了這些概念之后,上面的示例的代碼理解起來就簡單了!無非就是將 LED 燈(一種外設(shè))接入第 7 號 GPIO 引腳,并通過程序設(shè)置第 7 號引腳輸出高電平,點亮 LED 燈。

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

Show me the code!

import gpio                                                       import os                                                                                                                             led = 7                                                          button = 11     # GPIO_11 接入了一個按鍵                                                                                                                                    led_on = False  # 標(biāo)識 LED 燈的狀態(tài)                                                 
# 按鍵回調(diào)函數(shù)                                                                   
def button_callback(arg) :                                           cur_tick = os.get_tick()         # 獲取系統(tǒng)當(dāng)前 tick 用于實現(xiàn)按鍵防抖                                                                                               
    if cur_tick - arg[0] > 20:       # 當(dāng)時間流失量大于 20 tick 時                                         # 改變 LED 燈的狀態(tài)        global led_on                                 if led_on :                  # 當(dāng)前狀態(tài)為“打開”,則關(guān)閉 LED 燈                                        gpio.set_output(led, 0)                                          led_on = False                                                   print('LED is OFF!')                                         else :                       # 當(dāng)前狀態(tài)為“關(guān)閉”,則打開 LED 燈                              gpio.set_output(led, 1)                                         led_on = True                                                    print('LED is ON!')                                                                                                             arg[0] = cur_tick            # 記錄當(dāng)前 tick 為下次按鍵觸發(fā)做準(zhǔn)備                                

                                                                   gpio.gpio_init()                                                                                                                    func = gpio.query_func_value(led, 'gpio')                                                                                           gpio.set_func(led, func)                                         gpio.set_dir(led, gpio.dir_out)                                  gpio.set_output(led, 0)                                                                                                             func = gpio.query_func_value(button, 'gpio') # 查找 GPIO_11 目標(biāo)功能編號                                                                 # 'gpio' 指基本輸入輸出功能                      gpio.set_func(button, func)                  # 設(shè)置 GPIO_11 為基本輸入輸出                          gpio.set_dir(button, gpio.dir_in)            # 設(shè)置 GPIO_11 作為輸入使用                gpio.set_pull(button, gpio.pull_up)          # 設(shè)置 GPIO_11 的初始態(tài)為高電平                    gpio.set_isr_mode(button, gpio.fall_low)     # 設(shè)置 GPIO_11 在從高電平到低電平                                             # 轉(zhuǎn)換時觸發(fā)中斷                                             
                                             # 設(shè)置 btton_callback 為中斷觸發(fā)時會調(diào)用的函數(shù)
gpio.register_isr_func(button, button_callback, [os.get_tick()])                                                                    while True:                                                          os.sleep(1)                                                                                                                     gpio.gpio_deinit()

這個示例比上一個復(fù)雜了一些,然而,本質(zhì)卻依舊是 GPIO 外設(shè)控制。在硬件連接上,第 11 號 GPIO 引腳接入了一個按鍵,其目的是接收按鍵的信號,既然是接收信號那么顯然 GPIO 基本功能應(yīng)該設(shè)置為“輸入”(與連接 LED 的第 7 號 GPIO 基本功能設(shè)置相反)。并且,將初始狀態(tài)設(shè)置為高電平(pull up)態(tài),當(dāng)引腳電平從高電平轉(zhuǎn)為低電平(按鍵被按下)時觸發(fā)中斷。最后,設(shè)置中斷觸發(fā)后調(diào)用的函數(shù)為 button_callback,當(dāng)這個函數(shù)被調(diào)用時會通過 GPIO_7 改變外接 LED 燈的狀態(tài)。

整個過程如下圖所示:

相信大家已經(jīng)迫不及待想要動手實戰(zhàn),體驗一下 Python 操作外設(shè)的快感了。

操作步驟

下載附件中的 libdtpython.a 并存儲到 /code/vendor/hisi/hi3861/hi3861/build/libs (詳見前一篇帖子)

編寫 Python 代碼并使用工具 Txt2CStr.exe 轉(zhuǎn)換為 C 數(shù)組(詳見前一篇帖子)

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

注意事項

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

路徑:

/code/vendor/hisi/hi3861/hi3861/build/config/usr_config.mk

配置:

CONFIG_I2C_SUPPORT=y

代碼已經(jīng)開源,歡迎下載體驗!

https://gitee.com/openharmony-sig/python

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

    關(guān)注

    56

    文章

    4811

    瀏覽量

    85096
  • SDK
    SDK
    +關(guān)注

    關(guān)注

    3

    文章

    1048

    瀏覽量

    46351
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3753

    瀏覽量

    16708

原文標(biāo)題:使用Python開發(fā)OpenHarmony設(shè)備程序-GPIO外設(shè)控制

文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    GPIO使用教程 GPIO接口應(yīng)用

    GPIO(General-Purpose Input/Output,通用輸入/輸出)接口是電子設(shè)備中的一個重要組成部分,主要用于控制和讀取設(shè)備的數(shù)字信號。它通過簡單的高(1)或低(0)
    的頭像 發(fā)表于 01-31 10:10 ?370次閱讀

    迅為RK3568開發(fā)板篇OpenHarmony實操HDF驅(qū)動控制LED-接口函數(shù)

    (LED)的高低電平,從而控制 LED 燈的開關(guān)。 參數(shù):gpioGPIO 號),mode(LED 模式,開或關(guān))。 流程:設(shè)置 GPIO 為輸出方向,根據(jù) mode 設(shè)置
    發(fā)表于 01-20 10:36

    GPIO模塊與其他外設(shè)的連接方法

    在嵌入式系統(tǒng)設(shè)計中,GPIO模塊是實現(xiàn)設(shè)備與外部世界交互的關(guān)鍵接口。它們提供了一種靈活的方式來控制和監(jiān)測外部設(shè)備GPIO模塊的基本概念
    的頭像 發(fā)表于 01-09 09:48 ?297次閱讀

    樹莓派gpio有什么,樹莓派gpio接口及編程方法

    /Output,通用輸入/輸出)是樹莓派提供的一組可編程的引腳,是樹莓派與外部世界進(jìn)行交互的重要橋梁。通過GPIO,用戶可以控制外部電路,讀取外部信號,實現(xiàn)與外部電路的交互,從而開發(fā)出各種有趣且實用的電子項目。 具體來說,樹莓派
    的頭像 發(fā)表于 10-22 18:09 ?1314次閱讀

    基于ArkTS語言的OpenHarmony APP應(yīng)用開發(fā):HelloOpenharmony

    1、程序簡介該程序是基于OpenHarmony標(biāo)準(zhǔn)系統(tǒng)編寫的UI應(yīng)用類:HelloOpenHarmony。本案例是基于API9接口開發(fā)。本案
    的頭像 發(fā)表于 09-15 08:09 ?512次閱讀
    基于ArkTS語言的<b class='flag-5'>OpenHarmony</b> APP應(yīng)用<b class='flag-5'>開發(fā)</b>:Hello<b class='flag-5'>Openharmony</b>

    Openharmony軟件評估指南-米爾瑞芯微RK3568開發(fā)

    Openharmony軟件評估指南用于介紹在米爾的開發(fā)板上運(yùn)行Openharmony系統(tǒng)下的核心資源與外設(shè)資源的測試步驟與評估方法。本文可作為前期評估指南使用,也可以作為通用系統(tǒng)
    發(fā)表于 09-06 20:06

    第二屆大會回顧第25期 | OpenHarmony上的Python設(shè)備應(yīng)用開發(fā)

    Python以其簡單、易學(xué)和功能強(qiáng)大而聞名,有著廣泛的用戶群體。采用Python開發(fā)有助于降低OpenHarmony的學(xué)習(xí)門檻。如何在OpenHar
    的頭像 發(fā)表于 08-27 11:53 ?798次閱讀
    第二屆大會回顧第25期 | <b class='flag-5'>OpenHarmony</b>上的<b class='flag-5'>Python</b><b class='flag-5'>設(shè)備</b>應(yīng)用<b class='flag-5'>開發(fā)</b>

    如何在Android 10設(shè)備上通過App控制GPIO

    本文檔提供了在 Android 10 設(shè)備上通過應(yīng)用程序(App)控制通用輸入輸出(GPIO)的詳細(xì)指南。這涵蓋了從創(chuàng)建 gpio驅(qū)動到Ap
    的頭像 發(fā)表于 07-22 17:59 ?1381次閱讀

    pycharm進(jìn)行python爬蟲的步驟

    以下是使用PyCharm進(jìn)行Python爬蟲的步驟: 安裝PyCharm和Python 首先,您需要安裝PyCharm和Python。PyCharm是一個流行的Python集成
    的頭像 發(fā)表于 07-11 10:11 ?975次閱讀

    esp32的twai控制器的tx和rx可以任一gpio定義嗎?

    各位大神們好,我想請教個問題,esp32的twai控制器的tx和rx可以任一gpio定義嘛,比如要連接tja1050收發(fā)器,它的rx和tx引腳可以esp32的
    發(fā)表于 07-01 07:38

    請問esp32的twai控制器的tx和rx可以任一gpio定義嗎?

    各位大神們好,我想請教個問題,esp32的twai控制器的tx和rx可以任一gpio定義嘛,比如要連接tja1050收發(fā)器,它的rx和tx引腳可以esp32的
    發(fā)表于 06-07 06:04

    鴻蒙OpenHarmony【LED外設(shè)控制】 (基于Hi3861開發(fā)板)

    OpenHarmony WLAN模組基于Hi3861平臺提供了豐富的外設(shè)操作能力,包含I2C、I2S、ADC、UART、SPI、SDIO、GPIO、PWM、FLASH等
    的頭像 發(fā)表于 04-23 21:57 ?760次閱讀
    鴻蒙<b class='flag-5'>OpenHarmony</b>【LED<b class='flag-5'>外設(shè)</b><b class='flag-5'>控制</b>】 (基于Hi3861<b class='flag-5'>開發(fā)</b>板)

    OpenHarmony南向開發(fā)案例:【智能中控屏】

    基于Hi3516開發(fā)板,使用開源OpenHarmony開發(fā)的應(yīng)用。通過控制面板可以控制同一局域網(wǎng)內(nèi)的空調(diào),窗簾,燈等智能家居
    的頭像 發(fā)表于 04-17 16:12 ?449次閱讀
    <b class='flag-5'>OpenHarmony</b>南向<b class='flag-5'>開發(fā)</b>案例:【智能中控屏】

    OpenHarmony內(nèi)核編程實戰(zhàn)

    編程入門[Hello,OpenHarmony]在正式開始之前,對于剛接觸OpenHarmony的伙伴們,面對大篇幅的源碼可能無從下手,不知道怎么去編碼寫程序,下面一個簡單的例子帶伙伴
    的頭像 發(fā)表于 03-27 08:31 ?968次閱讀
    <b class='flag-5'>OpenHarmony</b>內(nèi)核編程實戰(zhàn)

    潤開鴻龍芯交通控制設(shè)備通過OpenHarmony兼容性測評

    近期,江蘇潤開鴻數(shù)字科技有限公司(以下簡稱“潤開鴻”)龍芯交通控制設(shè)備(HH-SCDAYU410A)通過OpenHarmony兼容性測評,成為基于“龍芯+OpenHarmony”全棧
    的頭像 發(fā)表于 02-19 12:06 ?775次閱讀
    潤開鴻龍芯交通<b class='flag-5'>控制</b>器<b class='flag-5'>設(shè)備</b>通過<b class='flag-5'>OpenHarmony</b>兼容性測評
    主站蜘蛛池模板: 成人理伦 | 日本三级电影在线观看 | 天堂在线www天堂中文在线 | 日本68xxxxxxxxx59| 日韩免费高清一级毛片在线 | 国产91小视频在线观看 | 扒开双腿爽爽爽视频www | 四虎在线观看一区二区 | 久久久午夜影院 | 国产成人精品亚洲日本在线观看 | 2017天天操 | 天天操天天草 | 鸥美三级 | 亚洲aaaa级特黄毛片 | 激情六月天婷婷 | 高h污快穿文汁水四溅 | 日韩毛片免费看 | 在线免费看片a | 好吊色37pao在线观看 | 岛国午夜精品视频在线观看 | 最新大黄网站免费 | 午夜看片网址 | 97精品伊人久久大香线蕉 | 一级一黄在线观看视频免费 | 国内免费视频成人精品 | 91在线视频免费 | 久久综合久久精品 | 免费高清特级毛片 | 无遮挡很爽很污很黄的网站w | 91九色在线视频 | 国产一级做a爱免费观看 | 91日韩精品天海翼在线观看 | 国产精品女人在线观看 | 丝袜美腿视频一区二区三区 | 亚洲美女精品 | 午夜在线观看视频在线播放版 | 婷婷色香五月激情综合2020 | 色视频在线观看在线播放 | 天天舔天天射 | 日本边添边爱边摸边做边爱 | 亚洲色图激情 |