How to use the Pi-LITEr from Ciseco

How To Use The Pi-LITEr From CisecoThe PiLITEr - Small, but full of potential

Controlling LEDs is one of the first projects people tend to shoot for, after the initial “Hello World” introduction to the Raspberry Pi. The problem with this is that not everyone is as good with the hardware side as they are with the code – with LEDs, resistors, current, volts etc putting these people off initially.

There’s also the difficulty for teachers trying to manage 20 children in a class, each soldering parts and/or getting things the wrong way round – a mammoth, and brave, task!

This is where small, pre-assembled and simplistic add-on boards such as the Pi-LITEr from Ciseco come in handy. Let me show you the board, and go through a few examples of simple code that I have written…

The Board

First of all – what is it?

The Pi-LITEr is a small add on board that pushes on to the Raspberry Pi’s GPIO pins. It comes with 8 LEDs, complete with the appropriate resistors, connected to 8 of the GPIO pins of your Pi.

It’s as simple as that – it’s the same as if you broke out your GPIO to a breadboard and wired up 8 LEDs yourself – albeit this is a much smaller, easier and tidier package.

No resistors, soldering or messing around. You simply place the order online, and the nice people at Ciseco send you the pre-assembled board. I think this is great as an educational tool, ticking all the boxes that educators need – Cheap, simple, easy and safe.

PiLITEr compared to a Lego brick

It’s the same size as an 8-point Lego brick!

What can I do with it?

This is the same as asking “What can I do with a Raspberry Pi and some LEDs” – depending on your level of Python skill, the possibilities really are endless.

The LEDs are connected to standard GPIO pins, so if you can define an ‘event’ that would set a GPIO pin to ‘output’ – then you can make it happen on the Pi-LITEr.

PiLITEr LEDs

The Pi-LITEr has 8 mega bright LEDs

Now some of us haven’t even got that far yet, and this is probably more focused towards new learners, so continue reading and we’ll cover some code examples…

Preparation

Hold on there my friend, your Pi might not be ready to use GPIO commands just yet. You may have these modules installed already, but there’s no harm in checking.

Get yourself into Terminal and run the following commands:

sudo apt-get update
sudo apt-get upgrade

(Updates your Raspberry Pi)

sudo apt-get install python-dev

(Gives our Pi everything it needs to use Python)

sudo apt-get install python-rpi.gpio

(Installs a module that enables you to control the GPIO pins)

Code Examples

There are 2 ways to control the Pi-LITEr that I know of – WiringPi and RPi.GPIO. I’ve always used the latter just because it’s the first method that I learnt when starting out, so I’ll use that in the code examples here (which we set up in the previous step).

I have added 5 code examples for try out and learn with your Pi-LITEr, in order of difficulty/complexity. Go ahead and play with the numbers…breaking is learning (my dad knows this from all the PCs I killed as a child).

Before you try, here’s a video showing how each one should work:

BEGINNER – Light LED 1 Only

If you’re just starting out, have a go at this first. It will show you how we assign a single GPIO pin to ‘turn on’ (LED 1):

#!/usr/bin/python
#
# PiLITEr 'beginner' script by the "Average Man"
# Check out http://AverageManVsRaspberryPi.com for more PiLITEr code examples

# Imports
import RPi.GPIO as GPIO
import time
import os

# Set the GPIO mode
GPIO.setmode(GPIO.BOARD)

# Turn off annoying warnings
GPIO.setwarnings(False)

# Define PiLITEr to GPIO mapping
LED1 = 7
LED2 = 11
LED3 = 13
LED4 = 12
LED5 = 15
LED6 = 16
LED7 = 18
LED8 = 22

# Main program
GPIO.setup(LED1, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED2, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED3, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED4, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED5, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED6, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED7, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED8, GPIO.OUT) #Set GPIO pin to output (to 'give' power)

# Turn on LED 1
GPIO.output(LED1) == True

# Wait 5 seconds
time.sleep(5)

# Turn off LED 1
GPIO.output(LED1) == False

BASIC – Light LEDs 1, 2, 3 and 4

A step up from the last example – light the first 4 LEDs:

#!/usr/bin/python
#
# PiLITEr 'Basic' script by the "Average Man"
# Check out http://AverageManVsRaspberryPi.com for more PiLITEr code examples

# import
import RPi.GPIO as GPIO
import time
import os

# Set the GPIO mode
GPIO.setmode(GPIO.BOARD)

# Turn off annoying warnings
GPIO.setwarnings(False)

# Define PiLITEr to GPIO mapping
LED1 = 7
LED2 = 11
LED3 = 13
LED4 = 12
LED5 = 15
LED6 = 16
LED7 = 18
LED8 = 22

