52a107e6d6 | ||
---|---|---|
.. | ||
CMakeLists.txt | ||
README.md | ||
audio_i2s.pio | ||
galactic_unicorn.cmake | ||
galactic_unicorn.cpp | ||
galactic_unicorn.hpp | ||
galactic_unicorn.pio |
README.md
Galactic Unicorn
Galactic Unicorn offers 53x11 7x17 bright RGB LEDs driven by Pico W's PIO in addition to a 1W amplifier and speaker.
Galactic Unicorn uses SM0 of PIO0.
TODO: Update documentation
We've included helper functions to handle every aspect of drawing to the display and interfacing with the buttons. See the function reference for details.
Example Program
The following example sets up Pico Unicorn, displays some basic demo text and graphics and will illuminate the RGB LED green if the A button is presse
Reference
Constants
Buttons
The four buttons, A, B, X and Y have correponding constants set to their respective GPIO pins. For example:
bool a_is_pressed = pico_unicorn.is_pressed(pico_unicorn.A);
WIDTH / HEIGHT
The width and height of Pico Unicorn are available in constants WIDTH
and HEIGHT
.
For example:
int num_pixels = pico_unicorn.WIDTH * pico_unicorn.HEIGHT;
Functions
init
Sets up Pico Unicorn. init
must be called before any other functions since it configures the PIO and require GPIO inputs. Just call init()
like so:
PicoUnicorn pico_unicorn;
pico_unicorn.init();
set_pixel
void set_pixel(uint8_t x, uint8_t y, uint8_t r, uint8_t g, uint8_t b);
void set_pixel(uint8_t x, uint8_t y, uint8_t v);
Sets an RGB LED on Pico Unicorn with an RGB triplet:
pico_unicorn.set_pixel(x, y, r, g, b);
Uses hardware PWM to drive the LED. Values are automatically gamma-corrected to provide smooth brightness transitions and low values may map as "off."
Alternatively you can use:
pico_unicorn.set_pixel(x, y, v);
Which sets the R, G and B elements of the pixel to the same value- lighting it up white at your chosen intensity.
is_pressed
bool is_pressed(uint8_t button);
Reads the GPIO pin connected to one of Pico Unicorn's buttons, returning a bool
- true
if it's pressed and false
if it is released.
pico_unicorn.is_pressed(button);
The button vaule should be a uint8_t
denoting a pin, and constants A
, B
, X
and Y
are supplied to make it easier. e:
bool is_a_button_pressed = pico_unicorn.is_pressed(PicoUnicorn::A)
Examples
Game of Life
Retro Super-computer
Random LEDs blink on and off mimicing the look of a movie super computer doing it's work in the eighties.
Nostalgia Terminal
A collection of copies of classic terminal styles including C64, MS-DOS, Spectrum, and more.