import machine from machine import bitstream import time class NewPixel: # G R B W ORDER = (1, 0, 2, 3, 4) def __init__(self, pin, n, bpp=5, timing=1): self.pin = pin self.n = n self.bpp = bpp self.buf = bytearray(n * bpp) self.pin.init(pin.OUT) # Timing arg can either be 1 for 800kHz or 0 for 400kHz, # or a user-specified timing ns tuple (high_0, low_0, high_1, low_1). # self.timing = (220, 580, 580, 580) self.timing = (300, 650, 650, 650) def __len__(self): return self.n def __setitem__(self, i, v): offset = i * self.bpp for i in range(self.bpp): self.buf[offset + self.ORDER[i]] = v[i] def __getitem__(self, i): offset = i * self.bpp return tuple(self.buf[offset + self.ORDER[i]] for i in range(self.bpp)) def fill(self, v): b = self.buf l = len(self.buf) bpp = self.bpp for i in range(bpp): c = v[i] j = self.ORDER[i] while j < l: b[j] = c j += bpp def write(self): # BITSTREAM_TYPE_HIGH_LOW = 0 # print(self.timing) bitstream(self.pin, 0, self.timing, self.buf) def clear(self): self.buf = (0,0,0,0,0) self.write() def get_colour(self, pixel_number): print(self[pixel_number]) class ColorModes: def __init__(self): pass np = NewPixel(machine.Pin(1), 10) np[0] = (0, 0, 0, 0, 0) np.write() breath_value = 0 breath_up = True colour = "red" np[1] = (0, 0, 0, 0, 0) np.write() np[1] = (255, 0, 255, 0, 0) np.write() # np[2] = (255, 0, 0, 0, 0) # np.write() # if breath_value < 255 and breath_up is True: # if colour == "red": # np[0] = (breath_value, 0, 0, 0, 0) # np[1] = (breath_value, 0, 0, 0, 0) # np.write() # np.get_colour(0) # time.sleep(0.05) # elif colour == "green": # np[0] = (0 ,breath_value, 0, 0, 0) # np[1] = (0, breath_value, 0, 0, 0) # np.write() # time.sleep(0.05) # elif colour == "blue": # np[0] = (0 ,0, breath_value, 0, 0) # np[1] = (0, 0, breath_value, 0, 0) # np.write() # time.sleep(0.05) # np[0] = (0, 0, 0, 0, 0) # np.write() # np[0] = (0, breath_value, 0, 0, 0) # np.write() # time.sleep(1) # np[0] = (0, 0, 0, 0, 0) # np.write() # np[0] = (0, 0, breath_value, 0, 0) # np.write() # time.sleep(1) # np[0] = (0, 0, 0, 0, 0) # # np.write() # np[0] = (0, 0, 0, breath_value, 0) # np.write() # time.sleep(1) # # np[0] = (0, 0, 0, 0, 0) # np.write() # np[0] = (0, 0, 0, 0, breath_value) # np.write() # time.sleep(1) # np[0] = (0, 0, 0, 0, 0) # np.write() # breath_value += 5 # print(breath_value) # else: # breath_up = False # breath_value -= 5 # print(breath_value) # if colour == "red": # np[0] = (breath_value, 0, 0, 0, 0) # np[1] = (breath_value, 0, 0, 0, 0) # np.write() # time.sleep(0.05) # elif colour == "green": # np[0] = (0, breath_value, 0, 0, 0) # np[1] = (0, breath_value, 0, 0, 0) # np.write() # time.sleep(0.05) # elif colour == "blue": # np[0] = (0, 0, breath_value, 0, 0) # np[1] = (0, 0, breath_value, 0, 0) # np.write() # time.sleep(0.05) # if breath_value == 0: # breath_up = True # if colour == "red": # colour = "green" # elif colour == "green": # colour = "blue" # elif colour == "blue": # colour = "red" # np[0] = (0, 0, 0, 0, 0) # np.write() # np[0] = (0, breath_value, 0, 0, 0) # np.write() # time.sleep(1) # np[0] = (0, 0, 0, 0, 0) # np.write() # np[0] = (0, 0, breath_value, 0, 0) # np.write() # time.sleep(1) # np[0] = (0, 0, 0, 0, 0) # # np.write() # np[0] = (0, 0, 0, breath_value, 0) # np.write() # time.sleep(1) # # np[0] = (0, 0, 0, 0, 0) # np.write() # np[0] = (0, 0, 0, 0, breath_value) # np.write() # time.sleep(1) # np[0] = (0, 0, 0, 0, 0) # np.write()