Skip to content

Commit

Permalink
Merge pull request #19 from pimoroni/examples/leds
Browse files Browse the repository at this point in the history
add LED examples
  • Loading branch information
helgibbons authored Oct 15, 2024
2 parents bf735fc + e50622c commit 5eb7def
Show file tree
Hide file tree
Showing 4 changed files with 135 additions and 1 deletion.
2 changes: 1 addition & 1 deletion docs/reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ PicoGraphics is a wrapper around a big ol' chunk of RAM, which corresponds to th

## Basic Drawing Functions

Since there are many, many things you can do with PicoGraphics that would be silly to repeat here, I'll send you over to our main MicroPython repository for [a full PicoGraphics function reference.][https://github.com/pimoroni/pimoroni-pico/blob/main/micropython/modules/picographics/README.md#function-reference]
Since there are many, many things you can do with PicoGraphics that would be silly to repeat here, I'll send you over to our main MicroPython repository for [a full PicoGraphics function reference][https://github.com/pimoroni/pimoroni-pico/blob/main/micropython/modules/picographics/README.md#function-reference]

## Changing The Display Mode

Expand Down
8 changes: 8 additions & 0 deletions examples/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,14 @@ Displays light, accelerometer and temperature data!

Gotta put something on that little breadboard, right! How about more buttons. You can never have enough buttons. The ones they keep taking out of cars must go somewhere!?

# external_leds.py

More bling for your breadboard! If you liked it then you should have put an LED on it.

# external_rgb_led.py

What's better than an ordinary LED? A RGB LED! (it's actually three teeny tiny ordinary LEDs smooshed together, but don't tell anyone!)

# image_gallery.py

At a loss for what to do with your Explorer. Clock just not your cup of tea? How about a digital photo frame! Those are still cool, right?
Expand Down
46 changes: 46 additions & 0 deletions examples/external_leds.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
"""
Connect (up to) 3 LEDs to Explorer and turn them on and off with buttons A, B and C.
Wire the long leg of your LEDs up to GP0, GP1 and GP2. The other leg should be wired to ground.
(Note that you don't need to include a resistor in your circuit to current-limit the LEDs with Explorer, as there are resistors on the board).
"""

from machine import Pin
import time
from explorer import display, button_a, button_b, button_c, BLACK, WHITE

# Set up the LEDs
led_0 = Pin(0, Pin.OUT)
led_1 = Pin(1, Pin.OUT)
led_2 = Pin(2, Pin.OUT)

# Clear all layers first
display.set_layer(0)
display.set_pen(BLACK)
display.clear()
display.set_layer(1)
display.set_pen(BLACK)
display.clear()

# Set the layer we're going to be drawing to.
display.set_layer(0)

# Draw some text to the screen
display.set_pen(WHITE)
display.text("Wire up some LEDs to GP0, GP1 and GP2, and then push buttons A, B and C", 0, 0, 320, 4)
display.update()

while True:
# Start the loop with all LEDs off
led_0.off()
led_1.off()
led_2.off()
# Because we're using Pin.PULL_UP the logic is reversed - '0' is pushed and '1' is unpushed
if button_a.value() == 0:
led_0.on()
if button_b.value() == 0:
led_1.on()
if button_c.value() == 0:
led_2.on()
# Short pause to stop Thonny from falling over
time.sleep(0.01)
80 changes: 80 additions & 0 deletions examples/external_rgb_led.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
"""
Connect an old school four legged RGB LED up to Explorer and toggle the Red, Green and Blue channels with buttons A, B and C.
Press X for rainbows!
Position your LED so the long leg is pin 2 - this leg should be connected to ground.
The other three legs (pins 1, 3 and 4) are R, G and B - these should be wired to GP0, GP1 and GP2.
(Note that you don't need to include resistors in your circuit with Explorer, as there are resistors on the board).
"""
import time
from explorer import display, button_a, button_b, button_c, button_x, BLACK, WHITE
from pimoroni import RGBLED


# From CPython Lib/colorsys.py
def hsv_to_rgb(h, s, v):
if s == 0.0:
return v, v, v
i = int(h * 6.0)
f = (h * 6.0) - i
p = v * (1.0 - s)
q = v * (1.0 - s * f)
t = v * (1.0 - s * (1.0 - f))
i = i % 6
if i == 0:
return v, t, p
if i == 1:
return q, v, p
if i == 2:
return p, v, t
if i == 3:
return p, q, v
if i == 4:
return t, p, v
if i == 5:
return v, p, q


# Set up an old school 4 pin RGB LED connected to GP0, GP1 and GP2
led = RGBLED(0, 1, 2, invert=False)

# Variables to keep track of rainbows
rainbow_mode = False
h = 0

# Clear all layers first
display.set_layer(0)
display.set_pen(BLACK)
display.clear()
display.set_layer(1)
display.set_pen(BLACK)
display.clear()

# Set the layer we're going to be drawing to.
display.set_layer(0)

# Draw some text to the screen
display.set_pen(WHITE)
display.text("Wire an RGB LED up to GP0, GP1 and GP2, and then press A, B, C or X", 0, 0, 320, 4)
display.update()

while True:
# Toggle rainbow mode if button X is pushed
if button_x.value() == 0:
rainbow_mode = not rainbow_mode
if rainbow_mode is True: # then apply rainbow magic
h += 1
r, g, b = [int(255 * c) for c in hsv_to_rgb(h / 360.0, 1.0, 1.0)]
led.set_rgb(r, g, b)

# Because we're using Pin.PULL_UP the logic is reversed - '0' is pushed and '1' is unpushed
else:
led.set_rgb(0, 0, 0)
if button_a.value() == 0: # set LED to red
led.set_rgb(255, 0, 0)
if button_b.value() == 0: # set LED to blue
led.set_rgb(0, 255, 0)
if button_c.value() == 0: # set LED to green
led.set_rgb(0, 0, 255)
# Short pause to stop Thonny from falling over
time.sleep(0.01)

0 comments on commit 5eb7def

Please sign in to comment.