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

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

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

3天內不再提示

通過RPi.GPIO Python庫使用Raspberry Pi GPIO引腳

王銀喜 ? 來源:hgimtk ? 作者:hgimtk ? 2023-02-25 17:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

這篇文章來源于DevicePlus.com英語網站的翻譯稿。在2016年推出GPIO Zero之前,新用戶通常使用另一個Python模塊(RPi.GPIO)來使用GPIO引腳
使用RPi.GPIO需要學習更多的相關知識,但是事實證明花費這些精力是值得的。

為什么不直接使用GPIO Zero?

GPIO Zero并不是作為RPi.GPIO的替代品而創建的。它其實構建在RPi.GPIO之上,旨在幫助初學者能夠盡可能輕松地使用RPi.GPIO。
通過直接使用RPi.GPIO,您可以更好地了解內部的運行操作,并且為之后的項目開發出更精細的控制功能。
通過GPIO Zero的API您可以對上拉和下拉電阻、高態動作和低態動作引腳等進行修改。但是如果您過于頻繁的使用它,那么就失去GPIO在簡易性方面的優勢了。

使用RPi.GPIO的另一個原因是駭客和制造商們分享了許多使用了RPi.GPIO的很棒的項目。一旦您掌握了這個模塊,就意味著這個領域的大門將會向您敞開!
也許有一天您會想使用諸如C或C++這樣的語言。這些語言更高級一些,但是會提供更多的控制功能以及使硬件的使用更加高效的功能。使用RPi.GPIO無法讓您直接實現這個目的,但是它可以幫助您朝這個方向邁進。
目前不用擔心會消耗過多CPU周期。每個Raspberry Pi的處理能力都遠遠超過本項目所需。鏡像:Raspberry Pi。

導入RPi.GPIO庫

導入RPi.GPIO模塊的語法是:
import RPi.GPIO as GPIO
官方文檔和大多數已發布的項目都遵循該語法。如果您也使用該語句,可以直接借用他們的代碼。

RPi.GPIO 可讓您選擇引腳編號模式

有兩種對引腳進行編號的方法。您可以通過它們在GPIO接頭中的放置位置來描述這些引腳,這種方法稱為“板編號”。
您也可以通過它們連接到Raspberry Pi核心中Broadcom芯片的順序來對其進行描述。如果您覺得GPIO引腳編號與其在接頭中的位置無關,可以使用該方法。
您可以使用RPi.GPIO’s setmode函數來對這兩種編號系統進行選擇:
GPIO.setmode(GPIO.BOARD)
GPIO.setmode(GPIO.BCM)
如果在設置模式之前就分配引腳,那么Python會返回錯誤信息。
我個人更喜歡Broadcom編號模式。因為在這種模式下,哪些引腳是GPIO、接地或電源會更清晰。我還使用了GPIO擴展板來構建面包板原型,并且在該板上根據GPIO編號對每個引腳進行標記。
有人可能覺得板編號模式更容易一些。如果該模式適用于您的項目,那也很好!您可以自行選擇。
在本文的剩余部分,我們將會使用Broadcom編號模式。
如果您使用過解釋器,并且忘記了設置的是哪種模式,請使用以下指令:
GPIO.getmode()

設置及使用引腳

設置編號模式后,使用setup函數來將引腳分配為輸入或輸出引腳:
GPIO.setup(11, GPIO.OUT)
GPIO.setup(12, GPIO.IN)
對于輸入引腳,您通常需要設置一個上拉或下拉電阻來防止浮動。您可以用以下方式來設置這些電阻:
GPIO.setup(12, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(12, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
要讀取輸入引腳的當前狀態,請使用:
GPIO.input(12)
您可以使用output函數來將輸出引腳設置為高電平或低電平,如下所示:
GPIO.output(11, True)
GPIO.output(11, False)

為引腳命名

如果您將引腳編號分配給描述性命名的變量,您的代碼將更具可讀性,如下所示:
redLED = 11
button = 12
GPIO.setup(redLED, GPIO.OUT)
GPIO.setup(button, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.output(redLED, True)
GPIO.input(button)
用這種代碼可以更清楚地顯示所執行的操作,不是嗎?
您可能覺得即使不使用這些實用標簽,項目也會進行得很容易,但是最好養成這種習慣。當您需要構建更復雜的項目時,以及暫時中止正在進行的項目時,或者其他人查看您的代碼的時候,這個習慣會給您帶來很大的便利。

完成后清除

如果您保留了對這些引腳的分配設置,很容易造成意外短路從而燒壞電路板。
當腳本運行結束或者您退出解釋器時,GPIO Zero會自動進行重置。在RPi.GPIO中,我們使用以下函數:
GPIO.cleanup()
該清除函數只會對您在RPi.GPIO中分配的引腳進行重置,所以如果有另一個進程正在使用其他引腳,則不會受到干擾。
您也可以重置特定的引腳,將這些引腳作為一個參數傳遞到函數中:
GPIO.cleanup(redLED)
GPIO.cleanup([redLED, button])

使用以上設置創建一個簡單的LED序列

對于本項目,您將需要:

一個帶電源的Raspberry Pi以及一個安裝了Raspbian的SD installed
一個面包板
一個GPIO擴展板
一個綠色LED, 一個紅色LED, 以及一個黃色LED

您還需要一個可以讓您輸入指令的設備,例如SSH連接或者USB鍵盤和鼠標,幾根跨接電纜以及三個阻值在220Ω~1000Ω之間的電阻。

連接我們的紅色LED

首先,將GPIO擴展板連接到您的Raspberry Pi GPIO接頭和面包板(如果尚未連接的話)。然后使用跨接電纜將接地引腳連接到面板板底部的負電源軌。
pYYBAGPzHZeAAGGIAADTzKamKic707.png
現在連接LED。D代表的是二極管,也就是說電流只能沿一個方向通過LED。
您可以識別出應該如何連接LED,因為LED的一個引腳比另一個稍長。較長的引腳是陽極,連接到正極,較短的是陰極,連接到負極。
在這個電路中,我們將把較長的引腳—陽極—連接到GPIO引腳,把較短的引腳—陰極—連接到負電源軌。
首先將紅色LED放在您的面包板上,距離擴展板不遠。水平放置LED引腳,使陽極更靠近擴展板。然后將GPIO引腳(我使用的是引腳13)連接到陽極。
pYYBAGPzHZmAb37dAAFNXxgevxs356.png
現在使用一個電阻來將陰極連接到負電源軌。使用電阻很重要,否則LED將會使用過大的電流從而燒壞您的Raspberry Pi。
pYYBAGPzHZyAEmXeAAFPbVWndEs728.png

測試紅色LED

首先啟動Python解釋器,輸入:
python3
讓我們加載RPi.GPIO,并設置引腳編號模式,請記得Python對大小寫很敏感。
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
還記得之前為引腳編號提供實用名稱的建議嗎?在這里我們也這樣做。
redLED = 13
現在,將該引腳分配為輸出引腳,輸入以下指令:
GPIO.setup(redLED, GPIO.OUT)
如果一切連接正確,您將能夠使用以下指令來打開和關閉LED:
GPIO.output(redLED, True)
GPIO.output(redLED, False)
如果沒有正常工作,請檢查LED的連接方向是否正確,以及所有連接是否正確。也許是因為電阻線接觸不良造成電路沒有接通。

連接并測試黃色和綠色LED

在紅色LED的右側放置黃色LED。以及,再次將引腳水平放置,并使陽極更靠近擴展板。
poYBAGPzHZ-Af5v2AAEWAxFZYSY606.png
然后將跨接電纜從GPIO引腳(我使用的是引腳16)連接到黃色LED的陽極。像之前所做的那樣,使用電阻將陰極連接到負軌。
現在為該引腳命名,將其分配為輸出引腳,并且測試是否可以打開和關閉LED:
yellowLED = 16
GPIO.setup(yellowLED, GPIO.OUT)
GPIO.output(yellowLED, True)
GPIO.output(yellowLED, False)
一切正常嗎?如果不是的話,請檢查LED的方向是否正確,以及所有的連接是否正確。
接下來是綠色LED。
poYBAGPzHaKAanflAAEk3uSmn1s066.png
將它并排放置在面包板上,引腳以一定的間隔水平放置,陽極靠近擴展板。使用跨接線將陽極連接到GPIO引腳(我使用的是引腳21),然后使用一個電阻將陰極連接到負軌,接著輸入一些Python代碼:
greenLED = 21
GPIO.setup(greenLED, GPIO.OUT)
GPIO.output(greenLED, True)
GPIO.output(greenLED, False)
就是這樣!

編寫程序使LED按照順序點亮

為了防止運行得太快而看不到點亮過程,我們將會使用sleep指令,輸入:
from time import sleep
現在,讓我們將所有引腳編號放入一個可以循環遍歷的元組中:
LEDs = (redLED, yellowLED, greenLED)
最后,編寫一個for循環語句來遍歷這個元組,從而打開和關閉LED。請記住Python對縮進很敏感!
for i in range(100):
GPIO.output(LEDs[i % 3], True)
sleep(2)
GPIO.output(LEDs[i % 3], False)
再次按下回車鍵運行該循環。
如果一切正常,您將會看到LED按照順序一個接一個亮起2秒鐘。這需要花費幾分鐘來運行,您也可以按ctrl+C來結束該程序。
如果您不明白該循環的工作原理,以下鏈接可能會有所幫助:
? for 循環
? range 函數
? 取模運算(%)
pYYBAGPzHaSAZTDTAACj2KfHwaI748.jpg

清除

完成之后不要忘記清除引腳設置!輸入:
GPIO.cleanup()
您可以按ctrl+D退出解釋器。鏡像:Finished Product

這是簡單而強大的產品

您可以使用這些基本原理來完成很多事情,尤其是在加入輸入引腳之后。請繼續關注后續工作!

審核編輯:湯梓紅

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

    關注

    16

    文章

    1328

    瀏覽量

    56219
  • python
    +關注

    關注

    57

    文章

    4876

    瀏覽量

    90025
  • Raspberry Pi
    +關注

    關注

    2

    文章

    621

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

    GPIO 引腳不工作是為什么?

    我嘗試在我的 VisionFive 2 上運行幾個 Python GPIO 示例程序。我按照說明將所需的組件連接到 VisionFIVE 的 GPIO 引腳,但它們不起作用。即使簡單地
    發表于 02-04 07:35

    【MCU學習】GPIO詳解

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

    瑞芯微(EASY EAI)RV1126B GPIO使用

    確保電源已經完全切斷。GPIO的輸入/輸出電壓為3.3V,注意電平匹配,否則會損壞芯片引腳或接入設備。1.2GPIO硬件資源分布介紹gpiod:需要使用上表的【C
    的頭像 發表于 01-05 09:49 ?4356次閱讀
    瑞芯微(EASY EAI)RV1126B <b class='flag-5'>GPIO</b>使用

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

    時不再迷糊。GPIO最基礎的數字接口GPIO(GeneralPurposeInput/Output),通用輸入輸出,是MCU上最常見的引腳類型。GPIO的核心功能
    的頭像 發表于 11-14 10:28 ?744次閱讀
    <b class='flag-5'>GPIO</b>、PWM、ADC,到底怎么區分?

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

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

    如何通過上位機來控制USB3014的GPIO引腳

    我想咨詢一下,怎么通過上位機來控制usb3014的GPIO引腳呢?(只需要實現通過上位機控制USB3014的GPIO輸出是高電平 or 低電
    發表于 07-22 07:04

    如何通過 HCI 接口讀取CYW20706的 GPIO 引腳狀態?

    我想通過 HCI 接口讀取CYW20706的 GPIO 引腳狀態。我查看了文檔,沒有找到任何與讀/寫 GPIO 引腳狀態相關的內容。 請告訴
    發表于 06-30 06:23

    【龍芯2K0300蜂鳥板試用】固件更新與測試

    原理圖對于引腳復用的定義 實現 GPIO、IIC、CAN、SPI、ADC 等資源的操控,結合外部傳感器,實現各種物聯網應用。 通過系統更新后位于 /root/python_demo
    發表于 06-06 04:52

    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>操作函數實驗

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

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

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

    1、案例簡介本案例主要是如何在小凌派-RK2206開發板上使用IOTGPIO接口,進行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>配置總是出問題?