# Main program
GPIO.setup(LED1, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED2, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED3, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED4, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED5, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED6, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED7, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED8, GPIO.OUT) #Set GPIO pin to output (to 'give' power)

# Turn on LEDs 1, 2, 3 and 4
while 1:
GPIO.output(LED1,GPIO.HIGH)
GPIO.output(LED2,GPIO.HIGH)
GPIO.output(LED3,GPIO.HIGH)
GPIO.output(LED4,GPIO.HIGH)

#Stay on for 6 seconds, then turn off LEDs and close
time.sleep(6)

GPIO.output(LED1,GPIO.LOW)
GPIO.output(LED2,GPIO.LOW)
GPIO.output(LED3,GPIO.LOW)
GPIO.output(LED4,GPIO.LOW)

SIMPLE – Light LEDs 1 to 8 In Turn

This time, we add timing to light one LED after another:

#!/usr/bin/python
#
# PiLITEr 'Simple' script by the "Average Man"
# Check out http://AverageManVsRaspberryPi.com for more PiLITEr code examples

#import
import RPi.GPIO as GPIO
import time
import os

# Set the GPIO mode
GPIO.setmode(GPIO.BOARD)

#Turn off annoying warnings
GPIO.setwarnings(False)

# Define PiLITEr to GPIO mapping
LED1 = 7
LED2 = 11
LED3 = 13
LED4 = 12
LED5 = 15
LED6 = 16
LED7 = 18
LED8 = 22

# Main program
GPIO.setup(LED1, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED2, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED3, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED4, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED5, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED6, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED7, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED8, GPIO.OUT) #Set GPIO pin to output (to 'give' power)

# LED on/off code

#LED1
GPIO.output(LED1,GPIO.HIGH)
time.sleep(1)
GPIO.output(LED1,GPIO.LOW)

#LED2
GPIO.output(LED2,GPIO.HIGH)
time.sleep(1)
GPIO.output(LED2,GPIO.LOW)

#LED3
GPIO.output(LED3,GPIO.HIGH)
time.sleep(1)
GPIO.output(LED3,GPIO.LOW)

#LED4
GPIO.output(LED4,GPIO.HIGH)
time.sleep(1)
GPIO.output(LED4,GPIO.LOW)

#LED5
GPIO.output(LED5,GPIO.HIGH)
time.sleep(1)
GPIO.output(LED5,GPIO.LOW)

#LED6
GPIO.output(LED6,GPIO.HIGH)
time.sleep(1)
GPIO.output(LED6,GPIO.LOW)

#LED7
GPIO.output(LED7,GPIO.HIGH)
time.sleep(1)
GPIO.output(LED7,GPIO.LOW)

#LED8
GPIO.output(LED8,GPIO.HIGH)
time.sleep(1)
GPIO.output(LED8,GPIO.LOW)

LESS SIMPLE – Knight Rider Light

Remember KITT? This one makes further use of the timing function (no max loop exit so just close the script once you’re done riding the knight):

#!/usr/bin/python
#
# PiLITEr 'Simple 2' script by the "Average Man"
# Check out http://AverageManVsRaspberryPi.com for more PiLITEr code examples

#import
import RPi.GPIO as GPIO
import time
import os

# Set the GPIO mode
GPIO.setmode(GPIO.BOARD)

#Turn off annoying warnings
GPIO.setwarnings(False)

# Define PiLITEr to GPIO mapping
LED1 = 7
LED2 = 11
LED3 = 13
LED4 = 12
LED5 = 15
LED6 = 16
LED7 = 18
LED8 = 22

# Main program
GPIO.setup(LED1, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED2, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED3, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED4, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED5, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED6, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED7, GPIO.OUT) #Set GPIO pin to output (to 'give' power)
GPIO.setup(LED8, GPIO.OUT) #Set GPIO pin to output (to 'give' power)

