Skip to main content

Show various effects on a Pimoroni LED shim.

Project description

led-shim-demo

GitHub Over-Engineered PyPi Package Python Versions

Travis Coverage Status GitHub tag (latest SemVer)

Travis Coverage Status

An application to display a variety of effects on the Raspberry Pi led-shim from Pimoroni.

The effects are based on the examples given in the base library plus some additions from my fork.

  • Binary Clock - Shows hours, minutes and seconds.
  • Candle - A flickering candle.
  • CheerLights - Synchronize with the CheerLights "Internet of Things" project.
  • Coloured Lights - Simple coloured lights like Xmas lights.
  • Digital Rain - Cut price Matrix effect.
  • Gradient Graph - A moving colour gradient determined by the height of a sine wave.
  • Rainbow - A slowly moving rainbow effect.
  • Random Blink - Some random blinking.
  • Solid Colours - A basic effect which just shows a sequence of solid colours.

Installing

Install on Raspbian using:

sudo pip3 install ledshimdemo

Or update using:

sudo pip3 install -U ledshimdemo

Running

$ ledshimdemo --help

Usage: ledshimdemo [OPTIONS] [EFFECTS_SELECTED]...

  Show various effects on a Pimoroni LED shim.

  To limit the effects shown use the effect-list option to list the effects
  available then add them to the command line as required. Otherwise all
  effects will be shown.

Options:
  --version                       Show the version and exit.
  -l, --effect-list               List the effects available and exit.
  -d, --effect-display [CYCLE|RANDOM]
                                  How the effects are displayed.  [default:
                                  CYCLE]
  -u, --effect-duration INTEGER RANGE
                                  How long to display each effect for, in
                                  seconds (1-180).  [default: 10]
  -r, --repeat-run INTEGER RANGE  How many times to run the effects before
                                  stopping (1-240).  [default: 1
  -b, --brightness INTEGER RANGE  How bright the effects will be (1-10).
                                  [default: 8]
  -i, --invert                    Change the display orientation.
  -o, --log-level [DEBUG|VERBOSE|INFO|WARNING]
                                  Show additional logging information.
                                  [default: INFO]
  --help                          Show this message and exit.

Sample output with the default options:

$ ledshimdemo
2019-08-23 17:15:37,130 - INFO - Logging level enabled!
2019-08-23 17:15:37,131 - INFO - Active Options(effect-display=CYCLE, effect-duration=10 secs, repeat-run=1, brightness=8, invert=False, log-level=INFO, effects_selected=ALL)
2019-08-23 17:15:37,132 - INFO - Effect: BinaryClock - Shows hours, minutes and seconds. Update Frequency: 1 secs
2019-08-23 17:15:47,454 - INFO - Effect: Candle - A flickering candle. Update Frequency: 0.01 secs
2019-08-23 17:15:57,474 - INFO - Effect: CheerLights - Synchronize with the CheerLights "Internet of Things" project. Update Frequency: 5 secs
2019-08-23 17:16:08,044 - INFO - Effect: ColouredLights - Simple coloured lights like Xmas lights. Update Frequency: 0.5 secs
2019-08-23 17:16:18,104 - INFO - Effect: DigitalRain - Cut price Matrix effect. Update Frequency: 0.02 secs
2019-08-23 17:16:28,111 - INFO - Effect: GradientGraph - Sine wave colour gradient effect. Update Frequency: 0.01 secs
2019-08-23 17:16:38,141 - INFO - Effect: Rainbow - A slowly moving rainbow. Update Frequency: 0.01 secs
2019-08-23 17:16:48,158 - INFO - Effect: RandomBlink - Some random blinking. Update Frequency: 0.05 secs
2019-08-23 17:16:58,213 - INFO - Effect: SolidColours - A sequence of solid colours. Update Frequency: 0.5 secs

Troubleshooting

If anything is going to cause a problem trying to run ledshimdemo it will be NumPy which is used by a couple of the demos. The NumPy package is included in most builds of Raspbian, but installed with apt-get, this then causes problems if anything tries to install a different version with pip3. For this reason ledshimdemo is set to use the Raspbian default version (see setup.py) to try and avoid installing a different version with pip3. However, if you do get a runtime error indicating a corrupted NumPy you could first try uninstalling any local pip3 versions of it to see if that helps.

pip3 uninstall numpy

Addendum

This project is somewhat over-engineered for what it actually does because it's being used as a learning exercise.

The application has a number of output logging levels built into it, including a custom VERBOSE level, to show some of the inner workings. This is just because.

The effects are loaded dynamically using a mechanism loosely based on code from this Python3 factory pattern example.

The code coverage for this project is a good example of why measuring unit test coverage can be a misleading indicator of quality. Whilst it does have plenty of unit tests those for the effects are mostly simple smoke tests which show that the code will run. They don't actually confirm that the effects are producing the desired output.

The development work for this project was done using PyCharm on an Intel x64 machine, as the project was designed to be run on an ARM based Raspberry Pi only a source distribution is uploaded to PyPi. However, when installing under Raspbian it should install the ARM wheel from PiWheels making the installation much faster. See the PiWheels FAQ for more information.

Badges showing the build status and code coverage for both the master and develop branches are shown at the top. This is a simple solution to the problem of trying to make this file specific to the branch it is in.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ledshimdemo-1.1.0.tar.gz (15.6 kB view details)

Uploaded Source

File details

Details for the file ledshimdemo-1.1.0.tar.gz.

File metadata

  • Download URL: ledshimdemo-1.1.0.tar.gz
  • Upload date:
  • Size: 15.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.5.6

File hashes

Hashes for ledshimdemo-1.1.0.tar.gz
Algorithm Hash digest
SHA256 abe268ff72dff4290e05ae2176b9b551782c1befa9367b9ae8cd2f32193d25ba
MD5 b501413d15a22d69e3af9920c21e2b07
BLAKE2b-256 d4b162a70e9a48a2ae88cca230cef0ef7aa745c8caad5b63f701cce616cae170

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page