Inky Frame: Use new PWMLED for led_busy and led_wifi.

docs/inky73
Phil Howard 2023-03-08 20:15:38 +00:00
rodzic 3f92caee22
commit f255f419a1
2 zmienionych plików z 30 dodań i 3 usunięć

Wyświetl plik

@ -1,4 +1,4 @@
from pimoroni import ShiftRegister
from pimoroni import ShiftRegister, PWMLED
from machine import Pin, I2C, RTC
from wakeup import get_shift_state, reset_shift_state
from micropython import const
@ -167,5 +167,5 @@ button_c = Button(sr, 5, LED_C)
button_d = Button(sr, 4, LED_D)
button_e = Button(sr, 3, LED_E)
led_busy = Pin(LED_BUSY, Pin.OUT)
led_wifi = Pin(LED_WIFI, Pin.OUT)
led_busy = PWMLED(LED_BUSY)
led_wifi = PWMLED(LED_WIFI)

Wyświetl plik

@ -224,3 +224,30 @@ class ShiftRegister:
def is_set(self, mask):
return self.read() & mask == mask
# A basic wrapper for PWM with regular on/off and toggle functions from Pin
# Intended to be used for driving LEDs with brightness control & compatibility with Pin
class PWMLED:
def __init__(self, pin, invert=False):
self._invert = invert
self._led = PWM(Pin(pin, Pin.OUT))
self._led.freq(1000)
self._brightness = 0
self.brightness(0)
def brightness(self, brightness):
brightness = min(1.0, max(0.0, brightness))
self._brightness = brightness
if self._invert:
brightness = 1.0 - brightness
self._led.duty_u16(int(65535 * brightness))
def on(self):
self.brightness(1)
def off(self):
self.brightness(0)
def toggle(self):
self.brightness(1 - self._brightness)