# Turn on LED 1
while 1:
    #LED sequence
    GPIO.output(LED1,GPIO.HIGH)
    time.sleep(0.05)
    GPIO.output(LED1,GPIO.LOW)

    GPIO.output(LED2,GPIO.HIGH)
    time.sleep(0.05)
    GPIO.output(LED2,GPIO.LOW)

    GPIO.output(LED3,GPIO.HIGH)
    time.sleep(0.05)
    GPIO.output(LED3,GPIO.LOW)

    GPIO.output(LED4,GPIO.HIGH)
    time.sleep(0.05)
    GPIO.output(LED4,GPIO.LOW)

    GPIO.output(LED5,GPIO.HIGH)
    time.sleep(0.05)
    GPIO.output(LED5,GPIO.LOW)

    GPIO.output(LED6,GPIO.HIGH)
    time.sleep(0.05)
    GPIO.output(LED6,GPIO.LOW)

    GPIO.output(LED7,GPIO.HIGH)
    time.sleep(0.05)
    GPIO.output(LED7,GPIO.LOW)

    GPIO.output(LED8,GPIO.HIGH)
    time.sleep(0.05)

    #LED sequence up
    GPIO.output(LED8,GPIO.LOW)
    GPIO.output(LED7,GPIO.HIGH)
    time.sleep(0.05)

    GPIO.output(LED7,GPIO.LOW)
    GPIO.output(LED6,GPIO.HIGH)
    time.sleep(0.05)

    GPIO.output(LED6,GPIO.LOW)
    GPIO.output(LED5,GPIO.HIGH)
    time.sleep(0.05)

    GPIO.output(LED5,GPIO.LOW)
    GPIO.output(LED4,GPIO.HIGH)
    time.sleep(0.05)

    GPIO.output(LED4,GPIO.LOW)
    GPIO.output(LED3,GPIO.HIGH)
    time.sleep(0.05)

    GPIO.output(LED3,GPIO.LOW)
    GPIO.output(LED2,GPIO.HIGH)
    time.sleep(0.05)

    GPIO.output(LED2,GPIO.LOW)

INTERMEDIATE – Temperature Monitor

A lot more going on in this example, but not too difficult once you break it down. Take a look at the code – it lights up each LED depending on the temperature of the Pi’s chip (This is set between 30 and 44 degrees, as mine normally sits at around 34 degrees).

#!/usr/bin/python  
#  
# PiLITEr 'Intermediate' script by the "Average Man"  
# Check out http://AverageManVsRaspberryPi.com for more PiLITEr code examples  

#import  
import RPi.GPIO as GPIO  
import time  
import os

# Set the GPIO mode
GPIO.setmode(GPIO.BOARD)

#Turn off annoying warnings  
GPIO.setwarnings(False)  

# Define PiLITEr to GPIO mapping  
LED1 = 7  
LED2 = 11  
LED3 = 13   
LED4 = 12  
LED5 = 15  
LED6 = 16  
LED7 = 18  
LED8 = 22  
 
# Main program   
GPIO.setup(LED1, GPIO.OUT) #Set GPIO pin to output (to 'give' power)  
GPIO.setup(LED2, GPIO.OUT) #Set GPIO pin to output (to 'give' power)  
GPIO.setup(LED3, GPIO.OUT) #Set GPIO pin to output (to 'give' power)  
GPIO.setup(LED4, GPIO.OUT) #Set GPIO pin to output (to 'give' power)  
GPIO.setup(LED5, GPIO.OUT) #Set GPIO pin to output (to 'give' power)  
GPIO.setup(LED6, GPIO.OUT) #Set GPIO pin to output (to 'give' power)  
GPIO.setup(LED7, GPIO.OUT) #Set GPIO pin to output (to 'give' power)  
GPIO.setup(LED8, GPIO.OUT) #Set GPIO pin to output (to 'give' power)   

#Clear LEDs if already lit from last usage  
GPIO.output(LED1,GPIO.LOW)  
GPIO.output(LED2,GPIO.LOW)  
GPIO.output(LED3,GPIO.LOW)  
GPIO.output(LED4,GPIO.LOW)  
GPIO.output(LED5,GPIO.LOW)  
GPIO.output(LED6,GPIO.LOW)  
GPIO.output(LED7,GPIO.LOW)  
GPIO.output(LED8,GPIO.LOW)  

timelastchecked = 0 

while 1:  

