Micropython学习交流群 学习QQ群:786510434 提供多种固件下载和学习交流。

Micropython-扇贝物联 QQ群:31324057 扇贝物联是一个让你与智能设备沟通更方便的物联网云平台

Micropython学习交流群 学习QQ群:468985481 学习交流ESP8266、ESP32、ESP8285、wifi模块开发交流、物联网。

Micropython老哥俩的IT农场分享QQ群:929132891 为喜欢科创制作的小白们分享一些自制的计算机软硬件免费公益课程,由两位多年从事IT研发的中年大叔发起。

Micropython ESP频道

ESP32(MicroPython) 电位器控制RGB灯(WS2812)


ESP32(MicroPython) 电位器控制RGB灯(WS2812)

本程序读取多路ADC值控制RGB灯。由于LED灯是非线性元件,这种方式可以更精确地调节并且方便控制多个灯。


代码如下


#接线: WS-->(27)

#ADC引脚:33、32、35

 

#导入Pin模块

from machine import Pin

from neopixel import NeoPixel

import time

import random

from machine import ADC

from machine import Timer

 

#定义RGB控制对象

#控制引脚为16,RGB灯串联5个

pin=27

rgb_num=5

rgb_led=NeoPixel(Pin(pin,Pin.OUT),rgb_num)

#定义ADC控制对象

adc1=ADC(Pin(33))

adc1.atten(ADC.ATTN_11DB)  #开启衰减,量程增大到3.3V

adc2=ADC(Pin(32))

adc2.atten(ADC.ATTN_11DB)  #开启衰减,量程增大到3.3V

adc3=ADC(Pin(35))

adc3.atten(ADC.ATTN_11DB)  #开启衰减,量程增大到3.3V

 

a=0

b=0

c=0

 

#定时器0中断函数

def time0_irq(time0):

    a=255*adc1.read()//4095

    b=255*adc2.read()//4095

    c=255*adc3.read()//4095

    for i in range(rgb_num):

                rgb_led[i]=(a, b, c)

                rgb_led.write()

                

#程序入口

if __name__=="__main__" :

    time0=Timer(0)  #创建time0定时器对象

    time0.init(period=20,mode=Timer.PERIODIC,callback=time0_irq)

    while True:

        pass


————————————————

版权声明:本文为CSDN博主「路易斯720」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_74155302/article/details/130997909



推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 ESP56.com All Rights Reserved

执行时间: 0.010380983352661 seconds