#!/usr/bin/env python
# coding: utf-8
'''
@File :ws2812.py
@Author :youxinweizhi
@Date :2020/11/20
@Github :https://github.com/youxinweizhi
'''
from machine import Pin,Timer
from neopixel import NeoPixel
import random,time
# import uasyncio
class WS2812(object):
def __init__(self,led_pin,led_number):
#定义亮度
self.brightness=1
#定义颜色
self.Red = (51, 0, 0)
self.Orange = (51, 34, 0)
self.Yellow = (51, 51, 0)
self.Green = (0, 51, 0)
self.Blue = (0, 0, 51)
self.Indigo = (0, 26, 51)
self.Purple = (29, 0, 51)
self.black = (0, 0, 0)
#定义数量
self.led_number=led_number
#定义Pin(led_pin, Pin.OUT) # set GPIO0 to output to drive NeoPixels
self.pin=Pin(led_pin,Pin.OUT)
self.np = NeoPixel(self.pin, self.led_number) # create NeoPixel driver on GPIO0 for 8 pixels
@property
def set_brightness(self):
return self.brightness
@set_brightness.setter
def set_brightness(self,num):
if num >=0 and num<=5:
self.brightness=num
if self.brightness==5:
self.Red = (255, 0, 0)
self.Orange = (255, 165, 0)
self.Yellow = (255, 255, 0)
self.Green = (0, 255, 0)
self.Blue = (0, 0, 255)
self.Indigo = (0, 127, 255)
self.Purple = (139, 0, 255)
elif self.brightness==4:
self.Red = (204, 0, 0)
self.Orange = (204, 133, 0)
self.Yellow = (204, 204, 0)
self.Green = (0, 204, 0)
self.Blue = (0, 0, 204)
self.Indigo = (0, 102, 204)
self.Purple = (113, 0, 204)
elif self.brightness==3:
self.Red = (153, 0, 0)
self.Orange = (153, 100, 0)
self.Yellow = (153, 153, 0)
self.Green = (0, 153, 0)
self.Blue = (0, 0, 153)
self.Indigo = (0, 77, 153)
self.Purple = (85, 0, 153)
elif self.brightness==2:
self.Red = (102, 0, 0)
self.Orange = (102, 67, 0)
self.Yellow = (102, 102, 0)
self.Green = (0, 102, 0)
self.Blue = (0, 0, 102)
self.Indigo = (0, 51, 102)
self.Purple = (57, 0, 102)
elif self.brightness==1:
self.Red = (51, 0, 0)
self.Orange = (51, 34, 0)
self.Yellow = (51, 51, 0)
self.Green = (0, 51, 0)
self.Blue = (0, 0, 51)
self.Indigo = (0, 26, 51)
self.Purple = (29, 0, 51)
elif self.brightness==0:
self.Red = (26, 0, 0)
self.Orange = (26, 17, 0)
self.Yellow = (26, 26, 0)
self.Green = (0, 26, 0)
self.Blue = (0, 0, 26)
self.Indigo = (0, 13, 26)
self.Purple = (15, 0, 26)
else:
print('only 0-5')
def off(self):
self.colour(self.black)
#控制灯的颜色
def colour(self,rgb):
for x in range(self.led_number):
self.np[x]=rgb
self.np.write() # write data to all pixels
#设置指定的led灯的颜色
def set_led(self,rgb,num=0):
self.np[num]=rgb
self.np.write() # write data to all pixels
#随机颜色灯
def set_random(self):
for x in range(self.led_number):
r=random.randint(0,100)
g=random.randint(0,100)
b=random.randint(0,100)
self.np[x]=(r,g,b)
self.np.write() # write data to all pixels
#设置流水灯的颜色
def set(self,rgb):
for x in range(self.led_number):
self.np[x]=rgb
self.np.write()
time.sleep_ms(500)
self.np[x]=(0,0,0)
self.np.write()
led=WS2812(2,1)
# led.set_random()