国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

使用GPIO Zero讓GPIO變得更容易

李中宏 ? 來源:DevicePlus ? 作者:DevicePlus ? 2023-03-01 10:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

這篇文章來源于DevicePlus.com英語網站的翻譯稿。

為兒童和年輕人開發的用于GPIO控制的簡單Python

如果您有過為Raspberry Pi的GPIO 引腳編寫代碼的經驗,那么估計您已經使用過Python以及GPIO Zero模塊了,因為這是最簡單的入門方式。
但是模塊的簡單不意味著其缺乏靈活性和功能性。

GPIO Zero 完成所有工作細節的處理

GPIO Zero并不是之前Raspberry Pi上用于GPIO的Python模塊的替代品,而是構建在那些模塊之上。
GPIO使用RPi.GPIO來進行大多數操作,同時會混合使用PiGPIO和RPIO。

為什么不直接使用這些模塊?

因為GPIO Zero已經為您完成了很多工作細節的處理,您在項目中只需輸入幾行代碼就可以了。
來看一下這些代碼:
pir = MotionSensor(4)
pir.when_motion = myFunction
第一個指令表示引腳4上有一個運動傳感器,第二個指令設置了一個在傳感器產生脈沖信號時運行的函數。真的很簡單,對吧?

它是面向對象的

GPIO Zero通過為您可能連接到GPIO引腳的常見組件提供一系列配置好的類來進行工作。您可以使用這些類來創建與連接到GPIO引腳的特定組件相關聯的對象。
您在剛開始最感興趣的類應該是輸入類和輸出類,它們包括了一系列標準輸入和輸出組件。
除此之外還有其他多種類,比如用于將數據流式傳輸到其他組件的SPI類,以及您可以用來創建自己的類的基類和通用類。暫時不用為這些類的使用擔心,目前您只要知道有這些類存在就可以了。

安裝和導入GPIO Zero

GPIO Zero已經安裝在了標準Raspbian映像上。如果您使用的是Raspbian Lite,或者更特別的Linux,那么您需要對其進行安裝。
您可以使用以下指令將整個模塊導入到Python中:
import gpiozero
然后,您可以通過在類前加上“gpiozero”來對其進行引用,如下所示:
button = gpiozero.Button(11)
greenLED = gpiozero.LED(13)
pir = gpiozero.MotionSensor(15)
只導入您正在使用的特定組件所需要的類會更方便一些:
from gpiozero import Button, LED, MotionSensor
這樣,您就可以在不帶前綴的情況下對其進行引用了,如下所示:
button = Button(11)
greenLED = LED(13)
pir = MotionSensor(15)
如此一來,您的代碼就不會因為冗余信息而變得雜亂無章,從而變得更具有可讀性。

使用GPIO Zero,通過按下按鈕播放聲音

讓我們通過將按鈕連接到GPIO引腳來嘗試在壓電蜂鳴器上播放一系列聲音,感受一下GPIO Zero的使用有多么簡單。
為此,您將需要:

一個帶電源的Raspberry Pi以及一個安裝了Raspbian的SD pYYBAGPzHTCAPeTzAAAZXrMS0tI642.jpg
一個面包板

poYBAGPy0t6AI3TuAAAWaY2q8tc733.jpg

一個GPIO擴展板

poYBAGPzHXeARu3AAAApSEMweUA937.jpg

您還需要一個壓電蜂鳴器、下推式開關、幾根跨接電纜以及某種Raspberry Pi的輸入設備,例如SSH連接或者USB鍵盤和鼠標。準備好了嗎?讓我們開始吧!

連接壓電蜂鳴器

如果您的GPIO擴展板尚未連接到Raspberry Pi和面包板,請將它們連接在一起。然后將接地引腳連接到負電源軌。
您的壓電蜂鳴器應該有一根紅線和一根黑線。紅線連接到來自GPIO引腳的正電壓,黑線接地。

poYBAGPzHYWAPsplAACRmxEckW8987.jpg


我使用跨接電纜將蜂鳴器連接到面包板,您也可以直接將其插入。將蜂鳴器的黑色導線連接到負電源軌,紅色導線連接到面包板中間的某處。
現在,將面包板的這一排連接到GPIO引腳。我使用的是引腳13。

pYYBAGPzHYiAXPgtAAFCNLisIO0755.jpg

讓這個小器件尖叫起來

為此,需要打開Python解釋器。輸入:
python3
現在,我們需要為壓電蜂鳴器導入一個類,并使用它來創建一個對象。實際上有兩個類:Buzzer,只發出簡單的嗶嗶聲;以及TonalBuzzer,可以讓您改變音調。
我們將要播放幾種不同的音調,因此需要導入TonalBuzzer并將其設置為引腳13。
from gpiozero import TonalBuzzer
piezo = TonalBuzzer(13)
如果所有連接都正確,當您輸入以下內容時將會發出尖銳的聲音:
piezo.play(‘A4’)
并且在您停止程序之前將會持續下去,停止程序的代碼為:
piezo.stop()
您也可以播放其他音調的聲音!請嘗試以下指令:
piezo.play(‘C4’)
piezo.play(‘D4’)
piezo.play(‘E4’)

