【MicroPython+ESP32+rgb三色灯实现PWM控制基色光强,可照出千万种颜色光】 |
您所在的位置:网站首页 › 三基色每种颜色的取值范围 › 【MicroPython+ESP32+rgb三色灯实现PWM控制基色光强,可照出千万种颜色光】 |
MicroPython+ESP32+rgb三色灯
MicroPython实现【RGB3色LED】的千万种颜色闪烁1、PWM控制LED的亮度2、什么是RGB色值 ?3、如何用函数实现RGB色值4、保存色值并调用5、实验效果与源码
MicroPython实现【RGB3色LED】的千万种颜色闪烁
众所周知,只要拥有了红、绿、蓝三种基本颜色就可以调配出上千万种其他颜色,无论是颜料,还是灯光同理。 在 “rgb三色LED模块”上就是有红/绿/蓝3个LED灯,改变三个LED的灯光强弱,混合后就会照射出不同的颜色光。 1.1、具体PWM原理相信大家都知晓,这里直接上程序: from machine import Pin from machine import PWM #定义LED控制对象 led = PWM(Pin(2),freq=1000,duty=0) #设置占空比,改变LED亮度 value = 1000 led.duty(value) # value取值范围: 0 ~ 1023LED的亮度便是通过改变 value值来控制PWM输出 1.2、为后文铺垫就是: 三个LED(红、绿和蓝)分别有三PWM输出控制其亮度 #定义对象 红/绿/蓝LED控制的PWM 输出 rgbR = PWM(Pin(2), freq=1000,duty=0) rgbG = PWM(Pin(4), freq=1000,duty=0) rgbB = PWM(Pin(16), freq=1000,duty=0) 2、什么是RGB色值 ?2.1、 色值:指的是该种颜色在不同的颜色模式中所对应的颜色值。 红色在RGB颜色模式中所对应的值就是255,0,0;绿色在RGB颜色模式中所对应的值就是0,255,0;蓝色在RGB颜色模式中所对应的值就是0,0,255。![]() 2.2、 在RGB颜色模式中,每一个颜色都由红色、绿色、蓝色混合而成。将颜色由一个十六进制符号来定义,这个符号由红色、绿色和蓝色的值组成(RGB)。每种颜色的最小值是 0(十六进制:#00)。最大值是 255(十六进制:#FF) 2.3、 通过计算 256 x 256 x 256,从 0 到 255 的红色、绿色和蓝色的值一共可以组合出 1600 万种不同的颜色。 3、如何用函数实现RGB色值3.1、十进制参数(red, green, blue) # 设置颜色函数 def set_color(red, green, blue): rgbR.duty(int(red * 1023 / 255)) rgbG.duty(int(green * 1023 / 255)) rgbB.duty(int(blue * 1023 / 255))改变的是三个rgb颜色LED的PWM占空比,分成255等分 红绿蓝三个参数就控制在0 ~ 255,符合常理了 例如: #rgb三色LED显示颜色如下 set_color(255,255,255) # 白色 set_color(255, 255, 0) # 黄色3.2、十六进制参数(color_hex) 取值范围:000000 ~FFFFFF def coler_HexDec(hex_color): r = int(hex_color[0:2], 16) g = int(hex_color[2:4], 16) b = int(hex_color[4:6], 16) set_color(r,g,b)是,将一个6位十六进制数分解成 3个十进制数 并传入 set_color() 函数 例如:# rgb三色LED显示颜色如下 coler_HexDec("FFFFFF") # 白色 coler_HexDec("FFFF00") # 黄色 4、保存色值并调用一些链接: 查 看 :RGB 颜色表 好用的工具:RGB颜色选择器 4.1、常用的颜色可用 字典 保存 这里两种字典方法,分别保存了十进制色值和十六进制色值: # 十进制颜色值 RGB_color = ['红','绿','蓝','黄','青' , '橙','紫','白','黑','灰'] RGB_value = ['(255,0,0)','(0,255,0)','(0,0,255)','(255, 255, 0)','(0, 255, 255)', '(255, 165, 0)', '(128, 0, 128)','(255,255,255)','(0,0,0)','(128, 128, 128)'] color_dict = dict(zip(RGB_color, RGB_value)) # 十六进制颜色值 colorhex = {"红": "FF0000", "绿": "00FF00", "蓝": "0000FF", "黄": "FFFF00", "紫": "FF00FF", "白": "FFFFFF", "黑": "000000", "碧绿": "70DB93", "巧克力": "5C3317", "米": "f5f5dc"}通过上面两个颜色设置函数,就可以实现字典里颜色的显示。 如: # 循环点亮 color_dict 字典里的颜色 for i in range(len(colorname)): get_color(colorname[i]) time.sleep(2) # 循环点亮 colorhex 字典里的颜色 HEX_colors = tuple(colorhex.keys()) HEX_values = tuple(colorhex.values()) for i in range(len(HEX_values)): coler_HexDec(HEX_values[i]) print(f'{HEX_colors[i]}色:{HEX_values[i]}') time.sleep_ms(500)4.2、用文本保存颜色 假如 RGBcolors.txt 内容为: {"黑": "000000","白": "FFFFFF", "红": "FF0000", "绿": "00FF00", "蓝": "0000FF", "黄": "FFFF00", "青": "00FFFF","银": "C0C0C0"} 读取 文本内容 并用 json 来转化为字典的函数 import json def read_colortxt(txt_path): """注释: *****给一个txt文本路径,获取内容并用json转换为字典。 *****注意:文本保存的格式应符合 json字符串转字典的要求 *****文本保存内容格式为:{"name": "XiaoMing", "age": "17", "address": "China"} param txt_path : 保存颜色的TXT文本路径,(例如:"d/colors.txt") 返回值: 一个保存颜色hex数据的字典 """ try : with open(txt_path, mode='r', encoding="uft-8") as file: dcit =json.loads(file.read()) return dcit except Exception as e: print(f'读取发生错误: {e}') return None结合上述两个函数,读取文本中的颜色保存到字典并调用显示: 例如: colors = read_colortxt("RGBcolors.txt") # 打开并获取RGBcolors.txt的颜色 coler_HexDec(colors['白']) 5、实验效果与源码1)RGB三色LED实验效果 2)本文用到的程序和文本:点击获取,密码:rgb32 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |