樹莓派筆記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會員
    59內容數
    ktest
    留言0
    查看全部
    avatar-img
    發表第一個留言支持創作者!
    你可能也想看
    Google News 追蹤
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
    Thumbnail
    Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
    說明自由走動式' 運用藝術媒材社會計量的目標、一般性運用原則、延伸與提醒、問句舉例。
    Thumbnail
    Fluxus,又稱激浪派,是在 1960 年代興起的前衛運動,強調將藝術與日常生活緊密聯繫。無論是實物作品還是表演作品,激浪派的作品往往展現了對藝術本身的批判態度,並將過程置於成品之上。
    Thumbnail
    本文介紹了作者使用 Rust 重寫的一個專案,目的是為了在樹梅派上取得 LAN IP,並透過 Telegram 機器人發送訊息。作者首先提到在樹梅派上使用 Python 版本時遇到的問題,之後才開始討論為什麼選擇了 Rust 重寫的理由。
    Thumbnail
    這一個內容其實是我在聽股癌 EP387的時候的內容,當中提到為什麼指數投資者不需要做停損的原因,會認為本來就有一個汰弱留強的機制在那邊,如果不清楚你自己投資要什麼的人,買ETF就不需要額為的停損操作。 當然這是因為聽他 Podcast的人很多人屬於買指數跟聽氣氛沒有在交易的人
    Thumbnail
    等了四年,樹莓派5終於在2023年亮相啦!這一款咱們期待已久的開源、低價開發板,真的是讓人眼睛一亮呢! 首先來看看,樹莓派5在性能上的提升。這次的CPU採用了四核A76架構,最高頻率竟然達到了2.4Ghz,而GPU也從VideoCore VI升級到了VideoCore VII,還支援OpenGL
    Thumbnail
    卡瓦Kawacake的草莓巧克力鮮奶油蛋糕,是卡瓦Kawacake新上市草莓蛋糕,使用的是新鮮台灣草莓,60%比利時巧克力,是一款無論是草莓控或是巧克力控都無法抗拒的聖誕蛋糕。
    Thumbnail
    [美劇隨筆]Netflix 2019《 俄羅斯娃娃:輪回派對(Russian Doll)》 Netflix 2019 IMDb Ratings 7.8 / 10 (out of 82,846 IMDb users)! 1. 劇集關鍵詞 #俄羅斯娃娃 #紅色大波浪捲髮 #胸前掛著的小圓金牌 [完]
    電影找來「宅男行不行」吉姆·帕森斯 (Jim Parsons)、「星際爭霸戰」柴克瑞·恩杜 (Zachary Quinto)、「末日巡邏隊」》麥特·波莫 (Matt Bomer) 等人主演,全部找來已公開出櫃的同志飾演。 #男孩夜派對 #偶希都理電影筆記 #電影筆記 #movie #電影 #映画
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
    Thumbnail
    Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
    說明自由走動式' 運用藝術媒材社會計量的目標、一般性運用原則、延伸與提醒、問句舉例。
    Thumbnail
    Fluxus,又稱激浪派,是在 1960 年代興起的前衛運動,強調將藝術與日常生活緊密聯繫。無論是實物作品還是表演作品,激浪派的作品往往展現了對藝術本身的批判態度,並將過程置於成品之上。
    Thumbnail
    本文介紹了作者使用 Rust 重寫的一個專案,目的是為了在樹梅派上取得 LAN IP,並透過 Telegram 機器人發送訊息。作者首先提到在樹梅派上使用 Python 版本時遇到的問題,之後才開始討論為什麼選擇了 Rust 重寫的理由。
    Thumbnail
    這一個內容其實是我在聽股癌 EP387的時候的內容,當中提到為什麼指數投資者不需要做停損的原因,會認為本來就有一個汰弱留強的機制在那邊,如果不清楚你自己投資要什麼的人,買ETF就不需要額為的停損操作。 當然這是因為聽他 Podcast的人很多人屬於買指數跟聽氣氛沒有在交易的人
    Thumbnail
    等了四年,樹莓派5終於在2023年亮相啦!這一款咱們期待已久的開源、低價開發板,真的是讓人眼睛一亮呢! 首先來看看,樹莓派5在性能上的提升。這次的CPU採用了四核A76架構,最高頻率竟然達到了2.4Ghz,而GPU也從VideoCore VI升級到了VideoCore VII,還支援OpenGL
    Thumbnail
    卡瓦Kawacake的草莓巧克力鮮奶油蛋糕,是卡瓦Kawacake新上市草莓蛋糕,使用的是新鮮台灣草莓,60%比利時巧克力,是一款無論是草莓控或是巧克力控都無法抗拒的聖誕蛋糕。
    Thumbnail
    [美劇隨筆]Netflix 2019《 俄羅斯娃娃:輪回派對(Russian Doll)》 Netflix 2019 IMDb Ratings 7.8 / 10 (out of 82,846 IMDb users)! 1. 劇集關鍵詞 #俄羅斯娃娃 #紅色大波浪捲髮 #胸前掛著的小圓金牌 [完]
    電影找來「宅男行不行」吉姆·帕森斯 (Jim Parsons)、「星際爭霸戰」柴克瑞·恩杜 (Zachary Quinto)、「末日巡邏隊」》麥特·波莫 (Matt Bomer) 等人主演,全部找來已公開出櫃的同志飾演。 #男孩夜派對 #偶希都理電影筆記 #電影筆記 #movie #電影 #映画