編寫播放一系列聲音的程序

現在讓我們把所有的指令放入同一個函數中,從而實現以不同的音調發出嗶嗶聲。我們將在一開始從time模塊中導入sleep函數,這樣就可以避免播放過快而錯過了某個聲音。
from time import sleep
現在讓我們來定義一個簡單的函數,該函數的功能是播放特定音調的蜂鳴聲一秒鐘。請記住Python對縮進很敏感。
def playTone(pitch):
piezo.play(pitch)
sleep(1)
piezo.stop()
再次按回車鍵,讓Python知道您已經完成了函數的編寫。檢查一下是否工作正常也是個不錯的主意。
playTone(‘A4’)
playTone(‘C4’)
每個指令運行后應會各自發出不同音調的嗶嗶聲。如果不是的話,請檢查輸入的內容是否正確。
現在我們可以定義另外一個便捷的函數,該函數的功能是以不同的音調播放三次嗶嗶聲。
def playTones():
playTone(‘A4’)
playTone(‘D4’)
playTone(‘E4’)
再次按下回車鍵完成該函數,然后檢查是否工作正常。
playTones()
一切正常嗎?太棒了。

與按鈕連接

剩下的工作就是連接一個按鈕并進行編程,以使其能夠控制聲音的播放。
將按鈕放置在面包板上,并跨越中心溝槽。
然后使用跨接電纜將按鈕的一個角連接到負電源軌,對角線相對的角連接到GPIO引腳,我使用的是引腳12。
現在,我們導入GPIO Zero中的Button類,并將其設置為引腳12:
from gpiozero import Button
button = Button(12)
接下來要做的就是使程序在按下按鈕時運行我們的函數。
button.when_pressed = playTones
現在按下按鈕。如果所有操作正確,此時將會播放聲音。
GPIO Zero 讓一切變得簡單
是不是很簡單?我們只用了三行代碼就配置了按鈕。
雖然表面看上去很簡單,但其實其中涉及了很多內容:上拉和下拉電阻以及高電平有效和低電平有效信號。不同的音調是使用一種被稱為“脈沖寬度調制”的技術生成的,其中引腳通過在啟動和關閉之間快速轉換來模仿模擬電壓。GPIO Zero已經完成了所有這些工作的預配置。
當您掌握了基本要領后,就可以開始嘗試進行所有這些內容了。
與此同時,敬請享受通過GPIO Zero構建和學習項目的樂趣吧!

pYYBAGPbhjqAbi1JAAAGd6_rQT0867.png

DevicePlus 編輯團隊

設備升級版適用于所有熱愛電子和機電一體化的人。


