然后尝试着点亮一些灯源代码如下
代码: 全选
from machine import Pin
from neopixel import NeoPixel
import time
p5 = Pin(5,Pin.OUT) ###定义引脚
np = NeoPixel(p5,256)###定义灯的个数
r = g = b = 0
yanse = ###缓存区
for i in range (256): ###缓存区赋值
if i < 80 :
r = r + 1
if i >= 80 and i < 160 :
r = 0
g = g + 1
if i >= 160 :
g = 0
b = b + 1
yanse.append ((r,g,b))
for i in range (256):
np[i] = yanse
[i]np.write() ###写入[/i][/i]
就开始想着能不能让点阵动起来呢,形成一个跑马灯
代码: 全选
from machine import Pin
from neopixel import NeoPixel
import time
p5 = Pin(5,Pin.OUT)
np = NeoPixel(p5,256)
r = g = b = 0
yanse =
for i in range (256):
if i < 80 :
r = r + 1
if i >= 80 and i < 160 :
r = 0
g = g + 1
if i >= 160 :
g = 0
b = b + 1
yanse.append ((r,g,b))
while 1 :
for i in range (256):
np[i]= yanse
[i]np.write()
a = yanse[0] #保存第一个颜色
for i in range (256): #把每一种颜色在列表里面向前挪一位
if i <255:
yanse [i] = yanse [i+1]
else :
yanse[i] = a #把第一个颜色放在255位上 形成一个循环[/i][/i][/i][/i]
代码: 全选
from machine import Pin
from neopixel import NeoPixel
import time
p5 = Pin(5,Pin.OUT)
np = NeoPixel(p5,256)
r = g = b = 0
yanse =
for i in range (256) :#添加多一点颜色
if i < 32 :
r = r + 1
if i >= 32 and i < 64 :
g = g + 1
if i >= 64 and i < 96 :
r = r - 1
if i >= 96 and i < 128 :
b = b + 1
if i >= 128 and i < 160 :
g = g - 1
if i >= 160 and i < 192 :
r = r + 1
if i >= 192 and i < 224 :
g = g + 1
if i >= 224 :
r = r - 1
g = g - 1
b = b - 1
yanse.append((r,g,b))
while 1 :
for i in range (256):
np[i]= yanse
[i]np.write()
a = yanse[0]
for i in range (256):
if i <255:
yanse [i] = yanse [i+1]
else :
yanse[i] = a[/i][/i][/i][/i]
[i][i]么继续往下走,能不能一排一排的变换呢因为这个灯的排列方式是蛇形排列的,所以呢要一排一排的变化要有在代码上做点改变
代码: 全选
from machine import Pin
from neopixel import NeoPixel
import time
p5 = Pin(5,Pin.OUT)
np = NeoPixel(p5,256)
r = g = b = 0
yanse =
zhongjian = #保存颜色的缓存中间列表
def shuzu(): #数组,保存和改变颜色的缓存区
global r,g,b
for i in range (256) :
if i < 32 :
r = r + 1
if i >= 32 and i < 64 :
g = g + 1
if i >= 64 and i < 96 :
r = r - 1
if i >= 96 and i < 128 :
b = b + 1
if i >= 128 and i < 160 :
g = g - 1
if i >= 160 and i < 192 :
r = r + 1
if i >= 192 and i < 224 :
g = g + 1
if i >= 224 :
r = r - 1
g = g - 1
b = b - 1
yanse.append((r,g,b))
def bianhuan(): #变换队列的函数
for i in range (16) : #先把前面16位颜色数据保存起来
zhongjian.append((yanse[i]))
j = 16 #第一排已经保存下来了 ,第二排要向前一排,所以从第16位开始
for i in range(15) : #一共要进行15排的变化
for k in range (1,33,2) : #第16->15,17->14,18->13以此类推
yanse[j-k] =yanse[j]
j = j + 1
for i in range (16) : #把最后排颜色更改
yanse[255-i] = zhongjian
[i]for i in range(256) :
np[i] = yanse
[i]shuzu()
while 1 :
bianhuan()
np.write()[/i][/i][/i][/i]
如图这么做有一个bug,就是最后所有颜色都会变成第一排的红色,我仔细看了一下我的源代码,发现我保存列表 zhongjian 的时候使用的是全局变量,所以会导致最后都变红。修改后的代码如下:
代码: 全选
from machine import Pin
from neopixel import NeoPixel
import time
p5 = Pin(5,Pin.OUT)
np = NeoPixel(p5,256)
r = g = b = 0
yanse =
def shuzu():
global r,g,b
for i in range (256) :
if i < 32 :
r = r + 1
if i >= 32 and i < 64 :
g = g + 1
if i >= 64 and i < 96 :
r = r - 1
if i >= 96 and i < 128 :
b = b + 1
if i >= 128 and i < 160 :
g = g - 1
if i >= 160 and i < 192 :
r = r + 1
if i >= 192 and i < 224 :
g = g + 1
if i >= 224 :
r = r - 1
g = g - 1
b = b - 1
yanse.append((r,g,b))
def bianhuan():
zhongjian =
for i in range (16) :
zhongjian.append((yanse[i]))
j = 16
for i in range(15) :
for k in range (1,33,2) :
yanse[j-k] =yanse[j]
j = j + 1
for i in range (16) :
yanse[255-i] = zhongjian
[i]for i in range(256) :
np[i] = yanse
[i]shuzu()
while 1 :
bianhuan()
np.write()[/i][/i][/i][/i]
[i][i][i][i][i]这一期我就先做到这里了,下一期我会做汉字的显示和一些动态的小游戏[/i][i]末尾彩蛋 圣诞之夜 [/i][i]中间绿色的是一颗圣诞树,然后飘着雪花,雪花可是能堆满消减的。[/i]
这个效果可是我们的站长做的,需要源码的话就要多发帖,多给他留言,他就会传授给你
[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]