Skip to content

The NeoPixel library plus a testing mode - so you can see how your LEDs would behave directly in the terminal, without any extra hardware.

License

Notifications You must be signed in to change notification settings

glowingkitty/NeoPixelPlus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NeoPixelPlus

The NeoPixel library plus animations and terminal testing mode - so you can see how your LEDs would behave directly in the terminal, without any microcontroller.

Want to support the development and stay updated?

Become a Patreon Donate using Liberapay

Overview

  1. Installation

  2. Example

  3. NeoPixel class

  4. NeoPixel functions (animations)

    4.1 rainbow_animation()

    4.2 beats()

    4.3 moving_dot()

    4.4 light_up()

    4.5 transition()

  5. NeoPixel functions (other)

    5.1 get_sections()

    5.2 get_led_selectors()

    5.3 write()

    5.4 get_led()

    5.5 off()

    5.6 on()

    5.7 color()

    5.8 test_animations()

    5.9 get_pin()

  6. Terminal commands

Installation

Make sure Python 3 is installed.

Recommended: always create a Python Virtual Environment for your project and install neopixel_plus in that environment.

pip install neopixel_plus

Example

IMPORTANT:

To use NeoPixel+ on Raspberry Pi (using target='adafruit'), you need to make sure you execute python with sudo. For example:

sudo python

or from a virtual environment

sudo ./pyvenv/bin/python
from neopixel_plus import NeoPixel

# Example 1 - Changing the color of a physical LED
pixel = NeoPixel(pin=5, n=30)
pixel.leds[0] = (219,100,222)
pixel.write()

# Example 2 - Testing a rainbow animation in the terminal
NeoPixel(test=True).rainbow_animation()

# Example 3 - Playing a rainbow animation on physical LEDs
NeoPixel(pin=5, n=30).rainbow_animation()

NeoPixel class

Input:

NeoPixel(pin=...)
type = int
default = 10
purpose = 'The GPIO pin the data wire of the LED strip is connected to'
NeoPixel(n=...)
type = int
default = 30
purpose = 'The number of RGB LEDs on your LED strip'
NeoPixel(start_led=...)
type = int
default = 0
purpose = 'With which LED should the animation start'
NeoPixel(test=...)
type = bool
default = False
purpose = 'If True: show LED simulation in terminal output. If False: connect to real LED strip and play animation.'
NeoPixel(overwrite_line=...)
type = bool
default = True
purpose = 'If False: show all steps of LED animation in terminal ouput. Useful for debugging.'
NeoPixel(debug=...)
type = bool
default = False
purpose = 'If True: prints all function calls and their input variables, for better debugging.'
NeoPixel(target=...)
type = str
default = 'micropython'
options = ['micropython','adafruit']
purpose = 'Defines what kind of NeoPixel library is targeted: the default micropython NeoPixel or adafruits NeoPixel for Raspberry Pi.'

NeoPixel functions (animations)

rainbow_animation()

rainbow

Input:

rainbow_animation(brightness=...)
type = float
default = 1.0
purpose = 'Set the maximum brightness of the LEDs. 0 == off, 1.0 == 100%'
rainbow_animation(loop_limit=...)
type = int
default = None
purpose = 'If set, defines how often animation should repeat, else: animation runs in infinite loop.'
rainbow_animation(duration_ms=...)
type = int
default = 1000
purpose = 'Defines many ms should the animation last'
rainbow_animation(pause_ms=...)
type = int
default = None
purpose = 'If set, defines if a pause should be made after animation and how long that lasts.'
rainbow_animation(customization_json=...)
type = dict
default = {}
purpose = 'If you like, you can also give the customization options via a dict as an imput. Example: {"duration_ms":2000}'

beats()

beats

Input:

beats(brightness=...)
type = float
default = 1.0
purpose = 'Set the maximum brightness of the LEDs. 0 == off, 1.0 == 100%'
beats(brightness_fixed=...)
type = bool
default = False
purpose = 'If False: the brightness will start low and become high at the end. If True: the brightness stays the same during the animation, for all LEDs.'
beats(loop_limit=...)
type = int
default = None
purpose = 'If set, defines how often animation should repeat, else: animation runs in infinite loop.'
beats(duration_ms=...)
type = int
default = 200
purpose = 'Defines many ms should the animation last'
beats(pause_ms=...)
type = int
default = 300
purpose = 'If set, defines if a pause should be made after animation and how long that lasts.'
beats(start=...)
type = str
default = 'start'
options = ['start','end','start + end','center']
purpose = 'Defines from where the animation should start'
beats(rgb_colors=...)
type = list
default = list of randomly selected RGB colors (example: [[140,140,144],[240,100,0]])
purpose = 'Define what RGB colors the animation will use'
beats(num_random_colors=...)
type = int
default = 5
purpose = 'Defines how many random RGB colors the animation will switch between, if no RGB colors are manually defined'
beats(max_height=...)
type = float
default = 1.0
purpose = 'Defines how high the beat animation can go. 1.0 == 100% of all LEDs, 0 == no LEDs.'
beats(customization_json=...)
type = dict
default = {}
purpose = 'If you like, you can also give the customization options via a dict as an imput. Example: {"duration_ms":2000}'

moving_dot()

moving_dot

Input:

