chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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 項(xiàng)目群工作委員會觀點(diǎn))

唐佐林

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

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

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

為了實(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 輸出高電平                                   # 即:點(diǎn)亮 GPIO_7 上的 LED 燈                                                                                                                                                                while True:                                                          os.sleep(1)    # 休眠 1 秒                                                                                                              gpio.gpio_deinit()#清理GPIO環(huán)境

在這里給大家做一點(diǎn)點(diǎ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 號引腳輸出高電平,點(diǎn)亮 LED 燈。

如果只是單純的通過代碼點(diǎn)亮一個 LED 燈,是真的不難,但也是真的挺無聊。所以,再給大家一個稍微復(fù)雜一點(diǎn)的示例:通過開關(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 用于實(shí)現(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)迫不及待想要動手實(shí)戰(zhàn),體驗(yàn)一下 Python 操作外設(shè)的快感了。

操作步驟

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

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

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

注意事項(xiàng)

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

路徑:

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

配置:

CONFIG_I2C_SUPPORT=y

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

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

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

    關(guān)注

    58

    文章

    4888

    瀏覽量

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

    關(guān)注

    3

    文章

    1112

    瀏覽量

    52038
  • OpenHarmony
    +關(guān)注

    關(guān)注

    33

    文章

    3977

    瀏覽量

    21365

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    RK3576 單板機(jī) C/Python/MQTT 應(yīng)用開發(fā)手冊(二)

    本文為創(chuàng)龍科技RK3576 單板機(jī)應(yīng)用開發(fā)指南,包含開發(fā)環(huán)境配置、GDB 調(diào)試、外設(shè)控制(LED/CAN/ 串口)、Python
    的頭像 發(fā)表于 04-21 10:43 ?94次閱讀
    RK3576 單板機(jī) C/<b class='flag-5'>Python</b>/MQTT 應(yīng)用<b class='flag-5'>開發(fā)</b>手冊(二)

    RK3576 單板機(jī) C/Python/MQTT 應(yīng)用開發(fā)手冊(一)

    本文為創(chuàng)龍科技RK3576 單板機(jī)應(yīng)用開發(fā)指南,包含開發(fā)環(huán)境配置、GDB 調(diào)試、外設(shè)控制(LED/CAN/ 串口)、Python
    的頭像 發(fā)表于 04-20 13:55 ?303次閱讀
    RK3576 單板機(jī) C/<b class='flag-5'>Python</b>/MQTT 應(yīng)用<b class='flag-5'>開發(fā)</b>手冊(一)

    Visionfive開發(fā)板通過gpio控制led燈

    鼠標(biāo)來控制它了,我選擇在電腦上通過 ssh 開控制它。 如何通過 gpio 控制 LED 燈? 通過這個網(wǎng)頁,我們可以了解到這塊板子
    發(fā)表于 04-01 06:10

    昉·星光開發(fā)板使用基礎(chǔ)和GPIO點(diǎn)燈

    在這次課程中,我們學(xué)習(xí)了昉·星光開發(fā)板的硬件,及RISC-V版本Ubuntu系統(tǒng)的安裝和基礎(chǔ)使用。然后,我們又學(xué)習(xí)了使用shell命令控制LED,使用Python程序控制LED。
    發(fā)表于 03-26 07:51

    基于凌羽派的OpenHarmony北向應(yīng)用開發(fā):Hello World 示例應(yīng)用

    本示例是基于OpenHarmony開發(fā)的第一個簡單應(yīng)用,用于展示如何創(chuàng)建、構(gòu)建和部署一個基本的應(yīng)用程序。環(huán)境配置如下所示:API:18SDK:OpenHarmony-v5.
    的頭像 發(fā)表于 02-25 10:23 ?345次閱讀
    基于凌羽派的<b class='flag-5'>OpenHarmony</b>北向應(yīng)用<b class='flag-5'>開發(fā)</b>:Hello World 示例應(yīng)用

    安裝 Python VisionFive_GPIO失敗是哪里出了問題?

    盡管按照最新的文檔,我在安裝 VisionFive.gpio 包時仍然收到錯誤 sudo apt 安裝 libxml2-dev libxslt-dev python3 -m pip 安裝請求
    發(fā)表于 02-11 06:13

    嵌入式新手必看!GPIO調(diào)試從0到1:計算、操作、排錯全指南

    在嵌入式開發(fā)中,GPIO(通用輸入輸出口)是最基礎(chǔ)也最常用的硬件接口 —— 小到控制一顆 LED 亮滅、讀取一個按鍵狀態(tài),大到驅(qū)動傳感器、控制外設(shè)
    的頭像 發(fā)表于 02-01 16:55 ?4165次閱讀
    嵌入式新手必看!<b class='flag-5'>GPIO</b>調(diào)試從0到1:計算、操作、排錯全指南

    【原創(chuàng)】OpenHarmony系統(tǒng)投屏工具軟件 - OpenHarmony_OHScrcpy使用推薦

    Android平臺的scrcpy投屏工具。它能夠?qū)?b class='flag-5'>OpenHarmony設(shè)備的屏幕實(shí)時鏡像到計算機(jī),并提供設(shè)備控制功能。 實(shí)現(xiàn)原理框圖 計算機(jī)側(cè)(客戶端) :基于
    發(fā)表于 01-22 18:34

    #OpenHarmony 開發(fā)環(huán)境準(zhǔn)備

    OpenHarmony
    視美泰
    發(fā)布于 :2026年01月16日 09:44:31

    開發(fā)者必備:嵌入式常用外設(shè)接口電路參考指南

    在嵌入式開發(fā)中,硬件接口電路設(shè)計是每位工程師都繞不開的環(huán)節(jié)。不同的外設(shè)接口有各自的電氣特性和設(shè)計要求,理解常見接口的參考電路可以讓你的開發(fā)更穩(wěn)健,避免調(diào)試時反復(fù)踩坑。今天,我們整理了MCU常用
    的頭像 發(fā)表于 01-09 19:03 ?912次閱讀
    <b class='flag-5'>開發(fā)</b>者必備:嵌入式常用<b class='flag-5'>外設(shè)</b>接口電路參考指南

    觸覺智能RK3576開發(fā)OpenHarmony開源鴻蒙系統(tǒng)USB控制傳輸功能示例

    本文介紹OpenHarmony開源鴻蒙系統(tǒng)的USB控制傳輸功能實(shí)現(xiàn)及相關(guān)代碼示例,基于觸覺智能RK3576開發(fā)板PurplePiOH2演示。OpenHarmony的USB通信介紹實(shí)現(xiàn)
    的頭像 發(fā)表于 09-30 16:31 ?1826次閱讀
    觸覺智能RK3576<b class='flag-5'>開發(fā)</b>板<b class='flag-5'>OpenHarmony</b>開源鴻蒙系統(tǒng)USB<b class='flag-5'>控制</b>傳輸功能示例

    技能+1!如何在樹莓派上使用C++控制GPIO?

    和PiGPIO等庫,C++可用于編程控制樹莓派的GPIO引腳。它提供了更好的性能和控制能力,非常適合對速度和精度要求較高的硬件項(xiàng)目。在樹莓派社區(qū)中,關(guān)于“Python
    的頭像 發(fā)表于 08-06 15:33 ?4513次閱讀
    技能+1!如何在樹莓派上使用C++<b class='flag-5'>控制</b><b class='flag-5'>GPIO</b>?

    【BPI-CanMV-K230D-Zero開發(fā)板體驗(yàn)】+燈效控制Python編程

    ,在學(xué)習(xí)Python編程的基礎(chǔ)上通過GPIO來實(shí)現(xiàn)LED燈的控制。 在開發(fā)板上,僅有的2個可供GPIO
    發(fā)表于 06-27 17:33

    AS32X601驅(qū)動系列教程 GPIO_點(diǎn)亮LED詳解

    在嵌入式開發(fā)的奇妙旅程中,GPIO(通用輸入輸出接口)作為芯片與外部世界交互的重要橋梁,扮演著不可或缺的角色。從簡單的 LED 燈控制,到復(fù)雜的外設(shè)通信,
    的頭像 發(fā)表于 05-23 16:14 ?920次閱讀
    AS32X601驅(qū)動系列教程 <b class='flag-5'>GPIO</b>_點(diǎn)亮LED詳解

    是否有辦法標(biāo)準(zhǔn)Windows驅(qū)動程序控制GPIO嗎?

    問題。 CY7C65213-28PVXI 的 GPIO 控制使用“cyusbserial.dll”執(zhí)行 由CYPRESS?提供, 但我發(fā)現(xiàn)該 dll 不能與標(biāo)準(zhǔn) Windows 驅(qū)動程序一起使用。 您能告訴我是否有辦法
    發(fā)表于 05-08 07:05