樹莓派筆記RaspberryPi -(7) LED 呼吸燈 (PWM 控制)

更新於 發佈於 閱讀時間約 6 分鐘

PWM=Pulse Width Modulation,

通過調整數位脈衝的週期以及在週期中的寬度占比, 來模擬類比信號輸出

像是控制馬達轉速, 舵機角度, 燈號強度...等

 

目前樹莓派有幾種作法

一是通過軟體控制, 優點是每隻GPIO腳都可以發出, 數量不受限

缺點是占用CPU計算資源, 太多PWM有可能會延遲

另外是寬度占比只能設定0~100, 較不精準

二是硬體控制,

脈衝非常準確, 寬度可以設定0~1,000,000

但在樹莓派上一次只能產生兩組, BCM 12/18共用通道0, BCM 13/19共用通道1

三是DMA控制, 介於兩者之間

通常由擴充版提供, 精準度依板子不同而異

以GrovePi+來說脈衝寬度可以設定0~255的範圍, 僅D3/D5/D6可提供

 

================================

軟體控制PWM程式碼

================================

import RPi.GPIO as GPIO
import time

LedPin = 18
GPIO.setmode(GPIO.BCM)
GPIO.setup(LedPin, GPIO.OUT)   # Set pin mode as output

p = GPIO.PWM(LedPin, 1000)     # set Frequece to 1KHz
p.start(0)                     # Start PWM output, Duty Cycle = 0

try:
        while True:
                for dc in range(0, 101, 5):   # Increase duty cycle: 0~100
                        p.ChangeDutyCycle(dc)     # Change duty cycle
                        time.sleep(0.05)
                time.sleep(1)
                for dc in range(100, -1, -5): # Decrease duty cycle: 100~0
                        p.ChangeDutyCycle(dc)
                        time.sleep(0.05)
                time.sleep(1)
except KeyboardInterrupt:
        p.stop()
        GPIO.cleanup()

================================

 

================================

硬體PWM程式碼, 必須先安裝pigpio庫, 並執行sudo pigpiod

================================

import pigpio
import time

PWM_LED_PIN = 18
PWM_FREQ = 1000
 
pi = pigpio.pi()
 
try:
    while True:
        for i in range(0, 50, 1):
            pi.hardware_PWM(PWM_LED_PIN, PWM_FREQ, i*20000)
            time.sleep(0.1)
        for i in range(49, -1, -1):
            pi.hardware_PWM(PWM_LED_PIN, PWM_FREQ, i*20000)
            time.sleep(0.1)
except KeyboardInterrupt:
    pi.set_mode(PWM_LED_PIN, pigpio.INPUT)

================================

 

================================

GrovePi+ PWM程式碼

================================

import grovepi
import time

led = 5 # Connect the Grove LED to digital port D5
grovepi.pinMode(led,"OUTPUT")

try:
    while True:
        for i in range(0, 256, 15): #Increment brightness for next iteration
            grovepi.analogWrite(led,i)  # Give PWM output to LED
            time.sleep(.3)
        for i in range(255, -1, -15):
            grovepi.analogWrite(led,i)  # Give PWM output to LED
            time.sleep(.3)

except KeyboardInterrupt:
    grovepi.analogWrite(led,0)

================================

 

 

