Skip to content

Commit 87fee11

Browse files
authored
Merge pull request #2295 from adafruit/led-noodle-lantern
adding code for led noodle lantern
2 parents dcc9824 + 2330090 commit 87fee11

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

LED_Noodle_Lantern/code.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# SPDX-FileCopyrightText: 2022 Noe Ruiz for Adafruit Industries
2+
# SPDX-License-Identifier: MIT
3+
# Adafruit nOOds lantern with "analog" (PWM) brightness control using GPIO.
4+
# Uses 6 nOOds, anode (+) to GPIO pin, cathode (-) to ground.
5+
# A current-limiting resistor (e.g. 10 Ohm) can go at either end.
6+
7+
import math
8+
import time
9+
import board
10+
import pwmio
11+
from digitalio import DigitalInOut, Direction, Pull
12+
13+
PINS = (board.SCK, board.MOSI, board.A1, board.A3, board.MISO, board.A2) # List of pins
14+
GAMMA = 2.6 # For perceptually-linear brightness
15+
16+
# Convert pin number list to PWMOut object list
17+
pin_list = [pwmio.PWMOut(pin, frequency=1000, duty_cycle=0) for pin in PINS]
18+
19+
# Button switch set up
20+
switch = DigitalInOut(board.A0)
21+
switch.direction = Direction.INPUT
22+
switch.pull = Pull.UP
23+
24+
# LED set up
25+
led = DigitalInOut(board.TX)
26+
led.direction = Direction.OUTPUT
27+
28+
while True: # Repeat forever...
29+
# If the button is pressed turn on LED n00ds
30+
if switch.value:
31+
for i, pin in enumerate(pin_list): # For each pin...
32+
# Calc sine wave, phase offset for each pin, with gamma correction.
33+
# If using red, green, blue nOOds, you'll get a cycle of hues.
34+
phase = (time.monotonic() - 2 * i / len(PINS)) * math.pi
35+
brightness = int((math.sin(phase) + 1.0) * 0.5 ** GAMMA * 65535 + 0.5)
36+
pin.duty_cycle = brightness
37+
led.value = True # Turn button LED on
38+
else: # Otherwise turn LED n00ds off
39+
for i, pin in enumerate(pin_list):
40+
pin.duty_cycle = 0
41+
led.value = False # Turn button LED off
42+
43+
time.sleep(.01)

0 commit comments

Comments
 (0)