书接上回:https://www.douban.com/note/825621438/?_i=4925904IQ8I-tg

最终程序:

from m5stack import *
from m5ui import *
from uiflow import *
from m5mqtt import M5mqtt
import time
import unit
setScreenColor(0x111111)
neopixel_0 = unit.get(unit.NEOPIXEL, unit.PORTA, 29)
R = None
G = None
B = None
i = None
import random
def fun_led_(topic_data):
global R, G, B, i
if topic_data == 'on':
while True:
R = random.randint(0, 255)
G = random.randint(0, 255)
B = random.randint(0, 255)
for i in range(1, 31):
neopixel_0.setColorFrom(1,i,(R << 16) | (G << 8) | B)
wait_ms(500)
for i in range(1, 31):
neopixel_0.setColorFrom(1, i, 0x000000)
wait_ms(500)
wait_ms(2)
else:
neopixel_0.setColorFrom(1, 30, 0x000000)
pass
m5mqtt = M5mqtt('M5StackCPlus', '192.168.50.232', 1883, '', '', 300)
m5mqtt.subscribe(str('led'), fun_led_)
m5mqtt.start()

测试的时候只需要向led这个topic发送一个on字符串就可以激活灯带了。

OK

遇到了两件事:

1、第一,烧录程序到实体机器之后,ONLINE EDITOR模式就不灵了。。。啊,这很操蛋

2、这个程序有一个BUG

就是26行的那个while true

是有问题的.....

一旦进入,系统就不再响应m5mqtt的subscribe的函数了,很搞笑的

所以你一旦开了LED,就关不掉了,好吧,今天先这样

今天先这样,没事

再说了,再看看硬件中断是否能组织这种神奇的东西