12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- import time
- from machine import PWM, Pin
- from config import LED_LIST
- class Leds:
- def __init__(self):
- self.led_count = len(LED_LIST)
- self.pwm = [None] * self.led_count
- self.vals = [0] * self.led_count
- self.diff = [0.0] * self.led_count
- self.stepId = [0] * self.led_count
- self.steps = 50
- self.frequency = 800
-
- def enable(self, i):
- if not self.pwm[i]:
- self.pwm[i] = PWM(Pin(LED_LIST[i][1]), channel=LED_LIST[i][2], freq=self.frequency, duty=0)
- def enableAll(self):
- for i in range(self.led_count):
- self.enable(i)
- def disable(self, i):
- if self.pwm[i]:
- self.pwm[i].deinit()
- self.pwm[i] = None
- def disableAll(self):
- for i in range(self.led_count):
- self.disable(i)
- def setColor(self, i, val):
- if not self.pwm[i]:
- return
- self.diff[i] = float(self.vals[i] - self.pwm[i].duty()) / (self.steps)
- self.vals[i] = val
- self.stepId[i] = 0
- def update(self):
- for i in range(self.led_count):
- if not self.pwm[i]:
- continue
- if self.stepId[i] > self.steps:
- self.pwm[i].duty(self.vals[i])
- else:
- self.pwm[i].duty(int(self.vals[i] - self.diff[i] * (self.steps - self.stepId[i])))
- self.stepId[i] += 1
-
|