if time.time() >= timelastchecked:  
    timelastchecked = time.time()+3 #Check every 3 seconds  
    mytemp = ""  
    f=os.popen("/opt/vc/bin/vcgencmd measure_temp") #Temperature command for terminal  

    for i in f.readlines():  
        mytemp += i  
        mytemp = mytemp[5:-5] #removes 5 characters from the front of the string, and 5 from the back  

        if '30' <= mytemp <= '31': #If temp between 30 and 31  
            GPIO.output(LED1,GPIO.HIGH)  
            GPIO.output(LED2,GPIO.LOW)  
            GPIO.output(LED3,GPIO.LOW)  
            GPIO.output(LED4,GPIO.LOW)  
            GPIO.output(LED5,GPIO.LOW)  
            GPIO.output(LED6,GPIO.LOW)  
            GPIO.output(LED7,GPIO.LOW)  
            GPIO.output(LED8,GPIO.LOW)  

        if '32' <= mytemp <= '33':  
            GPIO.output(LED1,GPIO.LOW)  
            GPIO.output(LED2,GPIO.HIGH)  
            GPIO.output(LED3,GPIO.LOW)  
            GPIO.output(LED4,GPIO.LOW)  
            GPIO.output(LED5,GPIO.LOW)  
            GPIO.output(LED6,GPIO.LOW)  
            GPIO.output(LED7,GPIO.LOW)  
            GPIO.output(LED8,GPIO.LOW)  

        if '34' <= mytemp <= '35':  
            GPIO.output(LED1,GPIO.LOW)  
            GPIO.output(LED2,GPIO.LOW)  
            GPIO.output(LED3,GPIO.HIGH)  
            GPIO.output(LED4,GPIO.LOW)  
            GPIO.output(LED5,GPIO.LOW)  
            GPIO.output(LED6,GPIO.LOW)  
            GPIO.output(LED7,GPIO.LOW)  
            GPIO.output(LED8,GPIO.LOW)  

        if '36' <= mytemp <= '37':  
            GPIO.output(LED1,GPIO.LOW)  
            GPIO.output(LED2,GPIO.LOW)  
            GPIO.output(LED3,GPIO.LOW)  
            GPIO.output(LED4,GPIO.HIGH)  
            GPIO.output(LED5,GPIO.LOW)  
            GPIO.output(LED6,GPIO.LOW)  
            GPIO.output(LED7,GPIO.LOW)  
            GPIO.output(LED8,GPIO.LOW)  

        if '38' <= mytemp <= '39':  
            GPIO.output(LED1,GPIO.LOW)  
            GPIO.output(LED2,GPIO.LOW)  
            GPIO.output(LED3,GPIO.LOW)  
            GPIO.output(LED4,GPIO.LOW)  
            GPIO.output(LED5,GPIO.HIGH)  
            GPIO.output(LED6,GPIO.LOW)  
            GPIO.output(LED7,GPIO.LOW)  
            GPIO.output(LED8,GPIO.LOW)  

        if '39' <= mytemp <= '40':  
            GPIO.output(LED1,GPIO.LOW)  
            GPIO.output(LED2,GPIO.LOW)  
            GPIO.output(LED3,GPIO.LOW)  
            GPIO.output(LED4,GPIO.LOW)  
            GPIO.output(LED5,GPIO.LOW)  
            GPIO.output(LED6,GPIO.HIGH)  
            GPIO.output(LED7,GPIO.LOW)  
            GPIO.output(LED8,GPIO.LOW)  

        if '41' <= mytemp <= '42':  
            GPIO.output(LED1,GPIO.LOW)  
            GPIO.output(LED2,GPIO.LOW)  
            GPIO.output(LED3,GPIO.LOW)  
            GPIO.output(LED4,GPIO.LOW)  
            GPIO.output(LED5,GPIO.LOW)  
            GPIO.output(LED6,GPIO.LOW)  
            GPIO.output(LED7,GPIO.HIGH)  
            GPIO.output(LED8,GPIO.LOW)  

        if '43' <= mytemp <= '44':  
            GPIO.output(LED1,GPIO.LOW)  
            GPIO.output(LED2,GPIO.LOW)  
            GPIO.output(LED3,GPIO.LOW)  
            GPIO.output(LED4,GPIO.LOW)  
            GPIO.output(LED5,GPIO.LOW)  
            GPIO.output(LED6,GPIO.LOW)  
            GPIO.output(LED7,GPIO.LOW)  
            GPIO.output(LED8,GPIO.HIGH)  

Summary

There is a lot more that can be done with LED control, it really is all down to how much you can do in Python (or other languages), but hopefully the code examples above have taught you a few things and have got you thinking about creating your own code.

If you have any questions, just leave a comment below.

Want a Pi-LITEr? Get one from Amazon

Until next time…

6 Comments on "How to use the Pi-LITEr from Ciseco"

  1. Hi, thanks for your wonderfull guide. Is it possible to use the Pi-LITEr From Ciseco on the RPI2 ? what about what gPIO pin to use for?
    tks,
    Pippo

  2. Hi! I’m trying to use this to light the inside of a case. I’d like all 8 LEDs to come on on system boot. Can you point me to some code that could help there? I’m not a coder, so I’m struggling with how to get this loaded.

    Thanks in advance

    • All you need to do is set all 8 GPIOs to turn on in a python script, then set that script to run at the start using cron or the rc local method.

  3. I noticed on my Raspberry Pi V3 that the Python program needs to specify GPIO.setmode(GPIO.BOARD). This is not done in the first program “Beginner” so that program doesn’t seem to work properly.

    • Cheers Peter – I’ve updated the code examples (and reformatted this page as it seems to have hung on to Blogger formatting from when I moved over to WordPress)

Leave a comment

Your email address will not be published.


*