ESP32(MicroPython) 网页控制WS2812
MicroPython提供了网页功能,可以使用HTML和CSS的大部分功能,并通过请求来调整变量的值和显示的文字,但不能添加图片(在线版FontAwsome可以正常使用)。本程序实现了通过网页调节RGB渐变流水灯程序的参数,视频只展示了网页的内容。
要注意的一点是多线程功能启动后可能无法连接WiFi,需要把连接WiFi的代码放到进程内容前面。网页居中排列各内容,未使用框架形式以实现每一行灵活分配按钮数量。按钮颜色分别设置,使用渐变形式。实际运行时发现部分参数的设定会干扰其它参数,原因尚不明确。
代码如下
#导入Pin模块
from machine import Pin
import time
import network
import socket
from neopixel import NeoPixel
import _thread
led1=Pin(15,Pin.OUT)
# 五向导航按键,COM引脚接3.3V
key1 = Pin(21, Pin.IN, Pin.PULL_DOWN)
key2 = Pin(19, Pin.IN, Pin.PULL_DOWN)
key3 = Pin(18, Pin.IN, Pin.PULL_DOWN)
key4 = Pin(5, Pin.IN, Pin.PULL_DOWN)
key5 = Pin(17, Pin.IN, Pin.PULL_DOWN)
key6 = Pin(16, Pin.IN, Pin.PULL_DOWN)
pin=13
rgb_num=24
rgb_led=NeoPixel(Pin(pin,Pin.OUT),rgb_num)
#连接的WIFI账号和密码
ssid = " "
password = " "
key_en=1
#按键扫描函数
def key_scan():
global key_en
if key_en==1 and (key1.value()==1 or key2.value()==1 or key3.value()==1 or key4.value()==1 or
key5.value()==1 or key6.value()==1 ):
time.sleep_ms(10)
key_en=0
if key1.value()==1:
return 1
elif key2.value()==1:
return 2
elif key3.value()==1:
return 3
elif key4.value()==1:
return 4
elif key5.value()==1:
return 5
elif key6.value()==1:
return 6
elif (key1.value()==0 and key2.value()==0 and key3.value()==0 and key4.value()==0 and
key5.value()==0 and key6.value()==0 ) :
key_en=1
return 0
brightness=6
delay=40
mode=1
def key_get(): #获取键值并改变变量的值
global brightness
global delay
global mode
key=key_scan()
if key==1 and brightness<30 :
brightness+=3
elif key==2 and brightness>3 :
brightness-=3
elif key==3 and delay<90 :
delay+=10
elif key==4 and delay>10 :
delay-=10
elif key==5 and mode<2 :
mode+=1
elif key==6 and mode>0 :
mode-=1
#WIFI连接
def wifi_connect():
wlan=network.WLAN(network.STA_IF) #STA模式
wlan.active(True) #激活
if not wlan.isconnected():
print("conneting to network...")
wlan.connect(ssid,password) #输入 WIFI 账号密码
while not wlan.isconnected():
led1.value(1)
time.sleep_ms(300)