樹莓派3B開發Go語言案例-2.LED呼吸燈效果
title: 樹莓派3B開發Go語言案例-2.LED呼吸燈效果
tags: 樹莓派,go,golang,3B,3B+,rgb,led
原本想實現RGB LED燈發出多彩燈光效果,由於當前版本的PWM非常難用,且存在BUG,官方計劃重構PWM的功能,所以改為了呼吸燈效果。
PWM調光科普(上篇):人類顯示器的黑歷史
,講解的非常清楚。LED正極接在針腳11上,對應GPIO17
實現程式碼,該節程式碼僅做參考,因為
package main import ( "log" "time" "periph.io/x/periph/conn/gpio" "periph.io/x/periph/conn/physic" "periph.io/x/periph/host" "periph.io/x/periph/host/rpi" ) func main() { // 初始化 if _, err := host.Init(); err != nil { log.Fatal(err) } p := rpi.P1_11 // 使用 PWM 在程式結束前必須呼叫,要不然下次呼叫時會異常 defer p.Halt() // 閃爍10次 count := 10 i, _ := gpio.ParseDuty("1") add := true for { if add { i++ if i == 1000 { add = false } } else { i-- if i == 1 { add = true count-- if count == 0 { break } } } // 設定佔空比和頻率 if err := p.PWM(gpio.DutyMax/1000*i, 10*physic.KiloHertz); err != nil { log.Fatal(err) } time.Sleep(1 * time.Millisecond) } p.Out(gpio.Low) }