0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于树莓派点亮RGB三基色LED灯

CHANBAEK 来源:容里与良鹿 作者:张凯 2023-07-04 11:34 次阅读

上一篇实现了树莓派的第一个基础实验——点亮双色LED灯,并了解了树莓派GPIO的基本用法。如果你已经成功完成过树莓派双色LED灯实验,并且对深入树莓派玩法有更多的兴趣的话,那么我们进一步尝试点亮一个更加绚丽的LED灯:RGB三基色LED灯。

一、介绍

RGB-LED模块可以发出各种颜色的光。红色,绿色和蓝色的三个LED被封装到透明或半透明塑料外壳中,并带有四个引脚。红色,绿色和蓝色三原色可以按照亮度混合并组合各种颜色,因此可以通过控制电路使RGB-LED发出彩色光。

图片

二、组件

Raspberry Pi 4b主板*1

树莓派电源*1

40P软排线*1

RGB-LED模块*1

面包板*1

跳线若干

图片

三、实验原理

在本实验中,我们将使用PWM威廉希尔官方网站 来控制RGB的亮度。

脉冲宽度调制(PWM)是一种通过数字方式获取interwetten与威廉的赔率体系 结果的威廉希尔官方网站 。数字控制用于创建方波,信号在高电平和低电平之间切换。这种开关模式,可以通过改变信号持续的时间部分,与信号关闭的时间来模拟全开(5V)和关(0V)之间的电压。“有效”的持续时间称为脉冲宽度。要获得不同的模拟值,可以更改或调节脉冲宽度。如果你使用的LED重复此开关模式足够快,得到信号好像是0到5V之间的稳定电压,控制LED的亮度。

图片

四、实验步骤

建立电路,按照如下表格连线:

树莓派 T形转接板 RGB-LED灯模块
GND GND GND
GPIO0 GPIO17 R
GPIO1 GPIO18 G
GPIO2 GPIO27 B

图片

五、使用python语言编程

#!/usr/bin/env python   #告诉Linux本文件是一个Python程序
import RPi.GPIO as GPIO    #导入控制GPIO的模块,RPi.GPIO
import time     #导入时间模块,提供延时、时钟和其它时间函数


colors = [0xFF0000, 0x00FF00, 0x0000FF, 0xFFFF00, 0xFF00FF, 0x00FFFF] #颜色列表
R = 11        #定义物理针脚号
G = 12
B = 13


#初始化程序
def setup(Rpin, Gpin, Bpin):
    global pins  # 在函数内部声明被其修饰的变量是全局变量
    global p_R, p_G, p_B
    pins = {'pin_R': Rpin, 'pin_G': Gpin, 'pin_B': Bpin}
    GPIO.setmode(GPIO.BOARD)  # 设置引脚编号模式为板载模式,即树莓派上的物理位置编号
    for i in pins:
        GPIO.setup(pins[i], GPIO.OUT)  # 设置针脚模式为输出(或者输入GPIO.IN)
        GPIO.output(pins[i], GPIO.LOW)  # Set pins to low(0 V) to off led


    p_R = GPIO.PWM(pins['pin_R'], 2000)  # set Frequece to 2KHz
    p_G = GPIO.PWM(pins['pin_G'], 1999)
    p_B = GPIO.PWM(pins['pin_B'], 5000)


    p_R.start(0)  # Initial duty Cycle = 0(leds off)
    p_G.start(0)
    p_B.start(0)


def map(x, in_min, in_max, out_min, out_max): #将颜色的刺激量转换为占空比对应的值。
    return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min


def off():
    for i in pins:
        GPIO.output(pins[i], GPIO.LOW)    # Turn off all leds

def setColor(col):  # For example : col = 0x112233
    R_val = (col & 0xff0000) > > 16  # 先“与”运算 只保留自己颜色所在位的值有效
    G_val = (col & 0x00ff00) > > 8  # 再“右移”运算 将自己颜色所在位的值提取出来
    B_val = (col & 0x0000ff) > > 0


    R_val = map(R_val, 0, 255, 0, 100)  # 将颜色的刺激量转换为占空比对应的值
    G_val = map(G_val, 0, 255, 0, 100)
    B_val = map(B_val, 0, 255, 0, 100)


    p_R.ChangeDutyCycle(R_val)  # 更改占空比,调整该颜色的亮度
    p_G.ChangeDutyCycle(G_val)
    p_B.ChangeDutyCycle(B_val)
#循环函数
def loop():
    while True:
        for col in colors:
            setColor(col)
            time.sleep(1)
#资源释放
def destroy():
    p_R.stop()      #Turn off PWM
    p_G.stop()
    p_B.stop()
    off()              # Turn off all leds
    GPIO.cleanup()     #重置GPIO状态
#程序入口
if __name__ == "__main__":
    try:                       #用try-except代码块来处理可能引发的异常
        setup(R, G, B)      #调用初始化设置LED灯的函数
        loop()                     #调用循环函数
    except KeyboardInterrupt:      #如果遇用户中断(control+C),则执行destroy()函数
        destroy()             #调用清除LED状态的函数
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led灯
    +关注

    关注

    22

    文章

    1592

    浏览量

    107936
  • Linux
    +关注

    关注

    87

    文章

    11277

    浏览量

    209263
  • RGB
    RGB
    +关注

    关注

    4

    文章

    798

    浏览量

    58447
  • 面包板
    +关注

    关注

    3

    文章

    298

    浏览量

    17559
  • 树莓派
    +关注

    关注

    116

    文章

    1705

    浏览量

    105599
收藏 人收藏

    评论

    相关推荐

    树莓2控制一个LED

    ` 本帖最后由 348081236 于 2016-1-19 16:57 编辑 这个教程教你怎样用树莓控制一个LED。这是比较基础、简单、适合新手的。先从一个
    发表于 01-19 16:55

    树莓如何点亮一个LED

    本章将简介在树莓派上面通过shell,sysfs,bcm2835,wiringPi,python等不同的编程方式点亮一个LED
    发表于 11-05 07:04

    关闭树莓电源LED

    在关闭树莓的电源指示和状态指示中,对关闭树莓指示
    发表于 12-28 08:18

    关闭树莓的指示

    关闭树莓的指示我有几个树莓放在房间内,每天晚上都看到指示的闪光,感觉有
    发表于 12-31 06:18

    双色LED实验的相关资料下载

    树莓:双色LED实验简介一、实验效果二、组件、实验原理四、实验步骤五、代码实现简介双色LED
    发表于 01-05 07:12

    用于覆盆子树莓3B及以上型号的RGB LED

    描述树莓 4 RGB 帽子用于覆盆子 Pi 3B 及以上型号的 RGB LED 帽。采用矩阵形式的 WS2812
    发表于 07-27 06:50

    制作RGB基色合成的白光LED中的注意事项

    制作RGB基色合成的白光LED中的注意事项 对于制作RGB
    发表于 05-09 08:31 2804次阅读

    RGB-基色LED带控制-测试成功

    RGB-基色LED带控制-测试成功
    发表于 09-10 10:26 697次下载

    树莓教程1_点亮第一个led

    是对c语言编译的声明,-o blink是输出工程文件到blink文件(接下来的执行文件)blink.c是刚刚编写的c语言程序-lwiringPi是库的调用输入sudo ./blink执行程序。(需要通过sudo命令获取权限) 可以看到面包板上的led在闪烁,恭喜您已学会用树莓
    发表于 04-02 14:45 1786次阅读

    微雪电子树莓RGB全彩LED扩展|RGB LED HAT (B)介绍

    我是专为树莓设计的RGB LED扩展板,可通过一根信号线进行编程控制以显示彩色画面。
    的头像 发表于 11-14 11:42 3221次阅读
    微雪电子<b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>RGB</b>全彩<b class='flag-5'>LED</b>扩展|<b class='flag-5'>RGB</b> <b class='flag-5'>LED</b> HAT (B)介绍

    微雪电子树莓RGB全彩LED扩展|RGB LED HAT介绍

    树莓RGB全彩LED扩展板 4×8个RGB LED 可通过一根信号线进行编程控制以显示彩色画
    的头像 发表于 11-14 11:53 2503次阅读
    微雪电子<b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>RGB</b>全彩<b class='flag-5'>LED</b>扩展|<b class='flag-5'>RGB</b> <b class='flag-5'>LED</b> HAT介绍

    关闭树莓电源LED,禁用wifi、蓝牙

    在关闭树莓的电源指示和状态指示中,对关闭树莓指示
    发表于 01-06 11:55 3次下载
    关闭<b class='flag-5'>树莓</b><b class='flag-5'>派</b>电源<b class='flag-5'>LED</b><b class='flag-5'>灯</b>,禁用wifi、蓝牙

    树莓zero不亮_关闭树莓的电源、状态、网口指示

    关闭树莓的指示我有几个树莓放在房间内,每天晚上都看到指示的闪光,感觉有
    发表于 01-11 09:28 9次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>zero不亮_关闭<b class='flag-5'>树莓</b><b class='flag-5'>派</b>的电源、状态、网口指示<b class='flag-5'>灯</b>

    树莓4RGB帽子开源

    电子发烧友网站提供《树莓4RGB帽子开源.zip》资料免费下载
    发表于 07-25 14:34 0次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>4<b class='flag-5'>RGB</b>帽子开源

    使用树莓GPIO口点亮双色LED

    上一篇文章向大家介绍树莓的硬件部分、安装操作系统及基础设置。这篇文章将介绍树莓的强大的开发功能口——GPIO,以及利用GPIO口点亮双色
    的头像 发表于 07-04 11:34 2279次阅读
    使用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>GPIO口<b class='flag-5'>点亮</b>双色<b class='flag-5'>LED</b><b class='flag-5'>灯</b>