This document provides instructions for a coding workshop where participants will build a small rotating art project using a Raspberry Pi, Pibrella board, motor, and other accessories. Attendees will write Python code to control the motor and spin their attached art project. The code examples show how to import libraries, turn the motor on and off, and add time delays to control the spinning duration. More advanced examples add button control so the project only spins when the button is pressed. The goal is for participants to create an original rotating sculpture and experiment with coding techniques to achieve different spinning motions.
2. HARDWARE REQUIRED
Raspberry Pi, (any version)
Pibrella board, (this can be done without, but
requires the motor to be wired directly to the pi,
which is definitely not as easy… )
Accessories- monitor, keyboard, mouse and
power supplies
3. HOOKUP AND STARTUP YOUR RASPBERRY
PI
Ensure the Pibrella is already installed, if not,
the next slide will cover and handouts are
available from Kellyn.
YOU MUST protect your HDMI port from the
Pibrella board. If you don’t have a buffer,
(cardboard, foam, etc.) between the two, cut out a
piece of cardboard or similar to stick between the
metal contacts on the bottom of the pibrella
board and the top of your HDMI port.
5. ART PROJECT TODAY
Using a LIGHT art project, we’ll attach
the small item to a motor and control it
code.
Can be a character that will dance in
circles, or animal/flower that spins.
A flyer that will be launched
The art must attach to a small wooden
“toothpick” or a flat stand.
What you create is UP TO YOU!
6. THIS PROJECT WILL WORK WITH DIFFERENT
VERSIONS OF PYTHON…BUT
Python3 will allow you to utilize all features of
the Pibrella.
Connected to the wifi, install this libraries and
then re-install the pibrella with new lib files:
>sudo apt-get install python3-pip
>sudo pip-3.2 install pibrella
7. AGAIN- THE GOAL OF TODAY’S
PROJECT
Create a Rotating Project of YOUR OWN design
with code-
Using a simple motor and provided supplies.
Be creative and build what you want that will
attach to a base or wooden stick.
Think about the different uses for this project.
Think about enhancements for your project while
you’re working with it!
8. ENTER TIMING FIRST!
Once the wheel and motors have been assembled
and attached to the Pibrella, it is time to program
them to do what they were built for... turning!
On your Raspberry Pi:
Open a terminal window and type vi
<file_name>.py and press Enter on the
keyboard. This will open a blank text editor file
in which you can type your code.
9. IMPORT THE LIBRARIES
Begin your code by importing the Pibrella Python
library needed to control the motor by typing:
import pibrella
Underneath, import the time library in the same
way so that you can add time delays to your
program:
import time
10. CODING AFTER TIME ENTRY
Leave a blank line of code by pressing Enter.
Underneath, you can now write the sequence of
instructions to control the attached motor:
pibrella.output.e.on() time.sleep(10)
pibrella.output.e.off()
To exit out of the program, type in:
quit()
Press Esc :wq to save and quit.
11. CODE SHOULD LOOK LIKE THIS
import pibrella
import time
<enter break line in code>
pibrella.output.e.on() #turn on
time.sleep(10) #spin for 10sec
pibrella.output.e.off() #turn off
quit()
12. HOOK UP YOUR ENGINE TO THE PIBRELLA
Your Setup should
look like the
following:
Wires red to
posistive, black to
negative.
Most likely hooked
up to D, but could
be to E, (top right
of red button for a
few)
13. ATTACH YOUR ART PROJECT AND RUN
Now that you tested successfully, add your art
project with whatever type base to the motor and
run again.
14. RUN THE CODE
Python
sudo python –i <file name>.py
Python 3
sudo python3 <file name>.py
Now this just runs the engine as soon
as you execute it and no control
outside of that.
15. MORE ADVANCED BUTTON CONTROL
import pibrella
import time
<line break in code>
while true:
<4 spcs>if pibrella.button.read():
<indent 8 spcs> pibrella.output.e.on()
<indent 8 spcs> time.sleep(0.01)
<indent 8 spcs> pibrella.output.e.off()
<indent 8 spcs> pibrella.output.e.on()
<indent 8 spcs> time.sleep(0.02)
<indent 8 spcs> pibrella.output.e.off()
<indent 8 spcs> break
Save File
16. RUN THE CODE
Python
sudo python –i <file name>.py
Python 3
sudo python3 <file name>.py
NOW, push the button to execute the
spin!
How did you spin timing and motor power
combination do?
Do you need to add or subtract time to your
project?
17. LAUNCHING “FLYERS”
Attach your Flyer, (spinner or other design) to
your engine.
Ensure it’s stable enough to spin, but not too
tight that it won’t launch.
18. CODE THE FOLLOWING
import pibrella
import time
<line break in code>
while true:
<4 spcs>if pibrella.button.read():
<indent 8 spcs> pibrella.output.e.on()
<indent 8 spcs> time.sleep(30)
<indent 8 spcs> pibrella.output.e.off()
<indent 8 spcs> break
quit()
Save File with name “launch_flyer.py”
19. RUN THE CODE
Python
sudo python –i launch_flyer.py
Python 3
sudo python3 launch_flyer.py
The current time for the spin is 30 seconds-
Is this too much? Does the engine spin long after
the flyer has launched and you need to decrease
it?
Is it not long enough? Increase the time from
time.sleep(30) to time.sleep(45) to see if that is
enough.
20. ENHANCING YOUR PROJECT
How would you build out your project?
What kind of additional coding would you add?
Would your project be cooler if you added:
Sound?
Light?
Additional Motors?
Art?