641|1

10

帖子

6

TA的资源

一粒金砂(中级)

楼主
 

【得捷电子Follow me第2期】 任务3:控制WS2812B [复制链接]

  本帖最后由 青蛙2009 于 2023-8-19 18:19 编辑

【得捷电子Follow me第2期】 任务3:控制WS2812B

使用电位计控制板载的Neopixel LED的显示和颜色切换。
需要额外用到两个电位计,和一些杜邦线:其中一个电位计控制亮度,另一个电位计控制色度。
用这两个电位计控制、板载的Neopixel LED,实现LED的颜色切换和亮度调节。

接线:

1、两个电位计两侧引脚并联

2、电位计两侧引脚Vcc、Gnd接开发板

3、两个电位计中间引脚分别接A0、A1

编程语言和环境用CircuitPython:

开发板:

Adafruit Feather ESP32-S3 TFT

运行环境:

Adafruit CircuitPython 8.2.3 on 2023-08-11

编辑器:

mu-editor

用到的模块:

1、内置的模块:time、analogio、board、rainbowio

2、需要的额外模块:neopixel

需要把:adafruit_pixelbuf.mpy、neopixel.mpy两个库文件复制到开发板的lib目录下。

代码解析:

以下是core.py文件完整代码:

#用两个电位计控制neopixel RGB彩灯
import time
import analogio
import digitalio
import board
import neopixel
from rainbowio import colorwheel


rx=analogio.AnalogIn(board.A0)
ry=analogio.AnalogIn(board.A1)
led=neopixel.NeoPixel(board.NEOPIXEL, 1)

def getV(pin):
    return pin.value/61000

def getHue():
    return colorwheel(getV(rx)*255)

def getBrightness():
    v = round(getV(ry),2)
    return v


while True:
    hue=getHue()
    brightness=getBrightness()
    led[0]=hue
    led.brightness=brightness
    print((hue, brightness))
    time.sleep(0.02)

rx、ry:分别是两个电位计输入,读取的是A0跟A1的模拟信号输入。

led:表示neopixel的彩灯。

getV(pin):函数是将模拟信号的输入值归一化,模拟输入的取值范围是0~65535。

正常来说应该是除以65535,但是有个教程说esp32有点限制,到不了65535,

照着那个教程也用了61000。

getHue():函数是将rx的取值范围改到0~255表示色度。

getBrightness():函数是将ry的取值0.00~1.00保留两位小数,因为小数位太多可能有点抽。

colorwheel():函数是rainbowio模块里面的,主要功能就是包0~255的色度值转成RGB值。

循环里面就是读取rx,ry值,再赋值给led。

 

效果如下:

调亮度:

 

调色度:

任务视频演示
任务源码

 

活动的心得体会:

第一次参加这种活动,生怕白嫖不了,里面卖的东西普遍贼贵,我买了两个运动传感器,

别问为啥买两个,问就是点错了,基本用不上了,贼可惜。

也是第一次用python做这种开发,虽然代码很简单,但是,学完很明显感觉对底层了解不够。

快速开发实现一些想法之类的还行。

 

最新回复

看楼主的器件很专业呀,分享这么好的帖子,期待精彩继续!  详情 回复 发表于 2023-8-20 21:35
点赞 关注
 
 

回复
举报

6973

帖子

11

TA的资源

版主

沙发
 
看楼主的器件很专业呀,分享这么好的帖子,期待精彩继续!
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表