乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      樹莓派GPIO控制/使用的教程

       看見就非常 2021-02-03

      一個樹莓派小白,對GPIO的使用一無所知,不斷的在網(wǎng)上找了很多文章看,現(xiàn)在找了兩篇比較好的文章,參考并記錄在這里,供需要的人參考。

      介紹

      GPIO(General Purpose I/O Ports)意思為通用輸入/輸出端口,通過它們可以輸出高低電平或者通過它們讀入引腳的狀態(tài)(是高電平或是低電平)。
      樹莓派使用GPIO的方法有很多種,庫函數(shù)包括了wiringPi以及RPi.GPIO,這里我主要介紹RPi.GPIO庫,這個庫是樹莓派系統(tǒng)自帶的。

      使用說明

      (一)導(dǎo)入庫

      import RPi.GPIO as GPIO

      (二)設(shè)置編碼規(guī)范

      gpio.setmode(gpio.BOARD)

      這里需要解釋的是:因為要使用GPIO口,那么你得明確使用的是哪一個口(下面代碼中 pin 對應(yīng)的就是端口號),這就引入了一個編號問題,目前存在的有三種編碼規(guī)范。
      1)BOARD: 從左到右,從上到下:左邊基數(shù),右邊偶數(shù):1-40
      2)BCM:編號側(cè)重 CPU 寄存器,根據(jù) BCM2835 的 GPIO 寄存器編號
      3)wpi: 編號側(cè)重實現(xiàn)邏輯,把擴展 GPIO 端口從 0 開始編號,這種編號方便編程。
      通過一張圖我們就能看清楚

      在這里插入圖片描述

      (三)引腳設(shè)置

      # 將引腳設(shè)置為輸入模式GPIO.setup(pin, GPIO.IN)# 將引腳設(shè)置為輸出模式GPIO.setup(pin, GPIO.OUT)# 為輸出的引腳設(shè)置默認值GPIO.setup(pin, GPIO.OUT, initial=GPIO.HIGH)
      • 1

      • 2

      • 3

      • 4

      • 5

      • 6

      • 7

      • 1

      • 2

      • 3

      • 4

      • 5

      • 6

      • 7

      (四)電平控制

      GPIO.output(pin, state)

      注意:狀態(tài)(state)可以設(shè)置為低(0 / GPIO.LOW / False)或高( 1 / GPIO.HIGH / True)
      也可以一次性設(shè)置多個引腳

      pin_list = [11,12]GPIO.output(pin_list, GPIO.LOW)
      • 1

      • 1

      (五)讀取引腳的輸入狀態(tài)

      GPIO.input(pin)

      (六)釋放GPIO資源

      GPIO.cleanup()

      (七)示例代碼

      import RPi.GPIO as gpioimport time# 定義引腳,你怎么接的怎么改in1 = 12in2 = 16# 設(shè)置GPIO口為BOARD編號規(guī)范gpio.setmode(gpio.BOARD)# 設(shè)置GPIO口為輸出gpio.setup(in1, gpio.OUT)gpio.setup(in2, gpio.OUT)# 設(shè)置輸出電平gpio.output(in1, gpio.HIGH)gpio.output(in2, gpio.LOW)# 秒級延遲time.sleep(2)# 釋放GPIO資源gpio.cleanup()123456789101112131415161718123456789101112131415161718

      (八)PWM設(shè)置

      8.1 脈沖寬度調(diào)制(PWM)
        脈沖寬度調(diào)制(PWM)是一種高效的數(shù)字電壓控制技術(shù),它利用微處理器的數(shù)字輸出來對模擬電路進行控制,通過控制固定電壓的直流電源開關(guān)頻率,改變負載兩端的電壓,進而達到控制要求的一種電壓調(diào)整方法。為更好的理解和使用PWM,我們首先需要了解以下兩個概念。

      頻率

      頻率以Hz為單位,一個脈沖信號時間周期的倒數(shù)。如果PWM的輸出頻率比較低,例如只有5Hz,那么在控制一個LED時候,LED就會一閃一閃的,較高的頻率可以讓運行更為平滑,但PWM的輸出頻率并不能無限的高,而且在高頻情況下,測定的PWM頻率會與作為樹莓派參數(shù)提供的頻率略有出入。因此,在使用PWM時,應(yīng)該選擇一個合適的頻率,對于控制一個LED亮度來說,一般100Hz就足夠了。

      占空比

      占空比就是輸出的PWM脈沖信號中,高電平保持的時間與該PWM的時鐘周期的時間之比,如圖6.1所示,占空比=t1/T=t1/(t1+t2)。假設(shè)PWM脈沖的頻率為1000Hz,那么它的時鐘周期T就是1ms(即1000us),如果高電平持續(xù)時間t1為200us,低電平的時間t2為800us,那么占空比就是200:1000(即1:5)。
        在這里插入圖片描述
        從應(yīng)用的角度,我們可以簡單的將PWM理解為通過改變脈沖信號的頻率和高電平的持續(xù)時間(或占空比)來實現(xiàn)電壓控控制的一種方法。圖6.2顯示了三個由GPIO輸出的PWM信號(電壓為3.3V),第一個信號是一個占空比為20%的PWM輸出,即在信號周期中,20%的時間為高電平(邏輯1),其余80%的時間為低電平(邏輯0),對應(yīng)的電壓為滿幅值的20%(0.66V)。第二、三個信號分別是占空比為50%和80%的PWM輸出,對應(yīng)的電壓分別為1.65V和2.64V。
        在這里插入圖片描述
      8.2 樹莓派操控PWM
      在樹莓派上,可以通過對GPIO的編程來實現(xiàn)PWM,RPi.GPIO庫就提供了一個PWM功能,以下是使用RPi.GPIO庫的PWM功能的方法。
      創(chuàng)建一個PWM實例

      pwm = GPIO.PWM(channel, frequency)

      channel:指定要輸出PWM信號的GPIO引腳;
      frequency:指定PWM信號的初始頻率,單位為Hz,其值應(yīng)大于0.0。
      啟用PWM

      pwm.start(dc)

      dc:指定PWM信號的初始占空比,取值范圍為0.0 ≤ dc ≤ 100.0。
      更改PWM頻率

      pwm.ChangeFrequency(freq)

      freq:指定PWM的新頻率,單位為Hz,其值應(yīng)大于0.0。
      更改PWM占空比

      pwm.ChangeDutyCycle(dc)

      dc:指定PWM的新占空比,取值范圍為0.0 ≤ dc ≤ 100.0。

      8.3 PWM驗證實驗
      接下來,我們將用一個具體的例子來演示樹莓派是如何使用PWM的。在這個實驗里,您將可以手動改變LED的亮度,一方面我們將盡可能用上RPi.GPIO庫中PWM的相關(guān)函數(shù),讓您更好了解這些函數(shù)的使用,另一方面讓您更為直觀的理解PWM的基本原理。

      import RPi.GPIO as GPIO # 引入GPIO模塊if __name__ == '__main__': LedPin = 19 freq = 100 # 存放PWM頻率變量,這里初始值為100,可以根據(jù)實際需要修改 dc = 0 # 存放PWM占空比變量,這里初始值為0,可以根據(jù)實際需要修改 GPIO.setmode(GPIO.BCM) # 使用BCM編號方式 GPIO.setup(LedPin, GPIO.OUT) # 將GPIO19設(shè)置為輸出模式 pwm = GPIO.PWM(LedPin, freq) # 創(chuàng)建PWM對象,并指定初始頻率 pwm.start(dc) # 啟動PWM,并指定初始占空比 try: freq = int(input('Please input the frequency of PWM(1-2000Hz): ')) # 等待輸入新PWM頻率 pwm.ChangeFrequency(freq) # 改變PWM頻率 while True: dc = int(input('Please input the duty cycle(0-100): ')) # 等待輸入新PWM占空比 pwm.ChangeDutyCycle(dc) # 改變PWM占空比 finally: pwm.stop() # 停止PWM GPIO.cleanup() # 清理釋放GPIO資源
      • 1

      • 2

      • 3

      • 4

      • 5

      • 6

      • 7

      • 8

      • 9

      • 10

      • 11

      • 12

      • 13

      • 14

      • 15

      • 16

      • 17

      • 18

      • 19

      • 20

      • 21

      • 22

      • 1

      • 2

      • 3

      • 4

      • 5

      • 6

      • 7

      • 8

      • 9

      • 10

      • 11

      • 12

      • 13

      • 14

      • 15

      • 16

      • 17

      • 18

      • 19

      • 20

      • 21

      • 22

      程序運行后,首先會要求您輸入PWM頻率(建議輸入的值在1到2000之間),然后您可以通過不斷的輸入新的PWM占空比來改變LED的狀態(tài)。例如,您可以輸入一個100Hz的PWM頻率,然后分別輸入10、30、50、80、100的PWM占空比,您將看到LED會一次比一次亮;當(dāng)您輸入的PWM頻率為5時,LED會不斷的閃爍,輸入不同的占空比只會改變LED點亮的時間長度,而亮度基本不變,當(dāng)占空比為100時,LED長亮。

      參考鏈接1:
      https://www.jianshu.com/p/449682146501
      來源:簡書
      參考鏈接2:https://blog.csdn.net/yzy_1996/article/details/83756357
      來源CSDN

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多