審核編輯黃宇

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

    關注

    16

    文章

    1328

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

    GPIO 的編號?”“怎么手動控制 GPIO 電平?”“為什么 GPIO 用不了?” 這些問題常常人頭疼。
    的頭像 發表于 02-01 16:55 ?2517次閱讀
    嵌入式新手必看!<b class='flag-5'>GPIO</b>調試從0到1:計算、操作、排錯全指南

    【MCU學習】GPIO詳解

    本實驗通過一個“小實驗框架 GPIO Mode Lab”,在同一個 GPIO 引腳上依次配置不同模式,并用 ADC 探頭測量電壓、同時讀取數字電平,系統化地觀察。
    的頭像 發表于 01-24 11:45 ?3550次閱讀
    【MCU學習】<b class='flag-5'>GPIO</b>詳解

    瑞芯微(EASY EAI)RV1126B GPIO使用

    1.GPIO簡介1.1硬件接線原理圖注意:雖然GPIO可以熱插拔,但在沒給底板加裝外殼保護的情況下,很容易觸碰到底板上的器件,甚至板卡附近有金屬零件很容易造成板卡短路。因此也建議在插拔
    的頭像 發表于 01-05 09:49 ?4355次閱讀
    瑞芯微(EASY EAI)RV1126B <b class='flag-5'>GPIO</b>使用

    GPIO、PWM、ADC,到底怎么區分?

    在嵌入式開發中,我們經常聽到GPIO、PWM、ADC這些術語。初學者常常搞不清楚它們的區別和用途:“它們不是都是和電平有關嗎?為什么還要分這么多種?”今天,我們就把這些基礎概念講清楚,讓你在動手開發
    的頭像 發表于 11-14 10:28 ?744次閱讀
    <b class='flag-5'>GPIO</b>、PWM、ADC,到底怎么區分?

    【EK-RA6E2開發指南】GPIO使用

    我相信大多數學習嵌入式的朋友學習單片機的第一個程序都是點燈,畢竟點燈簡單嘛,操作下GPIO即可。當然,本教程的第一個應用也從GPIO的使用開始。
    的頭像 發表于 09-23 18:13 ?3426次閱讀
    【EK-RA6E2開發指南】<b class='flag-5'>GPIO</b>使用

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

    在使用樹莓派時,你會發現Python和Scratch是許多任務(包括GPIO編程)中最常用的編程語言。但你知道嗎,你也可以使用C++進行GPIO編程,而且這樣做還有不少好處。借助WiringPi
    的頭像 發表于 08-06 15:33 ?4150次閱讀
    技能+1!如何在樹莓派上使用C++控制<b class='flag-5'>GPIO</b>?

    RK3568驅動指南|第十二篇 GPIO子系統-第130章 GPIO的調試方法

    RK3568驅動指南|第十二篇 GPIO子系統-第130章 GPIO的調試方法
    的頭像 發表于 06-03 11:32 ?1287次閱讀
    RK3568驅動指南|第十二篇 <b class='flag-5'>GPIO</b>子系統-第130章 <b class='flag-5'>GPIO</b>的調試方法

    迅為RK3568開發板驅動指南GPIO子系統GPIO子系統API函數的引入

    迅為RK3568開發板驅動指南GPIO子系統GPIO子系統API函數的引入
    的頭像 發表于 05-29 14:05 ?1014次閱讀
    迅為RK3568開發板驅動指南<b class='flag-5'>GPIO</b>子系統<b class='flag-5'>GPIO</b>子系統API函數的引入

    迅為RK3568驅動指南GPIO子系統 GPIO操作函數實驗

    迅為電子RK3568開發板驅動指南GPIO子系統 GPIO操作函數實驗
    的頭像 發表于 05-28 15:24 ?1331次閱讀
    迅為RK3568驅動指南<b class='flag-5'>GPIO</b>子系統 <b class='flag-5'>GPIO</b>操作函數實驗

    AS32X601驅動系列教程 GPIO_點亮LED詳解

    的大門。自本章開始,正式開始用代碼控制AS32x601各外設完成功能配置。 需要注意的是,AS32X601提供了8組GPIO,其中GPIOA~GPIOG寄存器操作完全一致,但在使用GPIOH的時候,寄存器列表中間少了一個32位寄存器,因此在使用過程中容易造成誤操作,我們在
    的頭像 發表于 05-23 16:14 ?756次閱讀
    AS32X601驅動系列教程 <b class='flag-5'>GPIO</b>_點亮LED詳解

    RK3568驅動指南|第十二篇 GPIO子系統-第135章 GPIO子系統與pinctrl子系統相結合實驗

    RK3568驅動指南|第十二篇 GPIO子系統-第135章 GPIO子系統與pinctrl子系統相結合實驗
    的頭像 發表于 05-23 13:47 ?1015次閱讀
    RK3568驅動指南|第十二篇 <b class='flag-5'>GPIO</b>子系統-第135章 <b class='flag-5'>GPIO</b>子系統與pinctrl子系統相結合實驗

    基于小凌派RK2206開發板:OpenHarmony如何使用IoT接口控制GPIO中斷

    1、實驗簡介本實驗將演示如何在小凌派-RK2206開發板上使用IOT庫的GPIO中斷模式,進行GPIO編程開發。例程將創建一個任務,通過配置GPIO引腳為中斷模式,實現GPIO中斷操作
    的頭像 發表于 04-21 10:39 ?1092次閱讀
    基于小凌派RK2206開發板:OpenHarmony如何使用IoT接口控制<b class='flag-5'>GPIO</b>中斷

    基于小凌派RK2206開發板:OpenHarmony如何使用IoT接口控制GPIO外設

    1、案例簡介本案例主要是如何在小凌派-RK2206開發板上使用IOT庫的GPIO接口,進行GPIO編程開發。例程將創建一個任務,通過配置GPIO引腳,實現GPIO讀寫操作。例程源代碼:
    的頭像 發表于 04-11 15:36 ?2041次閱讀
    基于小凌派RK2206開發板:OpenHarmony如何使用IoT接口控制<b class='flag-5'>GPIO</b>外設

    為什么GPIO配置總是出問題?

    在STM32開發中,GPIO(通用輸入輸出)配置看似簡單,但在實際開發中,很多人常常會遇到這些困惑:明明按照教程配置了GPIO,為什么LED燈就是不亮?為什么有時候按鍵無法響應,或者響應很慢
    的頭像 發表于 04-07 11:59 ?1728次閱讀
    為什么<b class='flag-5'>GPIO</b>配置總是出問題?

    單片機學習之GPIO

    今日分享如何通過手冊理解單片機IO知識點含義解釋:1.GPIO:同我們常說的IO口一樣,GeneralPurposeInputOutput(通用輸入/輸出)簡稱為GPIO,每個GPIO端口可通過軟件
    發表于 03-26 14:53 ?0次下載