美文网首页
树莓派3B开发Go语言案例-2.LED呼吸灯效果

树莓派3B开发Go语言案例-2.LED呼吸灯效果

作者: Gold_Z | 来源:发表于2019-02-01 00:11 被阅读0次

    title: 树莓派3B开发Go语言案例-2.LED呼吸灯效果
    tags: 树莓派,go,golang,3B,3B+,rgb,led


    原本想实现RGB LED灯发出多彩灯光效果,由于当前版本的PWM非常难用,且存在BUG,官方计划重构PWM的功能,所以改为了呼吸灯效果。
    该功能主要是通过PWM调光来实现,关于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)
    }
    

    相关文章

      网友评论

          本文标题:树莓派3B开发Go语言案例-2.LED呼吸灯效果

          本文链接:https://www.haomeiwen.com/subject/luntsqtx.html