continuous-integration/drone Build was killed Details
What is pitrix?
pitrix is a software to run on an ESP8266 microncontroller connected to a LED matrix. It will display the time and a few other nice effects and stuff.
pitrix fetches the current time via NTP, is controllable via MQTT and can be flashed over-the-air, so you don't need to disassemble your nice-looking LED matrix everytime you want to update the software.
|An example for a blinking sprite. Can be used for home automation, for example.
|A big clock. Seconds are moving around the edge.
|Big squares appearing in sequential colors.
|The small clock at the bottom. Usually used by other effects to integrate a clock.
|Meta effect: Cycles through some of the other effects.
|Random pixels lighting up in sequential colors and fading out again.
|The bouncing-around dvd logo we all know and love. High chance of hitting cordners because of the low resolution of the LED panel.
|Fireplace-like effect. Needs more tweaking.
|Firework-like effect. Needs more work.
|Conway's Game of Life.
|That green effect from The Matrix.
|Space is divided in 2x2 squares which are changing their color random-sequentially.
|A clock using single pixels to display the current time.
|Like matrix, but not just green but displaying a rainbow across the columns.
|Like matrix, but with random colors and random directions.
|Colorful pastel images, slowly moving about.
|2x2 squares random-sequentially changing their color one after another.
|Snake. Without self-collision detection or AI.
|A colorful twirl.
How to use
Checkout the code, rename
and edit it to match your preferences / environment.
Then compile and flash it, preferably using PlatformIO.
Currently, control is possible via MQTT and / or HTTP REST API.
To use MQTT, you have to define
MQTT_ENABLE and configure your MQTT sever's credentials. MQTT_TOPIC
is set ininclude/config.h
and defaults topitrix`.
To use the HTTP REST API, you have to define HTTP_SERVER_ENABLE and set a port number to listen on (80 is set by default).
Possible commands / topics are:
POST /modelets you select an effect to show. See
src/effects.cppfor a list. Default effect is
cycle, which will cycle through some of the available effects. Another effect is
off, which will just display black, effectively turning the display off. (pitrix stays running, so you can turn it on again by simply selecting another mode.)
POST /brightnesssets the brightness of the display. Valid values are between 1 (darkest possible setting) and 255 (maximum brightness).
POST /rebootreboots pitrix. Send any value.
You can set retained values to have pitrix read them at startup, effectively
setting a default effect or brightness. (Do NOT set a retained value for
MQTT_TOPIC/reboot unless you want pitrix to reboot all the time.)
The current status ("ONLINE" or "OFFLINE") of pitrix will be set at
If you enabled
MQTT_REPORT_METRICS, metrics are sent via MQTT every 15
MQTT_TOPIC/free_heapcontains the free heap memory in Bytes.
MQTT_TOPIC/uptimecontains the uptime of pitrix in seconds.
MQTT_TOPIC/fpscontains the currently reached frames per second.
If you enabled HTTP server, you can always make GET requests to
/fps to get those values.
If you enabled
DEBUG, log messages will be sent to
|FastLED (with small modifications)
|Daniel Garcia & Mark Kriegsman
|NTPClient (with modifications)
Inspirations and stuff
- This whole project was inspired by https://github.com/orithena/Arduino-LED-experiments/tree/master/Ribba16x16_v2_ESP32. The sinematrix3 effect was also taken from there.
- The firework effect was heavily inspired (aka copied) from https://gist.github.com/kriegsman/68929cbd1d6de4535b20
- The sines effect is based upon https://github.com/atuline/FastLED-Demos/blob/master/sinelon/sinelon.ino