avatar-img
6會員
63內容數
ktest
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
傳統馬達會利用調整電阻值的大小,來直接限制馬達輸入電流的上限;但電阻值的增加也會導致銅損值上升,是種如同雙面刃的技法。所幸隨著電控技術的進步,馬達電流的限制工作可以轉交給驅動電路掌控,馬達僅需要盡可能地降低電阻值即可;更直白的說就是漆包線徑越粗越好,暨可以降低馬達電阻,還同時強化散熱能力,以得到更優
Thumbnail
這是筆者常用的馬達設計調整手法,但原意是用於馬達工作電壓變換時,更改繞線條件的計算,如110V的馬達要更改為220V的使用電壓時,需針對繞線條件進行修改。會僅變更繞線條件而非整顆馬達修改,主要是其他材料的變動成本較高,而漆包線徑的調整是馬達當中最容易的項目;因此會發現市面上不同工作電壓的馬達外觀大小
Thumbnail
這篇介紹如何使用低通滤波器(Low-Pass Filter) 來改善 傾斜角度數值。
Thumbnail
這篇介紹如何用加速度取得傾斜角度。 用的是和前篇一樣的<basicMpu6050.h>
Thumbnail
這篇文章介紹瞭如何使用Raspberry Pi PICO等材料製作自己的GAME&WATCH大金剛掌機,以及接線圖、程式碼下載和安裝遊戲的教學,並且分享了製作過程中的一些心得和回憶。如果您對童年的遊戲回憶感興趣,這篇文章值得一讀。
Thumbnail
智慧照明系統是什麼?Zigbee、 Wi-Fi、藍芽應用一次告訴你! 在互聯網、互聯設備和智慧照明科技的時代,智慧照明系統也迎來了新一波的創新變革,其中包括以Zigbee、Wi-Fi和Bluetooth藍牙作為連接協定在內,RGB、RGBW、RGBCW、tunable white lights
Thumbnail
Triac dimmers, 0-10V dimming, and PWM dimming are the most popular techniques in adjusting illuminating levels for different lighting applications.
再使用AT-START開發板時,這塊板子上搭配的外部晶體震盪器是8MHz。 若使用不同晶振,也就是震盪頻率不再是8MHz的話,需要修改哪些部分呢? 1.系統時鐘設定 void ​system_clock_config(void) 需要注意sclk(系統時鐘)有沒有超過限制、ahb及apb
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
傳統馬達會利用調整電阻值的大小,來直接限制馬達輸入電流的上限;但電阻值的增加也會導致銅損值上升,是種如同雙面刃的技法。所幸隨著電控技術的進步,馬達電流的限制工作可以轉交給驅動電路掌控,馬達僅需要盡可能地降低電阻值即可;更直白的說就是漆包線徑越粗越好,暨可以降低馬達電阻,還同時強化散熱能力,以得到更優
Thumbnail
這是筆者常用的馬達設計調整手法,但原意是用於馬達工作電壓變換時,更改繞線條件的計算,如110V的馬達要更改為220V的使用電壓時,需針對繞線條件進行修改。會僅變更繞線條件而非整顆馬達修改,主要是其他材料的變動成本較高,而漆包線徑的調整是馬達當中最容易的項目;因此會發現市面上不同工作電壓的馬達外觀大小
Thumbnail
這篇介紹如何使用低通滤波器(Low-Pass Filter) 來改善 傾斜角度數值。
Thumbnail
這篇介紹如何用加速度取得傾斜角度。 用的是和前篇一樣的<basicMpu6050.h>
Thumbnail
這篇文章介紹瞭如何使用Raspberry Pi PICO等材料製作自己的GAME&WATCH大金剛掌機,以及接線圖、程式碼下載和安裝遊戲的教學,並且分享了製作過程中的一些心得和回憶。如果您對童年的遊戲回憶感興趣,這篇文章值得一讀。
Thumbnail
智慧照明系統是什麼?Zigbee、 Wi-Fi、藍芽應用一次告訴你! 在互聯網、互聯設備和智慧照明科技的時代,智慧照明系統也迎來了新一波的創新變革,其中包括以Zigbee、Wi-Fi和Bluetooth藍牙作為連接協定在內,RGB、RGBW、RGBCW、tunable white lights
Thumbnail
Triac dimmers, 0-10V dimming, and PWM dimming are the most popular techniques in adjusting illuminating levels for different lighting applications.
再使用AT-START開發板時,這塊板子上搭配的外部晶體震盪器是8MHz。 若使用不同晶振,也就是震盪頻率不再是8MHz的話,需要修改哪些部分呢? 1.系統時鐘設定 void ​system_clock_config(void) 需要注意sclk(系統時鐘)有沒有超過限制、ahb及apb