| # APA102 driver for MicroPython on ESP8266 |
| # MIT license; Copyright (c) 2016 Robert Foss, Daniel Busch |
| |
| from esp import apa102_write |
| |
| class APA102: |
| def __init__(self, clock_pin, data_pin, n): |
| self.clock_pin = clock_pin |
| self.data_pin = data_pin |
| self.n = n |
| self.buf = bytearray(n * 4) |
| |
| self.clock_pin.init(clock_pin.OUT) |
| self.data_pin.init(data_pin.OUT) |
| |
| def __setitem__(self, index, val): |
| r, g, b, brightness = val |
| self.buf[index * 4] = r |
| self.buf[index * 4 + 1] = g |
| self.buf[index * 4 + 2] = b |
| self.buf[index * 4 + 3] = brightness |
| |
| def __getitem__(self, index): |
| i = index * 4 |
| return self.buf[i], self.buf[i + 1], self.buf[i + 2], self.buf[i + 3] |
| |
| def write(self): |
| apa102_write(self.clock_pin, self.data_pin, self.buf) |