The Bright-Pi is a small little board based around the Semtech SC620 that powers 4 white LEDs and 8 infrared ones.
Please check our quick start and FAQ for more information.
Just run the following script in a terminal window and PaPiRus will be automatically setup.
# Run this line and Bright Pi will be setup and installed
curl -sSL https://pisupp.ly/brightpicode | sudo bash
The library provides two classes. BrightPi provides driver functionalities for the SC620 whereas BrightPiSpecialEffects allows for an easier and more intuitive interface and usage.
# Global variables to quickly reference to groups of LEDs or individual ones.
# The LED* ones can only be used on their own.
LED_ALL = (1, 2, 3, 4, 5, 6, 7, 8)
LED_IR = LED_ALL[4:8]
LED_WHITE = LED_ALL[0:4]
LED1 = (1,)
LED2 = (2,)
LED3 = (3,)
LED4 = (4,)
LED5 = (5,)
LED6 = (6,)
LED7 = (7,)
LED8 = (8,)
ON = 1
OFF = 0
# reset method is used to reset the SC620 to its original state.
reset()
# get_gain and set_gain retrieve and set the gain for all LEDs.
get_gain()
# Gain from min 0 (0b0000) to max 15 (0b1111).
set_gain(gain)
# get_led_on_off and set_led_on_off retrieve and set the on/off status of the LEDs.
# White LEDs:
# 1, 2, 3, 4
# IR LEDs (in pairs)
# 5, 6, 7, 8
# leds is a tuble or array of LEDs for which you require a status.
get_led_on_off(leds)
# leds is a tuble or array of LEDs for which you are setting the status as state.
set_led_on_off(leds, state)
# get_dim and set_dim retrieve and set the dim for the specified LEDs.
get_led_dim()
# Dim from 0 (0x00) to 50 (0x32).
# leds is a tuble or array of LEDs for which you are setting the dimming level as dim.
set_led_dim(leds, dim)
# Global variables to indicate clockwise and counterclockwise LEDs rotations sequences.
ROT_CW = 0
ROT_CCW = 1
# This method flashes all LEDs at an interval for a number of times.
# repetitions indicates how many flashes will be done and interval represents the time between on and off.
flash(repetitions, interval)
# This method flashes white LEDs top to bottom, left to right or from opposed sides.
# repetitions indicates how many flashes will be done and interval represents the time between on and off. Orientation defaults to 'v'.
# Allowed values are: 'v', 'h' and 'x'.
alt_flash(repetitions, interval, orientation)
# This method flashes one white LED after another as to give the impression of a rotating sequence.
# Using the global variables ROT_CW for clockwise and ROT_CCW for counterclockwise.
# repetitions indicates how many complete sequences will be done, delay represents the time between LEDs subsequantly turning on and rotation set the direction.
night_rider(repetitions, delay, rotation)
# This method changes the gain on all LEDs from min (0b0000) to max (0b1111)
# repetitions indicates how many cycles will be done and speed represents how quickly each cycle will be completed by specifing a time between each change of gain.
beacon(repetitions, speed)
# This method changes the dimmming on white LEDs from min (0x00) to max (0x32)
# repetitions indicates how many cycles will be done and speed represents how quickly each cycle will be completed by specifing a time between each change of dimming level.
dimmer(repetitions, speed)
BrightPi
from brightpi import *
brightPi = BrightPi()
# This method is used to reset the SC620 to its original state.
brightPi.reset()
# LEDs can be prepared as tuples by explicitely specifing each,
leds = (1, 2, 3, 4)
# or as an array,
leds = [1, 2]
# or by using global variables,
leds = LED_IR
brightPi.set_led_on_off(leds, OFF)
# global variables can be used in line,
brightPi.set_led_on_off(LED_WHITE, ON)
# and single LEDs can be used too.
brightPi.set_led_on_off(LED2, ON)
# When passing LEDs on their own without using the gloabal variables each has to be represented as a tuple with only one element.
led1 = (1, )
brightPi.set_led_on_off(led1, ON)
# This could help for example in a loop.
for led in range(0, 8):
brightPi.set_led_on_off((led + 1,), ON)
BrightPiSpecialEffects
from brightpi import *
brightSpecial = BrightPiSpecialEffects()
# As BrightPiSpecialEffects inherits from BrighPi, managing the LEDs is done in the same way.
brightSpecial.set_led_on_off((1,), 0)
brightSpecial.set_led_on_off(LED4, 1)
brightSpecial.set_led_on_off((1,2,3,4), 1)
brightSpecial.set_led_on_off((1,2,3,4), 0)
# When using BrightPiSpecialEffects specific methods you will have to provide different parameters depending on the method chosen.
brightSpecial.beacon(2, 0.1)
# This method flashes one white LED after another as to give the impression of a clockwise rotating sequence.
brightSpecial.night_rider(10, 0.1)
# This method flashes one white LED after another as to give the impression of a counterclockwise rotating sequence.
brightSpecial.night_rider(10, 0.1, ROT_CCW)
brightSpecial.dimmer(2, 0.2)
brightSpecial.flash(5, 1)
# This method flashes white LEDs top to bottom.
brightSpecial.alt_flash(5, 0.2)
# This method flashes white LEDs left to right.
brightSpecial.alt_flash(5, 0.2, 'h')
# This method flashes white LEDs from opposed sides.
brightSpecial.alt_flash(5, 0.2, 'x')
# Run a demo using the various controls and effects
brightpi-test.py
LED PN Bright Pi uses LEDs which are available off the shelf via a number of vendors. The part numbers are:
- bright white LEDs (high quality Cree C513A-WSN-CV0Y0151 LEDs)
- bright IR LEDs (high quality LITEON HSDL-4261 LEDs)
Pinout The Bright Pi header is connected to the Raspberry Pi via the GPIO header on pins:
GPIO Bright Pi
2 - 5V --> 2
3 - I2C_SDA --> 4
4 - GND --> 1
5 - I2C_SCL --> 3
It is safe to say we have an awesome and growing community of people using Bright Pi to light up their projects and we get a huge amount of contributions of code, some of which we can easily integrate here and others which we can't (we are only a small team). However we want to make sure that any contributions are easy to find, for anyone looking. So here is a list of other software libraries that might be useful to you (if you have one of your own, please visit the "Issues" tab above and let us know!):