树莓派资料
显示屏资料
系统下载
树莓派Pico
首页 动态 发帖 版块 我的
 退出
游客  
等级:
金币:
经验值:

全彩RGB模块 树莓派Python例程

  6271 
 0
 2
RASPI   RASPI 

一:RGB色彩介绍

 RGB色彩模式是工业界一种颜色标准,RGB名称即代表着R红色、G绿色、B蓝色,总共为三个通道的颜色。每个通道的刺激量以及通道之间相互迭加的刺激量从而会得到各式各样的颜色,RGB三种色的配合即可呈现出人类视力所能感知到的所有颜色,也是运用最广的颜色系统之一。


     在日常生活中我们电脑上的RGB所谓“多少数值”其实就是指亮度,一般使用整数来表示。RGB各有256级的亮度,用数字表示为从0、1、2...直到255,数字的最高是255,但0也是数值之一,0表示没有刺激量,255表示刺激量最大值。R、G、B均为255时就合成了白光,R、G、B均为0时就形成了黑色。依次类推,不同通道的数值变化和迭加会呈现不同的颜色。

Image




在下面的实验中,我们将使用PWM技术来控制RGB的亮度。(PWM)是脉冲宽度调制它是通过数字方式获取模拟结果的技术。数字控制用于创建方波,信号在高电平和低电平之间切换。这种开关模式,可以通过改变信号持续的时间部分,与信号关闭的时间来模拟全开(5V)和关(0V)之间的电压。“有效”的持续时间称为脉冲宽度。要获得不同的模拟值,可以更改或调制脉冲宽度。如果你使用的LED重复此开关模式足够快,通过0到5V之间的不同电压,控制LED的亮度和颜色。

二:树莓派连接RGB模块

RGB模块原理图

将树莓派引脚连接到RGB模块上,通过引脚我们就可以看出RGB模块只有一个GND,三个颜色针脚,其实就是共负极。如果给每个颜色针脚不同电信号,即可实现不同颜色。(如下图介绍)

树莓派主板RGB全彩模块
GPIO17R针脚
GPIO27G针脚
GPIO22B针脚
GND-负极

Image


三:Python示例程序

  • 这里使用的是 树莓派的RPi.GPIO 库来控制树莓派的 GPIO。我们需要使用 PWM(脉宽调制)来调节红、绿、蓝三色的亮度,在运行程序之前,请确保你的树莓派已安装 RPi.GPIO库,如果没有安装请输入下面命令进行安装。


sudo apt update
sudo apt install python3-rpi.gpio
写入脚本程序执行

import RPi.GPIO as GPIO
import time

# 设置引脚编号
R_PIN = 17   # 红色通道连接到 GPIO17
G_PIN = 27   # 绿色通道连接到 GPIO27
B_PIN = 22   # 蓝色通道连接到 GPIO22

# 初始化GPIO设置
def setup():
    GPIO.setmode(GPIO.BCM)  # 使用BCM编号模式
    GPIO.setup(R_PIN, GPIO.OUT)
    GPIO.setup(G_PIN, GPIO.OUT)
    GPIO.setup(B_PIN, GPIO.OUT)

    # 设置PWM频率为1000Hz
    global r_pwm, g_pwm, b_pwm
    r_pwm = GPIO.PWM(R_PIN, 1000)
    g_pwm = GPIO.PWM(G_PIN, 1000)
    b_pwm = GPIO.PWM(B_PIN, 1000)

    # 启动PWM,初始占空比为0(关闭)
    r_pwm.start(0)
    g_pwm.start(0)
    b_pwm.start(0)

# 将0-255的RGB值转换为占空比百分比(0.0 - 100.0)
def set_color(r_val, g_val, b_val):
    r_pwm.ChangeDutyCycle(r_val / 255 * 100)
    g_pwm.ChangeDutyCycle(g_val / 255 * 100)
    b_pwm.ChangeDutyCycle(b_val / 255 * 100)

# 主函数:循环显示不同的颜色
def main():
    setup()
    print("开始循环显示RGB颜色...")
    try:
        while True:
            # 红色渐变
            for r in range(0, 256, 5):
                set_color(r, 0, 0)
                time.sleep(0.05)

            # 绿色渐变
            for g in range(0, 256, 5):
                set_color(0, g, 0)
                time.sleep(0.05)

            # 蓝色渐变
            for b in range(0, 256, 5):
                set_color(0, 0, b)
                time.sleep(0.05)

            # 白色渐变(RGB同时亮)
            for val in range(0, 256, 5):
                set_color(val, val, val)
                time.sleep(0.05)

    except KeyboardInterrupt:
        print("程序被用户终止")
        cleanup()

# 清理GPIO资源
def cleanup():
    r_pwm.stop()
    g_pwm.stop()
    b_pwm.stop()
    GPIO.cleanup()
    print("GPIO清理完成")

if __name__ == "__main__":
    main()


程序可以控制 RGB LED 模块不同颜色的渐变过渡。使用 (Ctrl + C)退出程序。


标签:
作者签名: raspi.cc   楼主  2025-05-11 14:42:59
回复列表
Powered by RASPI _VERSION
© 2017-2025 树莓派极客版权
您的IP: 3.15.7.155 , 2025-05-12 16:44:46
Powered by RASPI _VERSION
© 2017-2025 树莓派极客版权