moving_dot(brightness=...)
type = float
default = 1.0
purpose = 'Set the maximum brightness of the LEDs. 0 == off, 1.0 == 100%'
moving_dot(loop_limit=...)
type = int
default = None
purpose = 'If set, defines how often animation should repeat, else: animation runs in infinite loop.'
moving_dot(duration_ms=...)
type = int
default = 200
purpose = 'Defines many ms should the animation last'
moving_dot(pause_a_ms=...)
type = int
default = 0
purpose = 'Defines if pause A should be made and how long that lasts.'
moving_dot(pause_b_ms=...)
type = int
default = 300
purpose = 'Defines if pause B should be made and how long that lasts.'
moving_dot(start=...)
type = str
default = 'start'
options = ['start','end']
purpose = 'Defines from where the animation should start'
moving_dot(rgb_colors=...)
type = list
default = list of randomly selected RGB colors (example: [[140,140,144],[240,100,0]])
purpose = 'Define what RGB colors the animation will use'
moving_dot(num_random_colors=...)
type = int
default = 5
purpose = 'Defines how many random RGB colors the animation will switch between, if no RGB colors are manually defined'
moving_dot(customization_json=...)
type = dict
default = {}
purpose = 'If you like, you can also give the customization options via a dict as an imput. Example: {"duration_ms":2000}'

light_up()

light_up

Input:

light_up(brightness=...)
type = float
default = 1.0
purpose = 'Set the maximum brightness of the LEDs. 0 == off, 1.0 == 100%'
light_up(loop_limit=...)
type = int
default = None
purpose = 'If set, defines how often animation should repeat, else: animation runs in infinite loop.'
light_up(duration_ms=...)
type = int
default = 200
purpose = 'Defines many ms should the animation last'
light_up(pause_ms=...)
type = int
default = 200
purpose = 'Defines if pause should be made and how long that lasts.'
light_up(sections=...)
type = str or list
default = 'all'
options = ['all',0,1,2,3]
purpose = 'Defines what sections of the LED strip should glow up (one section is 15 LEDs).'
light_up(rgb_colors=...)
type = list
default = list of randomly selected RGB colors (example: [[140,140,144],[240,100,0]])
purpose = 'Define what RGB colors the animation will use'
light_up(num_random_colors=...)
type = int
default = 5
purpose = 'Defines how many random RGB colors the animation will switch between, if no RGB colors are manually defined'
light_up(customization_json=...)
type = dict
default = {}
purpose = 'If you like, you can also give the customization options via a dict as an imput. Example: {"duration_ms":2000}'

transition()

transition

Input:

transition(brightness=...)
type = float
default = 1.0
purpose = 'Set the maximum brightness of the LEDs. 0 == off, 1.0 == 100%'
transition(loop_limit=...)
type = int
default = None
purpose = 'If set, defines how often animation should repeat, else: animation runs in infinite loop.'
transition(duration_ms=...)
type = int
default = 200
purpose = 'Defines many ms should the animation last'
transition(pause_ms=...)
type = int
default = 200
purpose = 'Defines if pause should be made and how long that lasts.'
transition(sections=...)
type = str or list
default = 'all'
options = ['all',0,1,2,3]
purpose = 'Defines what sections of the LED strip should glow up (one section is 15 LEDs).'
transition(rgb_colors=...)
type = list
default = list of randomly selected RGB colors (example: [[140,140,144],[240,100,0]])
purpose = 'Define what RGB colors the animation will use'
transition(num_random_colors=...)
type = int
default = 5
purpose = 'Defines how many random RGB colors the animation will switch between, if no RGB colors are manually defined'
transition(customization_json=...)
type = dict
default = {}
purpose = 'If you like, you can also give the customization options via a dict as an imput. Example: {"duration_ms":2000}'

NeoPixel functions (other)

get_sections()

get_sections Returns a list of all the LED strip sections (length: 15 LEDs per section).

get_led_selectors()

get_led_selectors Returns a list of all the selector numbers to select specific LEDs in the strip.

Input:

get_led_selectors(sections=...)
type = str or list
default = 'all'
options = ['all','random',0,1,2,3]
purpose = 'Defines what sections should be returned.'

write()

write Makes the LEDs glow in the color you defined. If test==True: simulates how the LEDs would glow.

Input:

write(s_after_wait=...)
type = float
default = 1.0/36.0
purpose = 'Defines how many seconds the code should wait after writing the LED status.'

get_led()

get_led Get the number of an LED, to select it for changing its color.

Input:

get_led(i=...)
type = int
purpose = 'Defines which LED you want to get. If <0: LED from the end will be selected.'
get_led(start=...)
type = str
default = None
purpose = 'Defines from where your animation starts. If start==end: LEDs will be counted from the end of the LED strip.'

off()

off Turns all LEDs off.

on()

on Turns all or specific LEDs on (make them glow white, 100% brightness).

Input:

on(num=...)
type = int
default = None
purpose = 'Turn on only one specific LED.'

color()

color Turn on all LEDs in a specific RGB color.

Input:

color(rgb_color=...)
type = list
purpose = 'Define an [r,g,b] list with the red, green and blue values (from 0-255).'
color(customization_json=...)
type = dict
default = {}
purpose = 'If you like, you can also give the customization options via a dict as an imput. Example: {"rgb_color":[100,200,200]}'

test_animations()

test_animations Run all the different LED animations from NeoPixel+.

get_pin()

Returns the class object for the GPIO pin (micropython's and adafruit's NeoPixel use different classes for that).

Terminal commands

You can also start an animation by calling the neopixel_plus.py file directly via your terminal.

Example:

python3 neopixel_plus.py -t <test> -d <target> -n <n> -a <animation>

About

The NeoPixel library plus a testing mode - so you can see how your LEDs would behave directly in the terminal, without any extra hardware.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages