2624浏览
查看: 2624|回复: 1

[入门教程] 10mmRGB全彩LED传感器在掌控下的使用(搬运)

[复制链接]
近来在看台湾赵英杰的《超图解Python物联网实作入门:使用ESP8266与Micropython》(以下简称《超图解Python》)里面一些例子蛮有趣的。
掌控的主芯片是ESP32的,烧录的固件也是基于micropython的,应该可以通用,无非是掌控下的一些引脚及模块的定义重新做“改动”,所以有了“搬运”的想法。

材料:
1. RGB全彩LED一个(Arduino下传感器套装基本都会有)
2. 掌控板
3. microbit扩展板一个
   手头没有掌控的扩展板,盛思的又迟迟不见动静(吐槽下)。microbit的扩展板也可以用,不过需要掌控板反插,本人喵粉,用的是喵家的iobit扩展板。
4. 杜邦线若干(母对母杜邦线,也可以配合面包板使用公对母杜邦线)

接线:(此次用的RGB传感器是共电的,还有一种共地的。)
RGB     掌控
V       3.3V
R       P1
G       P0
B       P5
此次是要使用引脚的 PWM 模块,掌控上的P3和P4引脚不支持PWM。

原理:
颜色表达有RGB和HSV两种格式。两者的转换百度能够查到。此次是通过定义引脚的PWM(Pulse Width Modulation 脉宽调制)模块(module),给出特定的duty(占空比)值,让RGB传感器产生颜色变化。

准备:
需要进行HSV的颜色数据操作,RGB和HSV转换,先编程个color.py 文件作为这个RGB和HSV转换的“库文件”
此程序出处在《超图解Python》书上
color.py 文件内程序如下:

def hsv2rgb(h, s, v):
    if s == 0.0:
        return v, v, v

    r, g, b = v, v, v

    i = int(h/60.0)
    f = h/60.0 - i

    if i == 0:
        g *= 1.0 - s * (1.0 - f)
        b *= 1.0 - s
    elif i == 1:
        r *= 1.0 - s * f
        b *= 1.0 - s
    elif i == 2:
        r *= 1.0 - s
        b *= 1.0 - s * (1.0 - f)
    elif i == 3:
        r *= 1.0 - s
        g *= 1.0 - s * f
    elif i == 4:
        r *= 1.0 - s * (1.0 - f)
        g *= 1.0 - s
    elif i == 5:
        g *= 1.0 - s
        b *= 1.0 - s * f

    return (int(r * 1023.0), int(g * 1023.0), int(b * 1023.0))

把 color.py 文件考入掌控板中

在掌控的 REPL界面下试验:
from mpython import Pin, PWM
import time
import color
R_Pin = PWM(Pin(Pin.P1))
G_Pin = PWM(Pin(Pin.P0))
B_Pin = PWM(Pin(Pin.P5))
def wheel():
    for i in range(360):
        RGB = color.hsv2rgb(i, 1, 1)
        R_Pin.duty(RGB[0])
        G_Pin.duty(RGB[1])
        B_Pin.duty(RGB[2])
        time.sleep_ms(50)



wheel()    # 调用定义的wheel()函数

10mmRGB全彩LED灯会出现颜色的渐进式变化

P.S. 以上程序原出处均出自于《超图解Python》(针对掌控的一些模块及引脚定义做了相应的修改)

10mmRGB全彩LED传感器在掌控下的使用(搬运)图1

rzyzzxw  版主

发表于 2019-4-28 18:20:59

DF很快要出掌控扩展板了,出了我送您一块哈。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail