From 3b813b16ac1f443a5ef149f4e4b664915e5d047c Mon Sep 17 00:00:00 2001 From: Hel Gibbons Date: Thu, 15 Aug 2024 13:35:12 +0100 Subject: [PATCH] add basic examples --- examples/ADC.py | 32 +++++ examples/backgroundforscreen.jpg | Bin 0 -> 14096 bytes examples/backgroundforscreen.png | Bin 0 -> 112238 bytes examples/balls_demo.py | 63 ++++++++++ examples/button_test.py | 85 +++++++++++++ examples/display_jpg.py | 18 +++ examples/display_png.py | 24 ++++ examples/explorer_sensor_stick_demo.py | 36 ++++++ examples/external_buttons.py | 51 ++++++++ examples/lib/explorer.py | 140 ++++++++++++++++++++++ examples/main.py | 155 ++++++++++++++++++++++++ examples/multiple_servos.py | 58 +++++++++ examples/rainbow.py | 51 ++++++++ examples/simple_menu.py | 99 +++++++++++++++ examples/single_servo.py | 82 +++++++++++++ examples/tone_song.py | 131 ++++++++++++++++++++ examples/weather_station_bme280.py | 159 +++++++++++++++++++++++++ modules/default.cmake | 6 + 18 files changed, 1190 insertions(+) create mode 100644 examples/ADC.py create mode 100644 examples/backgroundforscreen.jpg create mode 100644 examples/backgroundforscreen.png create mode 100644 examples/balls_demo.py create mode 100644 examples/button_test.py create mode 100644 examples/display_jpg.py create mode 100644 examples/display_png.py create mode 100644 examples/explorer_sensor_stick_demo.py create mode 100644 examples/external_buttons.py create mode 100644 examples/lib/explorer.py create mode 100644 examples/main.py create mode 100644 examples/multiple_servos.py create mode 100644 examples/rainbow.py create mode 100644 examples/simple_menu.py create mode 100644 examples/single_servo.py create mode 100644 examples/tone_song.py create mode 100644 examples/weather_station_bme280.py diff --git a/examples/ADC.py b/examples/ADC.py new file mode 100644 index 0000000..0fac936 --- /dev/null +++ b/examples/ADC.py @@ -0,0 +1,32 @@ +""" +Reads an analog input connected to ADC0. + +Connect the middle pin of your potentiometer to ADC0, and the other two pins to 3.3V and GND. +""" + +from explorer import Explorer2350 +from machine import ADC +import time + +board = Explorer2350() + +display = board.display + +# lets set up some pen colours to make drawing easier +WHITE = display.create_pen(255, 255, 255) +BLACK = display.create_pen(0, 0, 0) + +pot = ADC(0) + +# alternatively, you could specify the pin number like this: +# pot = ADC(40) + +while True: + display.set_pen(BLACK) + display.clear() + display.set_pen(WHITE) + # read the potentiometer value, it's a number between 0 and 65535 which represents a voltage between 0v and 3.3v + pot_value = pot.read_u16() + display.text(f"{pot_value}", 0, 0, 320, 4) + display.update() + time.sleep(0.1) diff --git a/examples/backgroundforscreen.jpg b/examples/backgroundforscreen.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7ff87ac99190145bc90f91b100e82e68d7f2807b GIT binary patch literal 14096 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 k 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 zf897�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 Hu0mjfQ54@8 literal 0 HcmV?d00001 diff --git a/examples/balls_demo.py b/examples/balls_demo.py new file mode 100644 index 0000000..827b088 --- /dev/null +++ b/examples/balls_demo.py @@ -0,0 +1,63 @@ +import time +import random +from picographics import PicoGraphics, DISPLAY_EXPLORER, PEN_P8 + +display = PicoGraphics(display=DISPLAY_EXPLORER, pen_type=PEN_P8) + +WIDTH, HEIGHT = display.get_bounds() + +# We're creating 100 balls with their own individual colour and 1 BG colour +# for a total of 101 colours, which will all fit in the custom 256 entry palette! + + +class Ball: + def __init__(self, x, y, r, dx, dy, pen): + self.x = x + self.y = y + self.r = r + self.dx = dx + self.dy = dy + self.pen = pen + + +# initialise shapes +balls = [] +for i in range(0, 100): + r = random.randint(0, 10) + 3 + balls.append( + Ball( + random.randint(r, r + (WIDTH - 2 * r)), + random.randint(r, r + (HEIGHT - 2 * r)), + r, + (14 - r) / 2, + (14 - r) / 2, + display.create_pen(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)), + ) + ) + +BG = display.create_pen(40, 40, 40) + +while True: + display.set_pen(BG) + display.clear() + + for ball in balls: + ball.x += ball.dx + ball.y += ball.dy + + xmax = WIDTH - ball.r + xmin = ball.r + ymax = HEIGHT - ball.r + ymin = ball.r + + if ball.x < xmin or ball.x > xmax: + ball.dx *= -1 + + if ball.y < ymin or ball.y > ymax: + ball.dy *= -1 + + display.set_pen(ball.pen) + display.circle(int(ball.x), int(ball.y), int(ball.r)) + + display.update() + time.sleep(0.01) diff --git a/examples/button_test.py b/examples/button_test.py new file mode 100644 index 0000000..bf73b47 --- /dev/null +++ b/examples/button_test.py @@ -0,0 +1,85 @@ +""" +This example shows you a simple, non-interrupt way of reading Pico Explorer's buttons with a loop that checks to see if buttons are pressed. +""" + +import time +from picographics import PicoGraphics, DISPLAY_EXPLORER, PEN_P4 +from machine import Pin + +# We're only using a few colours so we can use a 4 bit/16 colour palette and save RAM! +display = PicoGraphics(display=DISPLAY_EXPLORER, pen_type=PEN_P4) + +button_a = Pin(16, Pin.IN, Pin.PULL_UP) +button_b = Pin(15, Pin.IN, Pin.PULL_UP) +button_c = Pin(14, Pin.IN, Pin.PULL_UP) +button_x = Pin(17, Pin.IN, Pin.PULL_UP) +button_y = Pin(18, Pin.IN, Pin.PULL_UP) +button_z = Pin(19, Pin.IN, Pin.PULL_UP) + +WHITE = display.create_pen(255, 255, 255) +BLACK = display.create_pen(0, 0, 0) +CYAN = display.create_pen(0, 255, 255) +MAGENTA = display.create_pen(255, 0, 255) +YELLOW = display.create_pen(255, 255, 0) +GREEN = display.create_pen(0, 255, 0) + + +# sets up a handy function we can call to clear the screen +def clear(): + display.set_pen(BLACK) + display.clear() + display.update() + + +# set up +clear() +display.set_font("bitmap8") + +while True: + if button_a.value() == 0: # if a button press is detected then... + clear() # clear to black + display.set_pen(WHITE) # change the pen colour + display.text("Button A pressed", 10, 10, 240, 4) # display some text on the screen + display.update() # update the display + time.sleep(1) # pause for a sec + clear() # clear to black again + elif button_b.value() == 0: + clear() + display.set_pen(CYAN) + display.text("Button B pressed", 10, 10, 240, 4) + display.update() + time.sleep(1) + clear() + elif button_c.value() == 0: + clear() + display.set_pen(CYAN) + display.text("Button C pressed", 10, 10, 240, 4) + display.update() + time.sleep(1) + clear() + elif button_x.value() == 0: + clear() + display.set_pen(MAGENTA) + display.text("Button X pressed", 10, 10, 240, 4) + display.update() + time.sleep(1) + clear() + elif button_y.value() == 0: + clear() + display.set_pen(YELLOW) + display.text("Button Y pressed", 10, 10, 240, 4) + display.update() + time.sleep(1) + clear() + elif button_z.value() == 0: + clear() + display.set_pen(YELLOW) + display.text("Button Z pressed", 10, 10, 240, 4) + display.update() + time.sleep(1) + clear() + else: + display.set_pen(GREEN) + display.text("Press any button!", 10, 10, 240, 4) + display.update() + time.sleep(0.1) # this number is how frequently the Pico checks for button presses diff --git a/examples/display_jpg.py b/examples/display_jpg.py new file mode 100644 index 0000000..468f6fb --- /dev/null +++ b/examples/display_jpg.py @@ -0,0 +1,18 @@ +from explorer import Explorer2350 +import jpegdec + +board = Explorer2350() + +display = board.display + +# Create a new JPEG decoder for our PicoGraphics +j = jpegdec.JPEG(display) + +# Open the JPEG file +j.open_file("backgroundforscreen.jpg") + +# Decode the JPEG +j.decode(0, 0, jpegdec.JPEG_SCALE_FULL, dither=True) + +# Display the result +display.update() diff --git a/examples/display_png.py b/examples/display_png.py new file mode 100644 index 0000000..54ffa3c --- /dev/null +++ b/examples/display_png.py @@ -0,0 +1,24 @@ +# Display a PNG image on Explorer 2350 + +from explorer import Explorer2350 +import pngdec +import gc + +board = Explorer2350() + +display = board.display + +# run garbage collection - displaying large PNGs is resource intensive +gc.collect() + +# Create a new JPEG decoder for our PicoGraphics +p = pngdec.PNG(display) + +# Open the PNG file +p.open_file("backgroundforscreen.png") + +# Decode the PNG +p.decode(0, 0) + +# Display the result +display.update() diff --git a/examples/explorer_sensor_stick_demo.py b/examples/explorer_sensor_stick_demo.py new file mode 100644 index 0000000..a21a45b --- /dev/null +++ b/examples/explorer_sensor_stick_demo.py @@ -0,0 +1,36 @@ +# Display readings from the multi-sensor stick on the Explorer screen +from explorer import Explorer2350 +from breakout_ltr559 import BreakoutLTR559 +from lsm6ds3 import LSM6DS3 +from breakout_bme280 import BreakoutBME280 +import time + +board = Explorer2350() + +ltr = BreakoutLTR559(board.i2c) +lsm = LSM6DS3(board.i2c) +bme = BreakoutBME280(board.i2c) + +display = board.display + +# lets set up some pen colours to make drawing easier +WHITE = display.create_pen(255, 255, 255) +BLACK = display.create_pen(0, 0, 0) +RED = display.create_pen(255, 0, 0) +GREY = display.create_pen(125, 125, 125) + +while True: + lux, _, _, _, _, _, prox = ltr.get_reading() + ax, ay, az, gx, gy, gz = lsm.get_readings() + temperature, pressure, humidity = bme.read() + display.set_pen(BLACK) + display.clear() + display.set_pen(WHITE) + if lux is not None: + display.text(f"Lux: {lux:.0f}\nProx: {prox:.0f}", 0, 0, 320, 3) + if ax is not None: + display.text(f"Accelerometer:\nX: {ax:.0f}, Y: {ay:.0f}, \nZ: {az:.0f}\nGyro:\nX: {gx:.0f}, Y: {gy:.0f}, \nZ: {gz:.0f}", 0, 45, 320, 3) + if temperature is not None: + display.text(f"Temperature: {temperature:.2f}°C,\nHumidity: {humidity:.0f}%,\nPressure: {pressure/100:.0f}hPa", 0, 180, 320, 3) + display.update() + time.sleep(0.1) diff --git a/examples/external_buttons.py b/examples/external_buttons.py new file mode 100644 index 0000000..1abd751 --- /dev/null +++ b/examples/external_buttons.py @@ -0,0 +1,51 @@ +""" +Connect (up to) 3 external buttons to Explorer. + +We're connecting our yellow button to GPIO 0, a red button to GPIO 1 and a blue button to GPIO 3. The other side of each button should be wired to ground. + +Note that if you're using our square buttons, you should connect wires to two pins that are diagonally opposite each other. +""" + +from machine import Pin +import time +from explorer import Explorer2350 + +board = Explorer2350() + +display = board.display + +yellow_button = Pin(0, Pin.IN, Pin.PULL_UP) +blue_button = Pin(1, Pin.IN, Pin.PULL_UP) +red_button = Pin(2, Pin.IN, Pin.PULL_UP) + +# lets set up some pen colours to make drawing easier +WHITE = display.create_pen(255, 255, 255) +BLACK = display.create_pen(0, 0, 0) +YELLOW = display.create_pen(0, 255, 255) +BLUE = display.create_pen(0, 0, 255) +RED = display.create_pen(255, 0, 0) + + +while True: + display.set_pen(BLACK) + display.clear() + display.set_pen(WHITE) + display.text("Wire up some buttons to GP0, GP1 and GP2, and push 'em!", 0, 0, 320, 4) + # because we're using Pin.PULL_UP the logic is reversed - '0' is pushed and '1' is unpushed + if yellow_button.value() == 0: + display.set_pen(BLACK) + display.clear() + display.set_pen(YELLOW) + display.text("Yellow button pushed", 0, 0, 320, 4) + if blue_button.value() == 0: + display.set_pen(BLACK) + display.clear() + display.set_pen(BLUE) + display.text("Blue button pushed", 0, 0, 320, 4) + if red_button.value() == 0: + display.set_pen(BLACK) + display.clear() + display.set_pen(RED) + display.text("Red button pushed", 0, 0, 320, 4) + display.update() + time.sleep(0.01) diff --git a/examples/lib/explorer.py b/examples/lib/explorer.py new file mode 100644 index 0000000..1c4e9b9 --- /dev/null +++ b/examples/lib/explorer.py @@ -0,0 +1,140 @@ +import gc +from machine import Pin, PWM +from pimoroni_i2c import PimoroniI2C +from servo import Servo +from picographics import PicoGraphics, DISPLAY_EXPLORER + +# IO Pin Constants +GP0 = 0 +GP1 = 1 +GP2 = 2 +GP3 = 3 +GP4 = 4 +GP5 = 5 + +A0 = 40 +A1 = 41 +A2 = 42 +A3 = 43 +A4 = 44 +A5 = 45 + +GPIOS = (GP0, GP1, GP2, GP3, GP4, GP5, A0, A1, A2, A3, A4, A5) +ADCS = (A0, A1, A2, A3, A4, A5) + + +# Index Constants +SERVO_1 = 0 +SERVO_2 = 1 +SERVO_3 = 2 +SERVO_4 = 3 + +SWITCH_A = 0 +SWITCH_B = 1 +SWITCH_C = 2 +SWITCH_X = 3 +SWITCH_Y = 4 +SWITCH_Z = 5 + +# Count Constants +NUM_GPIOS = 6 +NUM_ADCS = 6 +NUM_SERVOS = 4 +NUM_SWITCHES = 6 + + +class Explorer2350(): + SWITCH_A_PIN = 16 + SWITCH_B_PIN = 15 + SWITCH_C_PIN = 14 + SWITCH_X_PIN = 17 + SWITCH_Y_PIN = 18 + SWITCH_Z_PIN = 19 + + I2C_SDA_PIN = 20 + I2C_SCL_PIN = 21 + + USER_SW_PIN = 22 + + SERVO_1_PIN = 9 + SERVO_2_PIN = 8 + SERVO_3_PIN = 7 + SERVO_4_PIN = 6 + + ADC_0_PIN = 40 + ADC_1_PIN = 41 + ADC_2_PIN = 42 + ADC_3_PIN = 43 + ADC_4_PIN = 44 + ADC_5_PIN = 45 + + GPIO_0_PIN = 0 + GPIO_1_PIN = 1 + GPIO_2_PIN = 2 + GPIO_3_PIN = 3 + GPIO_4_PIN = 4 + GPIO_5_PIN = 5 + + PWM_AUDIO_PIN = 12 + AMP_EN_PIN = 13 + + AMP_CORRECTION = 4 + DEFAULT_VOLUME = 0.2 + + def __init__(self, init_servos=True): + # Free up hardware resources + gc.collect() + + self.display = PicoGraphics(display=DISPLAY_EXPLORER) + + # Set up the servos, if the user wants them + self.servos = None + if init_servos: + self.servos = [Servo(self.SERVO_1_PIN - i) for i in range(4)] + + # Set up the i2c for Qw/st and Breakout Garden + self.i2c = PimoroniI2C(self.I2C_SDA_PIN, self.I2C_SCL_PIN, 100000) + + # Set up the amp enable + self.__amp_en = Pin(self.AMP_EN_PIN, Pin.OUT) + self.__amp_en.off() + + self.audio_pwm = PWM(Pin(self.PWM_AUDIO_PIN)) + self.__volume = self.DEFAULT_VOLUME + + def play_tone(self, frequency): + try: + self.audio_pwm.freq(frequency) + except ValueError: + self.play_silence() + raise ValueError("frequency of range. Expected greater than 0") + + corrected_volume = (self.__volume ** 4) # Correct for RC Filter curve + self.audio_pwm.duty_u16(int(32768 * corrected_volume)) + self.unmute_audio() + + def play_silence(self): + self.audio_pwm.freq(44100) + + corrected_volume = (self.__volume ** 4) # Correct for RC Filter curve + self.audio_pwm.duty_u16(int(32768 * corrected_volume)) + self.unmute_audio() + + def stop_playing(self): + self.audio_pwm.duty_u16(0) + self.mute_audio() + + def volume(self, volume=None): + if volume is None: + return self.__volume + + if volume < 0.01 or volume > 1.0: + raise ValueError("volume out of range. Expected 0.0 to 1.0") + + self.__volume = volume + + def mute_audio(self): + self.__amp_en.off() + + def unmute_audio(self): + self.__amp_en.on() diff --git a/examples/main.py b/examples/main.py new file mode 100644 index 0000000..52056b3 --- /dev/null +++ b/examples/main.py @@ -0,0 +1,155 @@ +# Explorer boot menu/loader. + +import gc +import time +from os import listdir +from picographics import PicoGraphics, DISPLAY_EXPLORER, PEN_RGB332 +from machine import Pin + + +def hsv_to_rgb(h: float, s: float, v: float) -> tuple[float, float, float]: + 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)) + v = int(v * 255) + t = int(t * 255) + p = int(p * 255) + q = int(q * 255) + 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 + + +def get_applications() -> list[dict[str, str]]: + # fetch a list of the applications that are stored in the filesystem + applications = [] + for file in listdir(): + if file.endswith(".py") and file != "main.py": + # convert the filename from "something_or_other.py" to "Something Or Other" + # via weird incantations and a sprinkling of voodoo + title = " ".join([v[:1].upper() + v[1:] for v in file[:-3].split("_")]) + + applications.append( + { + "file": file, + "title": title + } + ) + + # sort the application list alphabetically by title and return the list + return sorted(applications, key=lambda x: x["title"]) + + +def prepare_for_launch() -> None: + for k in locals().keys(): + if k not in ("__name__", + "application_file_to_launch", + "gc"): + del locals()[k] + gc.collect() + + +def menu() -> str: + applications = get_applications() + + button_x = Pin(17, Pin.IN, Pin.PULL_UP) + button_y = Pin(18, Pin.IN, Pin.PULL_UP) + button_a = Pin(16, Pin.IN, Pin.PULL_UP) + + display = PicoGraphics(display=DISPLAY_EXPLORER, pen_type=PEN_RGB332) + display.set_backlight(1.0) + + selected_item = 2 + scroll_position = 2 + target_scroll_position = 2 + + selected_pen = display.create_pen(255, 255, 255) + unselected_pen = display.create_pen(80, 80, 100) + background_pen = display.create_pen(50, 50, 70) + shadow_pen = display.create_pen(0, 0, 0) + + while True: + t = time.ticks_ms() / 1000.0 + + if button_x.value() == 0: + target_scroll_position -= 1 + target_scroll_position = target_scroll_position if target_scroll_position >= 0 else len(applications) - 1 + time.sleep(0.05) + + if button_y.value() == 0: + target_scroll_position += 1 + target_scroll_position = target_scroll_position if target_scroll_position < len(applications) else 0 + time.sleep(0.05) + + if button_a.value() == 0: + time.sleep(0.05) + + return applications[selected_item]["file"] + + display.set_pen(background_pen) + display.clear() + + scroll_position += (target_scroll_position - scroll_position) / 5 + + grid_size = 40 + for y in range(0, 240 // grid_size): + for x in range(0, 320 // grid_size): + h = x + y + int(t * 5) + h = h / 50.0 + r, g, b = hsv_to_rgb(h, 0.5, 1) + + display.set_pen(display.create_pen(r, g, b)) + display.rectangle(x * grid_size, y * grid_size, grid_size, grid_size) + + # work out which item is selected (closest to the current scroll position) + selected_item = round(target_scroll_position) + + for list_index, application in enumerate(applications): + distance = list_index - scroll_position + + text_size = 4 if selected_item == list_index else 3 + + # center text horixontally + title_width = display.measure_text(application["title"], text_size) + text_x = int(160 - title_width / 2) + + row_height = text_size * 5 + 20 + + # center list items vertically + text_y = int(120 + distance * row_height - (row_height / 2)) + + # draw the text, selected item brightest and with shadow + if selected_item == list_index: + display.set_pen(shadow_pen) + display.text(application["title"], text_x + 1, text_y + 1, -1, text_size) + + text_pen = selected_pen if selected_item == list_index else unselected_pen + display.set_pen(text_pen) + display.text(application["title"], text_x, text_y, -1, text_size) + + display.update() + + +# The application we will be launching. This should be ouronly global, so we can +# drop everything else. +application_file_to_launch = menu() + +# Run whatever we've set up to. +# If this fails, we'll exit the script and drop to the REPL, which is +# fairly reasonable. +prepare_for_launch() +__import__(application_file_to_launch) diff --git a/examples/multiple_servos.py b/examples/multiple_servos.py new file mode 100644 index 0000000..2c34d6f --- /dev/null +++ b/examples/multiple_servos.py @@ -0,0 +1,58 @@ +import time +import math +from explorer import Explorer2350 + +""" +Demonstrates how to control all of the servos on Explorer. +""" + +# Create a new Explorer +board = Explorer2350() + +# Enable all servos (this puts them at the middle) +for s in board.servos: + s.enable() +time.sleep(2) + +# Go to min +for s in board.servos: + s.to_min() +time.sleep(2) + +# Go to max +for s in board.servos: + s.to_max() +time.sleep(2) + +# Go back to mid +for s in board.servos: + s.to_mid() +time.sleep(2) + +SWEEPS = 3 # How many sweeps of the servo to perform +STEPS = 10 # The number of discrete sweep steps +STEPS_INTERVAL = 0.5 # The time in seconds between each step of the sequence +SWEEP_EXTENT = 90.0 # How far from zero to move the servo when sweeping + +# Do a sine sweep +for j in range(SWEEPS): + for i in range(360): + value = math.sin(math.radians(i)) * SWEEP_EXTENT + for s in board.servos: + s.value(value) + time.sleep(0.02) + +# Do a stepped sweep +for j in range(SWEEPS): + for i in range(0, STEPS): + for s in board.servos: + s.to_percent(i, 0, STEPS, 0.0 - SWEEP_EXTENT, SWEEP_EXTENT) + time.sleep(STEPS_INTERVAL) + for i in range(0, STEPS): + for s in board.servos: + s.to_percent(i, STEPS, 0, 0.0 - SWEEP_EXTENT, SWEEP_EXTENT) + time.sleep(STEPS_INTERVAL) + +# Disable the servos +for s in board.servos: + s.disable() diff --git a/examples/rainbow.py b/examples/rainbow.py new file mode 100644 index 0000000..1195a14 --- /dev/null +++ b/examples/rainbow.py @@ -0,0 +1,51 @@ +# This example borrows a CircuitPython hsv_to_rgb function to cycle through some rainbows on Pico Explorer's screen. If you're into rainbows, HSV (Hue, Saturation, Value) is very useful! +# We're using a RAM intensive 64K colour palette here to get a nice smooth colour transition. + +import time +from picographics import PicoGraphics, DISPLAY_EXPLORER, PEN_RGB565 + +display = PicoGraphics(display=DISPLAY_EXPLORER, pen_type=PEN_RGB565) + +WIDTH, HEIGHT = display.get_bounds() + +BLACK = display.create_pen(0, 0, 0) + + +# 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 + + +h = 0 + +while True: + h += 1 + r, g, b = [int(255 * c) for c in hsv_to_rgb(h / 360.0, 1.0, 1.0)] # rainbow magic + RAINBOW = display.create_pen(r, g, b) # Create pen with converted HSV value + display.set_pen(RAINBOW) # Set pen + display.clear() # Fill the screen with the colour + display.set_pen(BLACK) # Set pen to black + display.text("pico disco!", 10, 10, 240, 6) # Add some text + display.text("\\o/ \\o/ \\o/ \\o/ \\o/ \\o/ \\o/ \\o/ \\o/", 25, 120, 240, 4) # and some more text + display.text("oontz oontz oontz", 25, 220, 240, 2) # and a bit more tiny text + display.update() # Update the display + time.sleep(1.0 / 60) diff --git a/examples/simple_menu.py b/examples/simple_menu.py new file mode 100644 index 0000000..3577e53 --- /dev/null +++ b/examples/simple_menu.py @@ -0,0 +1,99 @@ +import time +from picographics import PicoGraphics, DISPLAY_EXPLORER, PEN_RGB565 +from machine import Pin + +button_a = Pin(16, Pin.IN, Pin.PULL_UP) +button_x = Pin(17, Pin.IN, Pin.PULL_UP) +button_y = Pin(18, Pin.IN, Pin.PULL_UP) + +display = PicoGraphics(display=DISPLAY_EXPLORER, pen_type=PEN_RGB565, rotate=0) +display.set_backlight(0.8) + +# set up constants for drawing +WIDTH, HEIGHT = display.get_bounds() +BLACK = display.create_pen(0, 0, 0) +RED = display.create_pen(255, 0, 0) +GREEN = display.create_pen(0, 255, 0) +BLUE = display.create_pen(0, 0, 255) +WHITE = display.create_pen(255, 255, 255) +PURPLE = display.create_pen(255, 0, 255) + + +class Menu(object): + def __init__(self): + self.items = ["Red", "Green", "Blue", "Purple"] + self.selected = 0 + self.shadow_offset = 2 + self.cursor = "<-" + self.colour = BLACK + self.title = "Simple Menu" + + # A function to draw only the menu elements. + def draw_menu(self): + display.set_pen(WHITE) + display.clear() + display.set_pen(BLACK) + length = display.measure_text(self.title, 4) + display.text(self.title, WIDTH // 2 - length // 2 + self.shadow_offset, 10 + self.shadow_offset, WIDTH, 4) + display.set_pen(self.colour) + display.text(self.title, WIDTH // 2 - length // 2, 10, WIDTH, 4) + + display.set_pen(BLACK) + for item in range(len(self.items)): + length = display.measure_text(self.items[item], 3) + if self.selected == item: + display.set_pen(self.colour) + display.text(self.cursor, length + 40, HEIGHT // 2 + item * 20, WIDTH, 3) + + display.text(self.items[item], 30, HEIGHT // 2 + item * 20, WIDTH, 3) + + display.set_pen(self.colour) + display.rectangle(0, HEIGHT - 10, WIDTH, 10) + display.set_pen(BLACK) + + # Do a thing based on the currently selected menu item + # For our example we'll be changing the text + def process_selected(self): + if self.selected == 0: + self.colour = RED + + if self.selected == 1: + self.colour = GREEN + + if self.selected == 2: + self.colour = BLUE + + if self.selected == 3: + self.colour = PURPLE + + def user_input(self): + # Process the user input and update the currently selected item + if button_y.value() == 0: + if self.selected + 1 < len(self.items): + self.selected += 1 + else: + self.selected = 0 + time.sleep(0.2) # debounce + + if button_x.value() == 0: + if self.selected > 0: + self.selected -= 1 + else: + self.selected = len(self.items) - 1 + time.sleep(0.2) # debounce + + if button_a.value() == 0: + self.process_selected() + time.sleep(0.2) # debounce + + +menu = Menu() + +while True: + + menu.draw_menu() + menu.user_input() + + display.update() + + time.sleep(1.0 / 20) diff --git a/examples/single_servo.py b/examples/single_servo.py new file mode 100644 index 0000000..1fa2f3e --- /dev/null +++ b/examples/single_servo.py @@ -0,0 +1,82 @@ +import time +import math +from explorer import Explorer2350, SERVO_1 + +""" +Demonstrates how to control a single servo on Explorer. +""" + +# Create a new Explorer2350 +board = Explorer2350() + +display = board.display + +# lets set up some pen colours to make drawing easier +WHITE = display.create_pen(255, 255, 255) +BLACK = display.create_pen(0, 0, 0) + +display.set_pen(BLACK) +display.clear() +display.set_pen(WHITE) +display.update() + +display.text("Attach a servo to slot 1!", 0, 0, 320, 3) +display.update() +time.sleep(2) + +# Access the servo from Explorer and enable it (this puts it at the middle) +s = board.servos[SERVO_1] + +display.text("Enable servo", 0, 50, 320, 3) +display.update() +s.enable() +time.sleep(2) + +# Go to min +display.text("Go to min", 0, 70, 320, 3) +display.update() +s.to_min() +time.sleep(2) + +# Go to max +display.text("Go to max", 0, 90, 320, 3) +display.update() +s.to_max() +time.sleep(2) + +# Go back to mid +display.text("Back to middle", 0, 110, 320, 3) +display.update() +s.to_mid() +time.sleep(2) + + +SWEEPS = 3 # How many sweeps of the servo to perform +STEPS = 10 # The number of discrete sweep steps +STEPS_INTERVAL = 0.5 # The time in seconds between each step of the sequence +SWEEP_EXTENT = 90.0 # How far from zero to move the servo when sweeping + + +# Do a sine sweep +display.text(f"Do {SWEEPS} sine sweeps", 0, 130, 320, 3) +display.update() +for j in range(SWEEPS): + for i in range(360): + s.value(math.sin(math.radians(i)) * SWEEP_EXTENT) + time.sleep(0.02) + +# Do a stepped sweep +display.text(f"Do {SWEEPS} stepped sweeps", 0, 150, 320, 3) +display.update() +for j in range(SWEEPS): + for i in range(0, STEPS): + s.to_percent(i, 0, STEPS, 0.0 - SWEEP_EXTENT, SWEEP_EXTENT) + time.sleep(STEPS_INTERVAL) + for i in range(0, STEPS): + s.to_percent(i, STEPS, 0, 0.0 - SWEEP_EXTENT, SWEEP_EXTENT) + time.sleep(STEPS_INTERVAL) + +# Disable the servo +display.text("Disable servo", 0, 170, 320, 3) +display.update() +s.disable() diff --git a/examples/tone_song.py b/examples/tone_song.py new file mode 100644 index 0000000..e0c823d --- /dev/null +++ b/examples/tone_song.py @@ -0,0 +1,131 @@ +import time +from explorer import Explorer2350 + +""" +This example shows you how you can use Explorer's audio output +with a speaker to play different notes and string them together into a bleepy tune. + +It uses code written by Avram Piltch - check out his Tom's Hardware article! +https://www.tomshardware.com/uk/how-to/buzzer-music-raspberry-pi-pico + +Press "User" button to start or stop the song. +""" + + +# This handy list converts notes into frequencies, which you can use with the inventor.play_tone function +TONES = { + "B0": 31, + "C1": 33, + "CS1": 35, + "D1": 37, + "DS1": 39, + "E1": 41, + "F1": 44, + "FS1": 46, + "G1": 49, + "GS1": 52, + "A1": 55, + "AS1": 58, + "B1": 62, + "C2": 65, + "CS2": 69, + "D2": 73, + "DS2": 78, + "E2": 82, + "F2": 87, + "FS2": 93, + "G2": 98, + "GS2": 104, + "A2": 110, + "AS2": 117, + "B2": 123, + "C3": 131, + "CS3": 139, + "D3": 147, + "DS3": 156, + "E3": 165, + "F3": 175, + "FS3": 185, + "G3": 196, + "GS3": 208, + "A3": 220, + "AS3": 233, + "B3": 247, + "C4": 262, + "CS4": 277, + "D4": 294, + "DS4": 311, + "E4": 330, + "F4": 349, + "FS4": 370, + "G4": 392, + "GS4": 415, + "A4": 440, + "AS4": 466, + "B4": 494, + "C5": 523, + "CS5": 554, + "D5": 587, + "DS5": 622, + "E5": 659, + "F5": 698, + "FS5": 740, + "G5": 784, + "GS5": 831, + "A5": 880, + "AS5": 932, + "B5": 988, + "C6": 1047, + "CS6": 1109, + "D6": 1175, + "DS6": 1245, + "E6": 1319, + "F6": 1397, + "FS6": 1480, + "G6": 1568, + "GS6": 1661, + "A6": 1760, + "AS6": 1865, + "B6": 1976, + "C7": 2093, + "CS7": 2217, + "D7": 2349, + "DS7": 2489, + "E7": 2637, + "F7": 2794, + "FS7": 2960, + "G7": 3136, + "GS7": 3322, + "A7": 3520, + "AS7": 3729, + "B7": 3951, + "C8": 4186, + "CS8": 4435, + "D8": 4699, + "DS8": 4978 +} + +# Put the notes for your song in here! +SONG = ("F6", "F6", "E6", "F6", "F5", "P", "F5", "P", "C6", "AS5", "A5", "C6", "F6", "P", "F6", "P", "G6", "FS6", "G6", "G5", "P", "G5", "P", "G6", "F6", "E6", "D6", "C6", "P", "C6", "P", "D6", "E6", "F6", "E6", "D6", "C6", "D6", "C6", "AS5", "A5", "AS5", "A5", "G5", "F5", "G5", "F5", "E5", "D5", "C5", "D5", "E5", "F5", "G5", "AS5", "A5", "G5", "A5", "F5", "P", "F5") + +NOTE_DURATION = 0.150 # The time (in seconds) to play each note for. Change this to make the song play faster or slower + + +# Create a new Explorer +board = Explorer2350() + +# Set the volume of the speaker output +board.volume(0.25) + +# Play the song +for i in range(len(SONG)): + if SONG[i] == "P": + # This is a "pause" note, so stop the motors + board.play_silence() + else: + # Get the frequency of the note and play it + board.play_tone(TONES[SONG[i]]) + + time.sleep(NOTE_DURATION) + +board.stop_playing() diff --git a/examples/weather_station_bme280.py b/examples/weather_station_bme280.py new file mode 100644 index 0000000..8b567ff --- /dev/null +++ b/examples/weather_station_bme280.py @@ -0,0 +1,159 @@ +# Plug a BME280 breakout into Explorer 2350 and make a little indoor weather station, with barometer style descriptions. + +import time +from breakout_bme280 import BreakoutBME280 +from explorer import Explorer2350 +import jpegdec + +# Set up the hardware +board = Explorer2350() +display = board.display + +bme = BreakoutBME280(board.i2c, address=0x76) + +# set up some pen colours to make drawing easier +TEMPCOLOUR = display.create_pen(0, 0, 0) # this colour will get changed in a bit +WHITE = display.create_pen(255, 255, 255) +BLACK = display.create_pen(0, 0, 0) +RED = display.create_pen(255, 0, 0) +GREY = display.create_pen(125, 125, 125) + + +# converts the temperature into a barometer-type description and pen colour +def describe_temperature(temperature): + global TEMPCOLOUR + if temperature < 10: + description = "very cold" + TEMPCOLOUR = display.create_pen(0, 255, 255) + elif 10 <= temperature < 20: + description = "cold" + TEMPCOLOUR = display.create_pen(0, 0, 255) + elif 20 <= temperature < 25: + description = "temperate" + TEMPCOLOUR = display.create_pen(0, 255, 0) + elif 25 <= temperature < 30: + description = "warm" + TEMPCOLOUR = display.create_pen(255, 255, 0) + elif temperature >= 30: + description = "very warm" + TEMPCOLOUR = display.create_pen(255, 0, 0) + else: + description = "" + TEMPCOLOUR = display.create_pen(0, 0, 0) + return description + + +# comment out the function above and uncomment this one for yorkshire mode +""" +def describe_temperature(temperature): + global TEMPCOLOUR + if temperature < 10: + description = "frozzed" + TEMPCOLOUR = display.create_pen(0, 255, 255) + elif 10 <= temperature < 20: + description = "nithering" + TEMPCOLOUR = display.create_pen(0, 0, 255) + elif 20 <= temperature < 25: + description = "fair t' middlin" + TEMPCOLOUR = display.create_pen(0, 255, 0) + elif 25 <= temperature < 30: + description = "chuffing warm" + TEMPCOLOUR = display.create_pen(255, 255, 0) + elif temperature >= 30: + description = "crackin t' flags" + TEMPCOLOUR = display.create_pen(255, 0, 0) + else: + description = "" + TEMPCOLOUR = display.create_pen(0, 0, 0) + return description +""" + + +# converts pressure into barometer-type description +def describe_pressure(pressure): + if pressure < 970: + description = "storm" + elif 970 <= pressure < 990: + description = "rain" + elif 990 <= pressure < 1010: + description = "change" + elif 1010 <= pressure < 1030: + description = "fair" + elif pressure >= 1030: + description = "dry" + else: + description = "" + return description + + +# converts humidity into good/bad description +def describe_humidity(humidity): + if 40 < humidity < 60: + description = "good" + else: + description = "bad" + return description + + +# Create a new JPEG decoder for our PicoGraphics +j = jpegdec.JPEG(display) + +background_jpg = False + +try: + j.open_file("backgroundforscreen.jpg") + background_jpg = True +except OSError: + print("Background not found - copy backgroundforscreen.jpg to your Explorer") + +while True: + # attempt to display a fancy background, if the file is present + if background_jpg is True: + j.decode(0, 0, jpegdec.JPEG_SCALE_FULL, dither=True) + else: + display.set_pen(BLACK) + display.clear() + + # read the sensors + temperature, pressure, humidity = bme.read() + # pressure comes in pascals which is a reight long number, lets convert it to the more manageable hPa + pressurehpa = pressure / 100 + + # draw a thermometer/barometer thingy + display.set_pen(GREY) + display.circle(250, 175, 40) + display.rectangle(240, 30, 20, 140) + + # switch to red to draw the 'mercury' + display.set_pen(RED) + display.circle(250, 175, 30) + thermometerheight = int(120 / 30 * temperature) + if thermometerheight > 120: + thermometerheight = 120 + if thermometerheight < 1: + thermometerheight = 1 + display.rectangle(245, 155 - thermometerheight, 10, thermometerheight) + + # drawing the temperature text + display.set_pen(WHITE) + display.text("temperature:", 10, 10, 240, 3) + display.set_pen(TEMPCOLOUR) + display.text('{:.1f}'.format(temperature) + 'C', 10, 30, 240, 5) + display.set_pen(WHITE) + display.text(describe_temperature(temperature), 10, 60, 240, 3) + + # and the pressure text + display.text("pressure:", 10, 85, 240, 3) + display.text('{:.0f}'.format(pressurehpa) + 'hPa', 10, 105, 240, 5) + display.text(describe_pressure(pressurehpa), 10, 135, 240, 3) + + # and the humidity text + display.text("humidity:", 10, 160, 240, 3) + display.text('{:.0f}'.format(humidity) + '%', 10, 180, 240, 5) + display.text(describe_humidity(humidity), 10, 210, 240, 3) + + # time to update the display + display.update() + + # wait for a short time to stop Thonny from freaking out + time.sleep(0.1) diff --git a/modules/default.cmake b/modules/default.cmake index 9c1bf8b..609cdc6 100644 --- a/modules/default.cmake +++ b/modules/default.cmake @@ -38,6 +38,12 @@ include(adcfft/micropython) # LEDs & Matrices include(plasma/micropython) +# Servos & Motors +include(pwm/micropython) +include(servo/micropython) +include(encoder/micropython) +include(motor/micropython) + # ULAB include(micropython-common-ulab) enable_ulab()