0
~3
1
RX
7
2
TX
~6
~5
4
8
)
SC
SC L
AR A
E
GN F
D
13
1
~1 2
~1 1
0
~9
8
9
~
V
~
N
D 7
IG
6
IT ~
AL ~5
(P 4
W
3
M ~
O
Version 3.2
EF
10
.
K
C
~
11
A
H
~
12
.
P
ET
T
13
R
TX
A
A
H
L
SC A
SD EF
AR ND
G 13
RX
E
L
.
N
S
E
R
IS
ES
SE
N
ER
VI
IOR
RE
W
D
IN
V
V
3V
T
3.
SE
GN
PO
D
AN
A5
G
OR
M
ON
15
15
F
RE
RE
GN
A1
A4
AL
O
A3
1 3for the SparkFun RedBoard
Your guide to the SparkFun Inventor’s Kit
RX
TX
TF
LA
EN
PM
LO
VE
DE
GE
UA
NG
LA
INO
DU
DIG
I TA
L(
PW
M~
)
AR
TP
7-
7-
IO
5V
A0
A2
T
SIK GUIDE
SE
RE
Table of Contents
Welcome to the SparkFun Inventor’s Guide
The SparkFun Inventor's Guide is your map for navigating the
waters of beginning embedded electronics. This booklet contains
all the information you will need to explore the 16 circuits of the
SparkFun Inventor's Kit for Educators. At the center of this
manual is one core philosophy - that anyone can (and should)
play around with electronics. When you're done with this guide,
you'll have the know-how to start creating your own projects and
experiments. Now enough talking - let's get inventing!
www.sparkfun.com
Section 1:
Getting Started
What is the RedBoard platform?
2
Download Arduino Software (IDE)
4
Install Drivers
5
Select your board: Arduino Uno
8
Download “SIK Guide Code”
9
Section 2:
Getting Started with Circuits
The World Runs on Circuits
10
Inventory of Parts
12
RedBoard
14
Breadboard
16
Circuit #1 - Your First Circuit: Blinking a LED
18
Circuit #2 - Potentiometer
25
Circuit #3 - RGB LED
29
Circuit #4 - Multiple LEDs
33
Circuit #5 - Push Buttons
37
Circuit #6 - Photo Resistor
41
Circuit #7 - Temperature Sensor
45
Circuit #8 - A Single Servo
49
Circuit #9 - Flex Sensor
53
Circuit #10 - Soft Potentiometer
57
Circuit #11 - Piezo Buzzer
61
Circuit #12 - Spinning a Motor
65
Circuit #13 - Relay
69
Circuit #14 - Shift Register
73
Circuit #15 - LCD
77
Circuit #16 - Simon Says
81
Page 1
What is the RedBoard platform?
The DIY Revolution
We live in a unique time where we have access to resources
that allow us to create our own solutions and inventions. The
DIY revolution is composed of hobbyists, tinkerers and
inventors who would rather craft their own projects than let
someone do it for them.
www.sparkfun.com
A Computer for the Physical World
The RedBoard in your hand (or on your desk) is your
development platform. At its roots, the RedBoard is
essentially a small portable computer. It is capable of
taking inputs (such as the push of a button or a reading
from a light sensor) and interpreting that information to
control various outputs (like a blinking LED light or an
electric motor).
That's where the term "physical computing" is born this board is capable of taking the world of electronics
and relating it to the physical world in a real and tangible
way. Trust us - this will all make more sense soon.
RedBoard
7-15V
IOREF
FPO
FPO
13
TX
RX
The SparkFun RedBoard is one of a multitude of
development boards based on the ATmega328. It has 14
digital input/output pins (6 of which can be PWM
outputs), 6 analog inputs, a 16 MHz crystal oscillator, a
USB connection, a power jack, an ISP header, and a reset
button. Don’t worry, you’ll learn about all these later.
RESET
// SparkFun RedBoard
RESET
5V
GND
VIN
POWER
GND
A0
A1
A3
Page 2
ISP
A5
ON
A4
ANALOG IN
A2
DIGITAL (PWM~)
LEARN. SHARE. HACK.
3.3V
SCL
SDA
AREF
GND
13
12
~11
~10
~9
8
7
~6
~5
4
~3
2
TX 1
RX 0
c
b
a
d
h
RedBoard
e
g
f
a
Bug Zapper Counter
d
Camera Time-lapse operation
g
Auto-Coffee Maker
b
Old Toy Email Notifer
e
Auto-Plant Watering
h
Quadcopter
c
Power-Lacing High Tops
f
Re-Programmed Traffic Light
Page 3
Download the Arduino IDE (Integrated Development Environment)
Access the Internet
NW
N
In order to get your RedBoard up and running, you'll need to
download the newest version of the Arduino software first from
www.arduino.cc (it's free!). This software, known as the Arduino
IDE, will allow you to program the board to do exactly what you
want. It’s like a word processor for writing programs. With an
internet-capable computer, open up your favorite browser and
type in the following URL into the address bar:
NE
W
E
SE
S
SW
arduino.cc/en/main/software
1
Click on your appropriate computer
operating system next to the “ + ” sign.
Windows
Download
Windows
Mac OS
X
Mac OS X
Linux: 32 bit, 64 bit
Linux:source
32 bit, 64 bit
user
•••••••••
Choose the appropriate Operating System installation package for your computer.
Page 4
// Connect your RedBoard to your Computer
Use the USB cable provided in the SIK kit to connect the RedBoard to
one of your computer’s USB inputs.
715
V
IO
F
RE
RE
3V
T
3.
SE
5V
T
N
ER
VI
W
D
SE
GN
PO
D
RE
GN
A0
A1
13
N
.
.
10
K
~
C
11
A
~
H
12
.
E
R
A
H
S
IN
A5
G
L
SC A
SD EF
AR ND
G 13
TX
E
L
RX
R
A
O
A4
AL
A3
AN
A2
~
9
P
8
O
N
TX
RX
D 7
IG
6
TI A ~ 5
L ~ 4
(P
W
3
M ~
~ 2
)
1
IS
0
3
2
// Install Arduino Drivers
Depending on your computer’s operating system, you will need to follow specific
instructions. Please go to www.sparkfun.com/FTDI for specific instructions on how to
install the FTDI drivers onto your RedBoard.
Page 5
// Open the Arduino IDE:
Open the Arduino IDE software on your computer. Poke around and get to know
the interface. We aren’t going to code right away, this is just an introduction. This
step is to set your IDE to identify your RedBoard.
1
2
7
8
9
Page 6
3
4
5
6
GUI (Graphical User Interface)
1 Verify: Compiles and approves your code. It will catch errors in syntax (like missing semi-colons or parenthesis).
// See Diagram Below
2 Upload: Sends your code to the RedBoard. When you click it, you should see the lights on your board blink rapidly. // See Diagram Below
3 New: This buttons opens up a new code window tab.
4 Open: This button will let you open up an existing sketch. // See Diagram Below
5 Save: This saves the currently active sketch.
6 Serial Monitor: This will open a window that displays any serial information your RedBoard is transmitting. It is very useful for debugging.
7 Sketch Name: This shows the name of the sketch you are currently working on.
8 Code Area: This is the area where you compose the code for your sketch.
9 Message Area: This is where the IDE tells you if there were any errors in your code.
// The three most important commands for this guide are seen below:
Open
Verify
Upload
Page 7
4
// Select your board: Arduino Uno
Note:
// Select your Serial Device
Your SparkFun RedBoard and the
Arduino UNO are interchangeable
but you won’t find the RedBoard
listed in the Arduino Software.
Select “Arduino UNO” instead.
Select the serial device of the RedBoard from the Tools |
Serial Port menu. This is likely to be com3 or higher
(COM1 and COM2 are usually reserved for hardware
serial ports). To find out, you can disconnect your
RedBoard and re-open the menu; the entry that
disappears should be the RedBoard. Reconnect the
board and select that serial port.
Select the serial device of the RedBoard from the Tools
> Serial Port menu. On the Mac, this should be
something with /dev/tty.usbmodem or
/dev/tty.usbserial in it.
http://www.arduino.cc/playground/Learning/Linux
Page 8
Download Arduino Code (For use with the circuits in this guide)
5
Type in the following URL to download the code:
// Copy “SIK Guide Code” into “Examples” library in Arduino folder
sparkfun.com/sikcode
Start
Unzip the file “SIK Guide Code”. It
should be located in your browser’s
“Downloads” folder. Right click the
zipped folder and choose “unzip”.
Programs
arduino
examples
Copy the “SIK Guide Code” folder into Arduino’s
folder named “examples”.
Contents
Resources
Unzip the file “SIK Guide Code”. It
should be loacted in your browser’s
“Downloads” folder. Right click the
zipped folder and choose “unzip”.
Find “Arduino” in your applications
folder. Right click(ctrl + click) on
“Arduino”. Select “Show Package
Contents”.
Java
examples
Copy the “SIK Guide Code” folder into
Arduino’s folder named “examples”.
http://www.arduino.cc/playground/Learning/Linux
WHAT’S NEXT? Read on to learn more about getting started with circuits. Then you can start on your first circuit on page 17!
Page 9
Getting Started with Circuits
What is an Electrical Circuit?
A circuit is basically an electrical loop with a starting point and an
ending point - with any number of components in between.
Circuits can include resistors, diodes, inductors, sensors of all sizes
and shapes, motors, and any other handful of hundreds of
thousands of components.
Circuits are usually divided into three categories - analog circuits,
digital circuits, or mixed-signal circuits. In this guide, you will
explore all three sets of circuits.
The World Runs on Circuits:
Everywhere you look, you'll find circuits. The cell
phone in your pocket, the computer that controls
your car's emissions system, your video game
console - all these things are chock full of circuits.
In this guide, you'll experiment with some simple
circuits and learn the gist of the world of embedded
electronics.
// Simple and Complex Circuits
In this guide, you will be primarily exploring
simple circuits - but that doesn't mean you can't
do amazing things with simple tools! When you've
finished the SIK, your knowledge of circuits will
enable you to explore amazing projects and
unleash the power of your imagination.
Page 10
a b c d e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
a b c d e
f g h i
f g h i
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Page 11
Inventory of Parts
LED (5mm)
Jumper Wire
x30
x5
330Ω Resistor
x25
x5
x5
x5
* ACTUAL SIZE
x1
* ACTUAL SIZE
x25
Diode
(1N4148)
x1
* ACTUAL SIZE
x2
Piezo Buzzer
Photo Resistor
x1
x1
Transistor
(TMP36)
P2N2
222A
A18
Temp. Sensor
(P2N2222AG)
FRONT
x1
DC Motor
FRONT
BACK
x2
Push Button
x1
+
10KΩ Resistor
Potentiometer
Page 12
-
(Light Emitting Diode)
Various Colors
x4
BACK
Flex Sensor
SparkFun RedBoard
RESET
x1
7-15V
Soft Potentiometer
13
TX
RX
IOREF
RESET
5V
GND
VIN
POWER
GND
A0
A1
A2
A3
ISP
A5
7
~6
~5
4
~3
2
TX 1
RX 0
ON
A4
ANALOG IN
x1
DIGITAL (PWM~)
LEARN. SHARE. HACK.
3.3V
Servo
SCL
SDA
AREF
GND
13
12
~11
~10
~9
8
x1
Breadboard
Standard Solderless (Color may vary)
x1
a b c d e
Integrated Circuit
Relay
(IC)
x1
x1
LCD
x1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
a b c d e
f g h i
f g h i
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
x1
Page 13
RESET
2
1
8
7-15V
13
TX
RX
IOREF
RESET
5V
10
VIN
POWER
GND
A0
A1
A3
Page 14
ISP
A5
7
9
ON
A4
ANALOG IN
A2
DIGITAL (PWM~)
LEARN. SHARE. HACK.
3.3V
GND
SCL
SDA
AREF
3 4 5
GND
13
12
~11
~10
~9
8
7
~6
~5
4
~3
2
TX 1
RX 0
6
SparkFun RedBoard
1 Power In (Barrel Jack) - Can be used with either a 9V or 12V wall-wart or battery.
2 Power In (USB Port) - Provides power and communicates with your board when plugged into your computer via USB.
LED (RX: Receiving) - This shows when the FTDI chip is receiving data bits from the microcontroller. This happens when the microcontroller is
3 sending
data bits back to the computer.
LED (TX: Transmitting) - This shows when the FTDI chip is transmitting data bits to the microcontroller. This happens when the
4 microcontroller
is receiving this data from the computer.
5 LED (Pin 13: Troubleshooting)
- This LED is incorporated into your sketch to show if your program is running properly.
6 Pins (ARef, Ground, Digital, Rx, Tx) - These various pins can be used for inputs, outputs, power, and ground. // See Diagram Below
7 LED (Indicates RedBoard is ON) - This is a simple power indicator LED.
8 Reset Button - This is a way to manually reset your RedBoard, which makes your code restart.
9 ICSP Pins (Uploading Code without Bootloader)
- This is for "In-Circuit Serial Programming," used if you want to bypass the bootloader.
10 Pins (Analog In, Power In, Ground, Power Out, Reset) - These various pins can be used for inputs, outputs, power, and ground. // See Diagram
11 RFU - This pin is reserved for future use.
// Pins Diagram
The header pins are one of the most important parts for putting our
example circuits together. Take a moment and locate the input/output
ports of your RedBoard.
SCL
SDA
ARef
11 RFU
IOREF
Reset
Power Out
Power Out
Ground
Ground
10
Power In
Ground
Digital
Digital
Digital
Digital
Digital
Digital
6
Digital
Digital
Analog
Digital
Analog
Digital
Analog
Digital
Analog
Digital
Analog
TX - Out
Analog
RX - In
= PWM/Analog out compatible (i.e.
)
Page 15
1
2
a b c d e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
a b c d e
f g h i
f g h i
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
This line divides the board in half, restricting electricity to one half or the other.
Page 16
Breadboard
1 Vertical Connection (+ Power and - Ground) - Power bus // See Diagram Below
2 Horizontal Connection (a-e & f-j) // See Diagram Below)
Making a Connection:
Above the breadboard
LED
How’s it all connected?
CONNECTED!
a b c d e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
a b c d e
f g h i
f g h i
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Power:
Each + sign runs power anywhere in the
vertical column.
Ground:
Each - sign runs to ground anywhere in the
vertical column.
Inside the breadboard
Horizontal Rows:
Each of these rows numbered 1-30 are
comprised of five horizontal sockets.
Components placed in the same row will be
connected in a circuit when power is running.
View of the inside
Page 17
CIRCUIT #1 - Your First Circuit
How It Works:
ASSEMBLE
WRITE
UPLOAD
Make sure the text on the RedBoard and
breadboard are facing up so you can read them.
a b c d e
RESET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
7-15V
13
TX
RX
IOREF
RESET
5V
GND
VIN
POWER
GND
A0
A1
A3
TX
RX
ISP
A5
ON
A4
ANALOG IN
A2
SCL
SDA
AREF
GND
13
12
~11
~10
~9
8
DIGITAL (PWM~)
LEARN. SHARE. HACK.
3.3V
7
~6
~5
4
~3
2
1
0
f g h i
a b c d e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
f g h i
Connect the USB cable.
Screw the RedBoard down and into place.
715
V
IO
RE
F
RE
5V
3V
T
3.
SE
GN
PO
WE
R
A0
T
N
SE
VI
D
RE
D
GN
A1
A2
13 X
T
AN
LE
N
AR
.S
K.
AC
~
12
.H
RE
HA
~
11
10
~
9
DIG
8
7
~
I TA
6
~
PW
L(
5
4
~
M~
AL
OG
IN
A5
RX
A4
L
SC A
SD EF
AR ND
G 13
A3
3
ISP
ON
)
2
TX
1
RX
0
Peel sticker off back of
breadboard and stick into place.
Your RedBoard runs on 5V. This is the power that will be supplied from your computer via USB and
will be the driving force behind any components you use in your circuits. By plugging your RedBoard
into your computer, you are supplying it with just the right voltage it needs to thrive! 5V can’t hurt you,
so don’t be afraid to touch anything in your circuit. You can also power the RedBoard through the
barrel jack. The on-board voltage regulator can handle anything from 7 to 15VDC.
Page 18
Circuit 2
Blinking an LED
PIN 13 RedBoard
1
LEDs (light-emitting diodes) are small, powerful lights
that are used in many different applications. To start off
the SIK, we will work on blinking an LED. That's right
- it's as simple as turning a light on and off. It might
not seem like much, but establishing this important
baseline will give you a solid foundation as we work
toward more complex experiments.
LED
(Light-Emitting Diode)
Resistor (330 ohm)
(Orange-Orange-Brown)
Each circuit begins with a brief description
of the what you are putting together and
the expected result.
GND
(Ground)
PARTS:
This is a schematic of your circuit.
LED
330Ω
Resistor
Wire
1
X
X
1
3
X
This section lists the parts you
will need to complete the circuit.
715
V
IO
F
RE
RE
5V
3V
T
3.
SE
SE
T
W
N
ER
VI
D
PO
D
RE
GN
GN
A0
A1
L
SC A
SD EF
AR ND
G 13
RX
A
TX
E
L
13
.
~
.
10
K
11
C
A
~
H
12
.
E
R
A
S
H
IN
A5
G
N
R
A4
AL
O
A3
AN
A2
~
9
P
8
D 7
I
6
IG T ~
AL ~5
(P 4
W
3
M ~
~ 2
IS
O
N
)
TX
1
RX
0
This is an illustration of how the
completed circuit should look. It is not
necessary to use the black holder for the
RedBoard and breadboard, but we
recommend it for the first time inventor!
Components like resistors need to have
their legs bent into 90° angles in order to
correctly fit the breadboard sockets. You
can also cut the legs shorter to make them
easier to work with on the breadboard.
Page 19
Page 20
A5
13
TX
RX
A4
A3
POWER
A2
A1
A0
VIN
GND
GND
5V
3.3V
RESET
IOREF
7-15V
Circuit 1: Blinking an LED
SCL
SDA
AREF
GND
13
12
~11
~10
~9
8
RESET
7
~6
~5
4
~3
2
TX 1
RX 0
DIGITAL (PWM~)
ON
LEARN. SHARE. HACK.
ISP
ANALOG IN
1
2
3
4
5
6
7
330Ω Resistor: The color banding
8
should read orange-or9
ange-brown-gold. The compo10
nent legs can go in either hole.
11
12
13
14
15
16
17
18
19
20
21
22
Jumper Wire: All jumper wires
work the same. They are used to 23
24
connect two points together. This
guide will show the wires with different
25
colored insulations for clarity, but using
26
different combinations of colors is
27
completely acceptable.
28
29
30
a b c d e
f g h i
f g h i
1
2
3
4
5
LED: Make sure the short leg,6
marked with flat side, goes into
7
the negative position (-).
8
9
10
11
12
13
14
Flat Edge
15
16
17
18
Short Leg
19
20
21
22
23
24
25
26
27
28
29
30
a b c d e
Page 21
Breadboard: The white background
represents a connection to a
breadboard socket specified by a
letter-number coordinate such as
e2. These coordinates are merely
suggestions that align with the
graphic image.
“Pin 13” on the RedBoard connects to socket “e2” on the breadboard.
e2
Pin 13
Jumper Wire
RedBoard: The red background
represents a connection to one of
the RedBoard header pins.
“5V” on the RedBoard connects to the row marked “+” on the breadboard.
“GND” on the RedBoard should be connected to the row marked “-” on the breadboard.
Resistors are placed in breadboard sockets only. The “-” symbol represents any socket in its vertical
column on the Power bus.
+
a3
-
+
a3
GND
c3
c2
5V
+
Jumper Wire
-
Components like LEDs are inserted into the breadboard sockets c2(long leg) c3(short leg). Steps
highlighted with a yellow warning triangle represent a polarized component. Pay special attention to
the component’s markings indicating how to place it on the breadboard.
GND
Image Reference:
Jumper Wire
330Ω Resistor
LED (5mm)
Component:
Open Your First Sketch:
Open Up the Arduino IDE software on your computer. Coding in the Arduino
language will control your circuit. Open the code for Circuit 1 by accessing the “SIK
Guide Code” you downloaded and placed into your “Examples” folder earlier.
File
Edit Sketch Tools
New
Open...
Sketchbook
Examples
Close
Save
Save As...
Upload
Upload Using Progammer
Page Setup
Print
Help
1.Basics
2.Digital
3.Analog
4.Communication
5.Control
6.Sensors
7.Displays
8.Strings
ArduinoISP
SIK Guide Code
Circuit
Circuit
Circuit
Circuit
Circuit
Circuit
Circuit
Circuit
Circuit
Circuit
Circuit
Circuit
Circuit
Circuit
Circuit
Circuit
EEPROM
Ethernet
Firmata
Liquid Crystal
SD
Servo
SoftwareSerial
SPI
Stepper
Wire
#1
#2
#3
#4
#5
#6
#7
#8
#9
#10
#11
#12
#13
#14
#15
#16
// Circuit #1
Circuit #1
/*
Blink
Turns on an LED on for one second,
then off for one second, repeatedly.
This example code is in the public domain.
*/
void setup() {
// initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino boards:
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
Page 22
//
//
//
//
set the LED on
wait for a second
set the LED off
wait for a second
Verify
This compiles your code. The IDE changes it from text into instructions the computer
can understand.
Upload
This sends the instructions via the USB cable to the computer chip on the RedBoard. The
RedBoard will then begin running your code automatically.
// The result of a completed circuit with correct code after verified and uploaded.
V
15
7-
3V
3.
F
RE
IO SET
RE
RE
SE
T
P
5V D O W
GN D E R
GN
N
VI
A0
LE
AR
.S
N
IN
AR
H
AC
H
K.
IS
P
O
N
12
11
~ 0
1
~ 9
~
8
D 7
IG
6
IT ~
AL ~5
(P 4
W
3
M ~
~ 2
)
1
E.
A5
L
SC A
SD EF
AR ND
G 13
A4
TX
13
R1X3
T TX
RX X
AN
A1
AL
O
A2
G
A3
RX
0
Page 23
1
This is where you will find the
Arduino code for each circuit.
Arduino Code:
Circuit 2
Open Arduino IDE // File > Examples > SIK Guide > Circuit # 1
Code to Note:
Remember to Verify and
Upload your code.
Begin to understand how the
Arduino code works. See below.
pinMode(13, OUTPUT);
Before you can use one of the RedBoard's pins, you need to tell the
RedBoard whether it is an INPUT or OUTPUT. We use a built-in
"function" called pinMode() to do this.
digitalWrite(13, HIGH);
When you're using a pin as an OUTPUT, you can command it to be
HIGH (output 5 volts), or LOW (output 0 volts).
What you Should See:
See if your circuit is complete
and working in this section.
V
15
7-
You should see your LED blink on and off. If
it isn't, make sure you have assembled the
circuit correctly and verified and uploaded the
code to your board or see the troubleshooting
tips below.
F
RE
IO SET
RE V
3
3.
5V
PO
RE
SE
T
D W
GN D E R
GN
N
VI
A0
A1
N
AR
LE
IN
H
A5
.S
A4
L
SC A
SD EF
AR ND
G 13
A3
AR
E.
H
K
AC
.
O
N
12
11
~ 0
1
~
9
~
8
D 7
IG
6
IT ~
5
A
~
L
(P 4
W
3
M ~
~ 2
)
1
IS
P
RX
13
R1X3
T TX
RX X
AN
AL
O
G
A2
Here you will find examples of the circuit
you just completed in the real world.
Many of the theories in these circuits are
used in things you use everyday!
TX
0
This is a section dedicated to the most
common mistakes made while assembling
the circuit.
Troubleshooting:
Real World Application:
LED Not Lighting Up?
LEDs will only work in one direction. Try taking it out and
twisting it 180 degrees (no need to worry, installing it
backward does no permanent harm).
Almost all modern flat screen televisions and monitors
have LED indicator lights to show they are on or off.
Program Not Uploading
This happens sometimes, the most likely cause is a confused
serial port, you can change this in tools>serial port>
Still No Success?
A broken circuit is no fun, send us an e-mail and we will get
back to you as soon as we can: techsupport@sparkfun.com
Page 24
Circuit 2
CIRCUIT
#5
#2
Potentiometer
PIN 13 RedBoard
In this circuit you’ll work with a potentiometer.
A potentiometer is also known as a variable resistor.
When it’s connected with 5 volts across its two outer
pins, the middle pin outputs a voltage between 0 and
5, depending on the position of the knob on the
potentiometer. A potentiometer is a perfect
demonstration of a variable voltage divider circuit.
The voltage is divided proportionate to the resistance
between the middle pin and the ground pin. In this
circuit, you’ll learn how to use a potentiometer to
control the brightness of an LED.
5 volt
LED
(Light-Emitting Diode)
Potentiometer
PIN A0
RedBoard
Resistor (330 ohm)
(Orange-Orange-Brown)
2
PARTS:
GND
(Ground)
IC
Potentiometer
LED
X
330Ω
Resistor
1
X
Wire
18
X
18
19
6
X
715
V
IO
F
RE
RE
5V
3V
T
3.
SE
SE
T
W
N
ER
VI
D
PO
D
GN
RE
GN
A0
A1
L
SC A
SD EF
AR ND
G 13
A
TX
E
RX
L
13
.
H
S
IN
A5
G
R
N
A4
AL
O
A3
AN
A2
A
~
10
K
.
11
C
A
~
H
12
.
R
E
~
9
P
8
O
N
TX
RX
D 7
IG
6
IT ~
5
A
~
L
(P 4
W
3
M ~
~ 2
)
1
IS
0
p.10
Page 25
Page 26
A5
13
TX
RX
A4
A3
POWER
A2
A1
A0
VIN
GND
GND
5V
3.3V
RESET
IOREF
7-15V
Circuit 2: Potentiometer
SCL
SDA
AREF
GND
13
12
~11
~10
~9
8
RESET
7
~6
~5
4
~3
2
TX 1
RX 0
DIGITAL (PWM~)
ON
LEARN. SHARE. HACK.
ISP
ANALOG IN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
a b c d e
a b c d e
f g h i
f g h i
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Page 27
A0
j20
+
Pin
5V13
GND
5V
GND
Jumper Wire
Jumper Wire
e8
Jumper Wire
Jumper Wire
e7
+
e6
Jumper Wire
Jumper Wire
+
h20 h21
j21
+
330Ω Resistor
-
a8
a7
a6
-
Image Reference:
+
LED (5mm)
Potentiometer
Component:
0 volts
off
or
5 volts
on
HIGH
ANALOG
0
0 volts
to
1023
5 volts
But there are also a lot of things out there that aren't just "on" or "off".
Temperature levels, control knobs, etc. all have a continuous range of values
between HIGH and LOW. For these situations, the RedBoard offers six analog
inputs that translate an input voltage into a number that ranges from 0 (0 volts)
to 1023 (5 volts). The analog pins are perfect for measuring all those "real
world" values, and allow you to interface the RedBoard to all kinds of things.
DIGITAL
LOW
Many of the devices you'll interface to, such as LEDs and pushbuttons, have
only two possible states: on and off, or as they're known to the RedBoard,
"HIGH" (5 volts) and "LOW" (0 volts). The digital pins on an RedBoard are
great at getting these signals to and from the outside world, and can even do
tricks like simulated dimming (by blinking on and off really fast), and serial
communications (transferring data to another device by encoding it as patterns
of HIGH and LOW).
If you look closely at your RedBoard, you'll see some pins labeled "DIGITAL",
and some labeled "ANALOG". What's the difference?
Digital versus Analog:
2
Arduino Code:
Circuit 2
Open Arduino IDE // File > Examples > SIK Guide > Circuit # 2
Code to Note:
int sensorValue;
A “variable” is a stored value you’ve given a name to. You must introduce,
or "declare" variables before you use them; here we're declaring a variable
called sensorValue, of type "int" (integer). Don't forget that variable names
are case-sensitive!
We use the analogRead() function to read the value on an analog
pin. analogRead() takes one parameter, the analog pin you want
to use ("sensorPin"), and returns a number ("sensorValue")
between 0 (0 volts) and 1023 (5 volts).
sensorValue = analogRead(sensorPin);
delay(sensorValue);
The Arduino is very very fast, capable of running thousands of lines of code
each second. To slow it down so that we can see what it's doing, we'll often
insert delays into the code. delay() counts in milliseconds; there are 1000 ms
in one second.
What you Should See:
VV
1155
77--
FF
RREE
I OI O S EETT
S
RREE VV
33
33..
P
RRE
ESS
EET
T
P
55VV D O W
D
GGNN D ER
D
GGNN
NN
VVII
A0
A1
A
LE
.S
IN
H
AR
E.
H
88
O
N
TTXX
7
DD I 7 6
I GG
6
IITTA ~~ 5
A LL ~~5
((PP 44
WW M ~33
M~ ~ 2
~) 2
)
11
IS
P
K.
AC
A5
RN
A4
RRXX
LL
SSCC A
A
SSDD E FF
E
AARR N DD
GG N 1 33
1
1122
1 11
~~ 1 00
1
~~ 1 99
~~
A3
11 3
RR1X3 3
T TX X
R XTXX
AN
AL
O
G
A2
You should see the LED blink faster
or slower in accordance with your
potentiometer. If it isn't working,
make sure you have assembled the
circuit correctly and verified and
uploaded the code to your board or
see the troubleshooting tips below.
00
Troubleshooting:
Real World Application:
Sporadically Working
This is most likely due to a slightly dodgy connection
with the potentiometer's pins. This can usually be
conquered by holding the potentiometer down.
Most traditional volume knobs employ a potentiometer.
Not Working
Make sure you haven’t accidentally connected the
wiper, the resistive element in the potentiometer, to
digital pin 0 rather than analog pin 0. (the row of pins
beneath the power pins).
LED Not Lighting Up?
LEDs will only work in one direction. Try taking it out and
twisting it 180 degrees (no need to worry, installing it
backward does no permanent harm).
Page 28
Circuit 2
CIRCUIT
#3
RGB LED
PIN 11
PIN 10
RedBoard
3
You know what’s even more fun than a blinking
LED? Changing colors with one LED. RGB, or
red-green-blue, LEDs have three different color-emitting diodes that can be combined to create all sorts of
colors. In this circuit, you’ll learn how to use an RGB
LED to create unique color combinations.
Depending on how bright each diode is, nearly any
color is possible!
PIN 9
Resistors (330 ohm)
(Orange-Orange-Brown)
RED
GREEN
BLUE
LED
(Light-Emitting Diode)
PARTS:
GND
(Ground)
LED
IC
Potentiometer
330Ω Transistor
LED
Wire
330Ω
Resistor P2N2222AG Resistor
1
X
X
1
X
38
X
1X6
X
8
715
V
IO
F
RE
RE
5V
3V
T
3.
SE
SE
T
W
N
ER
VI
D
PO
D
RE
GN
GN
A0
A1
L
SC A
SD EF
AR ND
G 13
RX
TX
E
A
L
13
.
~
.
10
K
11
C
A
~
H
12
.
E
R
A
H
S
IN
A5
G
N
R
A4
AL
O
A3
AN
A2
~
9
P
8
D 7
I
6
IG T ~
AL ~5
(P 4
W
3
M ~
~ 2
IS
O
N
)
TX
1
RX
0
red
blue
green
common
p.10
Page 29
Page 30
A5
13
TX
RX
A4
A3
POWER
A2
A1
A0
VIN
GND
GND
5V
3.3V
RESET
IOREF
7-15V
Circuit 3: RGB LED
SCL
SDA
AREF
GND
13
12
~11
~10
~9
8
RESET
7
~6
~5
4
~3
2
TX 1
RX 0
DIGITAL (PWM~)
ON
LEARN. SHARE. HACK.
ISP
ANALOG IN
* The longest lead is the common(gnd).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
a b c d e
a b c d e
f g h i
f g h i
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Page 31
e7 e1
g71
5V
Pin 9
330Ω Resistor
Jumper Wire
h7
+
Pin 10
Pin 11
5V
GND
Jumper Wire
Jumper Wire
Jumper Wire
h6
e5
Jumper Wire
Jumper Wire
g61
e6
e7 e1
5V
330Ω Resistor
h4
e4 e1
g41
e7
a4 a5 a6 a7
5V
Image Reference:
330Ω Resistor
RGB LED (5mm)
Component:
LOW (0 volts)
HIGH (5 volts)
LOW (0 volts)
HIGH (5 volts)
LOW (0 volts)
HIGH (5 volts)
90%
50%
10%
10%
50%
90%
4.5V
2.5V
0.5V
The RedBoard is so fast that it can blink a pin on and off almost 1000 times
per second. PWM goes one step further by varying the amount of time that
the blinking pin spends HIGH vs. the time it spends LOW. If it spends most
of its time HIGH, a LED connected to that pin will appear bright. If it
spends most of its time LOW, the LED will look dim. Because the pin is
blinking much faster than your eye can detect, the RedBoard creates the
illusion of a "true" analog output.
The answer is no... and yes. The RedBoard does not have a true analog voltage
output. But, because the RedBoard is so fast, it can fake it using something
called PWM ("Pulse-Width Modulation"). The pins on the RedBoard with
“~” next to them are PWM/Analog out compatible.
We've seen that the Arduino can read analog voltages (voltages between 0 and
5 volts) using the analogRead() function. Is there a way for the RedBoard to
output analog voltages as well?
The shocking truth behind analogWrite():
3
Arduino Code:
Circuit 2
Open Arduino IDE // File > Examples > SIK Guide > Circuit # 3
Code to Note:
A for() loop is used to step a number across a range, and repeatedly runs
code within the brackets {}. Here the variable "x" starts a 0, ends at 767,
and increases by one each time ("x++").
for (x = 0; x < 768; x++)
{}
if (x Examples > SIK Guide > Circuit # 7
Code to Note:
Before using the serial monitor, you must call Serial.begin() to
initialize it. 9600 is the "baud rate", or communications speed. When
two devices are communicating with each other, both must be set to
the same speed.
Serial.begin(9600);
The Serial.print() command is very smart. It can print out almost
anything you can throw at it, including variables of all types,
quoted text (AKA "strings"), etc.
Serial.print(degreesC);
See http://arduino.cc/en/serial/print for more info.
Serial.print() will print everything on the same line. Serial.println() will
move to the next line. By using both of these commands together, you
can create easy-to-read printouts of text and data.
Serial.println(degreesF);
What You Should See:
V
15
7-
F
RE
IO SET
RE V
3
3.
L
SC A
SD EF
AR ND
G 13
LE
AR
N
.S
H
AR
H
AC
K.
IS
P
O
N
12
11
~ 0
1
~ 9
~
8
D 7
IG
6
IT ~
5
A
~
L
(P 4
W
3
M ~
~ 2
)
1
E.
IN
A5
X
13
R1X3
T TX
RX X
A4
RX
RE
SE
T
A0
A1
AN
AL
O
G
A3
deg C: 23.24 deg F: 73.84
deg C: 23.24 deg F: 73.84
deg C: 23.24 deg F: 73.84
deg C: 22.75 deg F: 72.96
deg C: 23.24 deg F: 73.84
deg C: 23.24 deg F: 73.84
deg C: 23.24 deg F: 73.84
deg C: 22.75 deg F: 72.96
deg C: 23.24 deg F: 73.84
deg C: 22.75 deg F: 72.96
deg C: 22.75 deg F: 72.96
deg C: 23.24 deg F: 73.84
deg C: 22.75 deg F: 72.96
deg C: 23.24 T deg F: 73.84
P
5V D O W
GN D E R
GN
N
VI
voltage: 0.73
voltage: 0.73
voltage: 0.73
voltage: 0.73
voltage: 0.73
voltage: 0.73
voltage: 0.73
voltage: 0.73
voltage: 0.73
voltage: 0.73
voltage: 0.73
voltage: 0.73
voltage: 0.73
voltage: 0.73
A2
You should be able to read the
temperature your temperature
sensor is detecting on the serial
monitor in the Arduino IDE. If it
isn't working, make sure you have
assembled the circuit correctly and
verified and uploaded the code to
your board or see the troubleshooting tips below.
0
Troubleshooting:
Real World Application:
Nothing Seems to Happen
This program has no outward indication it is working. To
see the results you must open the Arduino IDE's serial
monitor (instructions on previous page).
Building climate control systems use a temperature sensor
to monitor and maintain their settings.
Gibberish is Displayed
This happens because the serial monitor is receiving data at
a different speed than expected. To fix this, click the
pull-down box that reads "*** baud" and change it to
"9600 baud".
Temperature Value is Unchanging
Try pinching the sensor with your fingers to heat it up or
pressing a bag of ice against it to cool it down.
Page 48
Circuit 2
CIRCUIT
#8
A Single Servo
Servos are ideal for embedded electronics applications
because they do one thing very well that motors cannot –
they can move to a position accurately. By varying the
pulse width of the output voltage to a servo, you can move
a servo to a specific position. For example, a pulse of 1.5
milliseconds will move the servo 90 degrees. In this circuit,
you’ll learn how to use PWM (pulse width modulation)
to control and rotate a servo.
No junction dot means no connection
5 volt
W
SIG
PIN 9
R
V+
RedBoard
B
GND
8
PARTS:
GND
(Ground)
Servo
Wire
X
1
X
8
715
V
IO
F
RE
RE
5V
3V
T
3.
SE
SE
T
W
N
ER
VI
D
PO
D
RE
GN
GN
A0
A1
L
SC A
SD EF
AR ND
G 13
RX
A
TX
E
L
13
.
~
.
10
K
11
C
A
~
H
12
.
E
R
A
H
S
IN
A5
G
N
R
A4
AL
O
A3
AN
A2
~
9
P
8
D 7
I
6
IG T ~
AL ~5
4
W
3
M ~
~ 2
IS
(P
O
N
)
TX
1
RX
0
Page 49
Page 50
A5
13
TX
RX
A4
A3
POWER
A2
A1
A0
VIN
GND
GND
5V
3.3V
RESET
IOREF
7-15V
Circuit 8: A Single Servo
SCL
SDA
AREF
GND
13
12
~11
~10
~9
8
RESET
7
~6
~5
4
~3
2
TX 1
RX 0
DIGITAL (PWM~)
ON
LEARN. SHARE. HACK.
ISP
ANALOG IN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
a b c d e
a b c d e
f g h i
f g h i
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Page 51
5V
GND
Jumper Wire
a6
Jumper Wire
Jumper Wire
b5
Jumper Wire
+
+
e7
Jumper Wire
Pin 9
e6
Jumper Wire
Jumper Wire
e5
Jumper Wire
a7
e5 e6 e7
Image Reference:
Servo
Component:
Tools
Help
Show Sketch Folder
Add File...
Import Library
Verify / Compile
Edit Sketch
EEPROM
Ethernet
Firmata
LiquidCrystal
SD
Servo
SoftwareSerial
SPI
Stepper
Wire
After importing the library into your code, you will have access to a number of pre-written
commands and functions. More information on how to use the standard library functions
can be accessed at: http://arduino.cc/en/Reference/Libraries.
File
To use a library in a sketch, select it from Sketch > Import Library.
But anyone can create a library, and if you want to use a new sensor or output device,
chances are that someone out there has already written one that interfaces that device to the
RedBoard. Many of SparkFun's products come with Arduino libraries, and you can find
even more using Google and the Arduino Playground at http://arduino.cc/playground/.
When YOU get the RedBoard working with a new device, consider making a library for it
and sharing it with the world!
See http: //arduino.cc/en/reference/libraries for a list of the standard libraries and
information on using them.
Libraries are collections of new commands that have been packaged together to make it easy
to include them in your sketches. Arduino comes with a handful of useful libraries, such as
the servo library used in this example, that can be used to interface to more advanced
devices (LCD displays, stepper motors, ethernet ports, etc.)
The Arduino development environment gives you a very useful set of built-in commands for
doing basic input and output, making decisions using logic, solving math problems, etc.
But the real power of Arduino is the huge community using it and their willingness to share
their work.
Expand your horizons using Libraries:
8
Arduino Code:
Circuit 2
Open Arduino IDE // File > Examples > SIK Guide > Circuit # 8
Code to Note:
#include is a special "preprocessor" command that inserts a library (or any
other file) into your sketch. You can type this command yourself, or
choose an installed library from the "sketch / import library" menu.
#include
Servo servo1;
servo1.attach(9);
The servo library adds new commands that let you control a servo. To
prepare the Arduino to control a servo, you must first create a Servo
"object" for each servo (here we've named it "servo1"), and then "attach" it
to a digital pin (here we're using pin 9).
V
15
7-
3V
3.
F
RE
IO SET
RE
The servos in this kit don't spin all the way around, but they can be commanded
to move to a specific position. We use the servo library's write() command to
move a servo to a specified number of degrees(0 to 180). Remember that the
servo requires time to move, so give it a short delay() if necessary.
RE
SE
T
P
5V D O W
GN D E R
GN
N
VI
servo1.write(180);
A0
A1
LE
N
.S
IN
AR
H
AC
H
K.
IS
P
O
N
TX
12
11
~ 0
1
~ 9
~
8
D 7
IG
6
IT ~
AL ~5
P( W 4
3
M ~
~ 2
)
1
E.
A5
AR
A4
RX
L
SC A
SD EF
AR ND
G 13
A3
0
You should see your servo motor move to
various locations at several speeds. If the
motor doesn't move, check your
connections and make sure you have
verified and uploaded the code, or see the
troubleshooting tips below.
13
R1X3
T TX
RX X
AN
AL
O
G
A2
What You Should See:
Troubleshooting:
Real World Application:
Servo Not Twisting
Even with colored wires it is still shockingly easy to plug a
servo in backward. This might be the case.
Robotic arms you might see in an assembly line or sci-fi
movie probably have servos in them.
Still Not Working
A mistake we made a time or two was simply forgetting
to connect the power (red and brown wires) to +5 volts
and ground.
Fits and Starts
If the servo begins moving then twitches, and there's a
flashing light on your RedBoard, the power supply you
are using is not quite up to the challenge. Using a wall
adapter instead of USB should solve this problem.
Page 52
CIRCUIT #9
Flex Sensor
In this circuit, we will use a flex sensor to measure,
well, flex! A flex sensor uses carbon on a strip of
plastic to act like a variable resistor, but instead of
changing the resistance by turning a knob, you
change it by flexing (bending) the component. We
use a "voltage divider" again to detect this change in
resistance. The sensor bends in one direction and the
more it bends, the higher the resistance gets; it has a
range from about 10K ohm to 35K ohm. In this
circuit we will use the amount of bend of the flex
sensor to control the position of a servo.
5 volt
Resistor (10K ohm)
(Brown-Black-Orange)
W
SIG
PIN 9
R
V+
PIN A0
RedBoard
B
GND
Flex Sensor
PARTS:
GND
(Ground)
Flex
IC Sensor
Potentiometer
Servo
LED
330Ω10KΩ
Resistor
Resistor
11
X X
X
8
X
1
9
Wire
X
8 X1
X
11
715
V
IO
F
RE
RE
5V
3V
T
3.
SE
SE
T
W
N
ER
VI
D
PO
D
GN
RE
GN
A0
A1
L
SC A
SD EF
AR ND
G 13
13
.
A
H
S
IN
A5
G
N
R
A
TX
E
RX
L
A4
AL
O
A3
AN
A2
R
~
.
10
K
11
C
A
~
H
12
E
.
~
9
P
8
O
N
TX
RX
D 7
IG
6
IT ~
5
A
~
L
(P 4
W
3
M ~
~ 2
)
1
IS
0
Page 53
Page 54
A5
13
TX
RX
A4
A3
POWER
A2
A1
A0
VIN
GND
GND
5V
3.3V
RESET
IOREF
7-15V
Circuit 9: Flex Sensor
SCL
SDA
AREF
GND
13
12
~11
~10
~9
8
RESET
7
~6
~5
4
~3
2
TX 1
RX 0
DIGITAL (PWM~)
ON
LEARN. SHARE. HACK.
ISP
ANALOG IN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
a b c d e
a b c d e
f g h i
f g h i
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Page 55
e3
h19 h20
i20 i24
i19
Jumper Wire
Flex Sensor
10KΩ Resistor
Jumper Wire
GND
+
5V
Jumper Wire
Jumper Wire
a3
a2 +
h24
Jumper Wire
Pin 9
b1 +
h24
Jumper Wire
Jumper Wire
h24 +
Jumper Wire
j20
e2
Jumper Wire
A0
e1
Jumper Wire
Jumper Wire
e1 e2 e3
Image Reference:
Servo
Component:
for (x = 1 ; x < 9 ; x++)
{
Serial.print(x);
}
12345678
And if you run the code again, you'll see the
output you wanted:
01234567
Let's say you wanted a for() loop from 1 to 8,
but your code just doesn't seem to be working
right. Just add Serial.begin(9600); to your
setup() function, and add a Serial.print() or
println() to your loop:
You wanted 1 to 8, but the loop is actually giving you
0 to 7. Whoops! Now you just need to fix the loop.
for (x = 0; x < 8; x++)
{
Serial.print(x);
}
The key to visibility into a microcontroller is output. This can be almost anything,
including LEDs and buzzers, but one of the most useful tools is the serial monitor.
Using Serial.print() and println(), you can easily output human-readable text and
data from the RedBoard to a window back on the host computer. This is great for
your sketch's final output, but it's also incredibly useful for debugging.
It happens to everyone - you write a sketch which successfully compiles and uploads,
but you can't figure out why it's not doing what you want it to. Larger computers
have screens, keyboards, and mice that you can use to debug your code, but tiny
computers like the RedBoard have no such things.
Debugging your sketches using the Serial Monitor:
9
Arduino Code:
Circuit 2
Open Arduino IDE // File > Examples > SIK Guide > Circuit # 9
Code to Note:
servoposition = map(flexposition, 600, 900, 0, 180);
map(value, fromLow, fromHigh, toLow, toHigh)
Because the flex sensor / resistor combination won't give us a
full 0 to 5 volt range, we're using the map() function as a
handy way to reduce that range. Here we've told it to only
expect values from 600 to 900, rather than 0 to 1023.
servoposition = constrain(servoposition, 0, 180);
constrain(x, a, b)
Because map() could still return numbers outside the "to"
range, we'll also use a function called constrain() that will
"clip" numbers into a range. If the number is outside the
range, it will make it the largest or smallest number. If it is
within the range, it will stay the same.
What You Should See:
V
15
7-
F
RE
IO SET
RE V
3
3.
N
VI
RE
SE
T
P
5V D O W
GN D E R
GN
A0
A1
LE
.S
N
IN
H
AR
K.
AC
IS
P
O
N
12
11
~ 0
1
~ 9
~
8
D 7
IG
6
IT ~
5
A
~
L
(P 4
W
3
M ~
~ 2
)
1
H
E.
A5
AR
A4
TX
L
SC A
SD EF
AR ND
G 13
A3
RX
13
R1X3
T TX
RX X
AN
AL
O
G
A2
You should see the servo motor move in
accordance with how much you are
flexing the flex sensor. If it isn't
working, make sure you have assembled
the circuit correctly and verified and
uploaded the code to your board or see
the troubleshooting tips below.
0
Troubleshooting:
Real World Application:
Servo Not Twisting
Even with colored wires it is still shockingly easy to plug a
servo in backwards. This might be the case.
Controller accessories for video game consoles like
Nintendo’s “Power Glove” use flex-sensing technology. It
was the first video game controller attempting to mimic
hand movement on a screen in real time.
Servo Not Moving as Expected
The sensor is only designed to work in one direction. Try
flexing it the other way (where the striped side faces
out on a convex curve).
Servo Doesn’t Move very Far
You need to modify the range of values in the call to the
map() function.
Page 56
Circuit 2
CIRCUIT
#5
#10
Soft Potentiometer
RedBoard
In this circuit, we are going to use yet another kind of
variable resistor – this time, a soft potentiometer (or
soft pot). This is a thin and flexible strip that can
detect where pressure is being applied. By pressing
down on various parts of the strip, you can vary the
resistance from 100 to 10K ohms. You can use this
ability to track movement on the soft pot, or simply
as a button. In this circuit, we’ll get the soft pot up
and running to control an RGB LED.
PIN 11
PIN 10
5 volt
RedBoard
PIN 9
Resistors (330 ohm)
(Orange-Orange-Brown)
Soft Pot
PIN A0
RED
GREEN
BLUE
Resistor (10K ohm)
(Brown-Black-Orange)
10
LED
(Light-Emitting Diode)
PARTS:
GND
(Ground)
LED
IC
330Ω
LED
Soft Potentiometer
Resistor
X
1
X
1
X
330Ω
Resistor
Wire
330Ω
Resistor
318
9
X
X
10KΩ
Resistor
8
X
3
X
1
715
V
IO
F
RE
RE
5V
3V
T
3.
SE
SE
T
W
N
ER
VI
D
PO
D
GN
RE
GN
A0
A1
L
SC A
SD EF
AR ND
G 13
13
.
A
H
S
IN
A5
G
N
R
A
TX
E
RX
L
A4
AL
O
A3
AN
A2
R
~
.
10
K
11
C
A
~
H
12
E
.
~
9
P
8
O
N
TX
RX
D 7
IG
6
IT ~
5
A
~
L
(P 4
W
3
M ~
~ 2
)
1
IS
0
Page 57
Page 58
A5
13
TX
RX
A4
A3
POWER
A2
A1
A0
VIN
GND
GND
5V
3.3V
RESET
IOREF
7-15V
Circuit 10: Soft Potentiometer
SCL
SDA
AREF
GND
13
12
~11
~10
~9
8
RESET
7
~6
~5
4
~3
2
TX 1
RX 0
DIGITAL (PWM~)
ON
LEARN. SHARE. HACK.
ISP
ANALOG IN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
a b c d e
a b c d e
f g h i
f g h i
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Page 59
Jumper Wire
Jumper Wire
A0
Pin 11
Jumper Wire
Jumper Wire
Pin 10
Jumper Wire
Jumper Wire
Jumper Wire
j20
j19
j18
h7
h6
e5
h4
+
g71
e7 e1
5V
330Ω Resistor
Pin 9
e6 e1
g61
e7
5V
330Ω Resistor
i19
e4 e1
g41
e7
5V
330Ω Resistor
10KΩ Resistor
h18 h19 h20
a4 a5 a6 a7
5V
Image Reference:
Soft Potentiometer
RGB LED (5mm)
Component:
Jumper Wire
Jumper Wire
Component:
Image Reference:
GND
5V
+
10
Arduino Code:
Circuit 2
Open Arduino IDE // File > Examples > SIK Guide > Circuit # 10
Code to Note:
These big, scary functions take a single
Value (RGBposition) and calculate the
three RGB values necessary to create a
rainbow of color. The functions create
three "peaks" for the red, green, and
blue values, which overlap to mix and
create new colors. See the code for more
information! Even if you're not 100%
clear how it works, you can copy and
paste this (or any) function into your
own code and use it yourself. If you
want to know more about creating your
own functions - take a look at circuit
#11.
redValue = constrain(map(RGBposition, 0, 341, 255, 0), 0, 255)
+ constrain(map(RGBposition, 682, 1023, 0, 255), 0, 255);
greenValue = constrain(map(RGBposition, 0, 341, 0, 255), 0, 255)
- constrain(map(RGBposition, 341, 682, 0,255), 0, 255);
blueValue = constrain(map(RGBposition, 341, 682, 0, 255), 0, 255)
- constrain(map(RGBposition, 682, 1023, 0, 255), 0, 255);
What You Should See:
V
15
7-
You should see the RGB LED change
colors in accordance with how you
interact with the soft potentiometer.
If it isn't working, make sure you
have assembled the circuit correctly
and verified and uploaded the code to
your board, or see the
troubleshooting tips below.
3V
3.
F
RE
IO SET
RE
RE
SE
T
PO
5V
W
D
GN D E R
GN
N
VI
A0
A1
LE
.S
N
IN
H
A5
AR
A4
L
SC A
SD EF
AR ND
G 13
A3
AR
E.
H
K
AC
.
O
N
12
11
~ 0
1
~ 9
~
8
D 7
IG
6
IT ~
AL ~5
(P 4
W
3
M ~
~ 2
)
1
IS
P
TX
13
R1X3
T TX
RX X
AN
AL
O
G
A2
RX
0
Troubleshooting:
Real World Application:
LED Remains Dark or Shows Incorrect Color
With the four pins of the LED so close together, it’s
sometimes easy to misplace one. Try double checking each
pin is where it should be.
The knobs found on many objects, like a radio for
instance, are using similar concepts to the one you just
completed for this circuit.
Bizarre Results
The most likely cause of this is if you’re pressing the
potentiometer in more than one position. This is normal
and can actually be used to create some neat results.
Page 60
Circuit 2
CIRCUIT
#11
Piezo Buzzer
11
In this circuit, we'll again bridge the gap between the
digital world and the analog world. We'll be using a
buzzer that makes a small "click" when you apply
voltage to it (try it!). By itself that isn't terribly
exciting, but if you turn the voltage on and off
hundreds of times a second, the buzzer will produce a
tone. And if you string a bunch of tones together,
you've got music! This circuit and sketch will play a
classic tune. We'll never let you down!
Piezo Buzzer
RedBoard
PIN 9
PARTS:
GND
(Ground)
Piezo Buzzer
Wire
X
1
3
X
715
V
IO
F
RE
RE
5V
3V
T
3.
SE
SE
T
W
N
ER
VI
D
PO
D
GN
RE
GN
A0
A1
13
R
N
.
A
H
S
IN
A5
G
L
SC A
SD EF
AR ND
G 13
A
LO
A4
TX
E
RX
L
A
A3
AN
A2
R
~
.
10
K
11
C
A
~
H
12
E
.
~
9
P
8
O
N
TX
RX
D 7
IG
6
IT ~
5
A
~
L
(P 4
W
3
M ~
~ 2
)
1
IS
0
If the buzzer doesn't easily fit
into the holes on the breadboard,
try rotating it slightly.
Page 61
Page 62
A5
13
TX
RX
A4
A3
POWER
A2
A1
A0
VIN
GND
GND
5V
3.3V
RESET
IOREF
7-15V
Circuit 11: Piezo Buzzer
SCL
SDA
AREF
GND
13
12
~11
~10
~9
8
RESET
7
~6
~5
4
~3
2
TX 1
RX 0
DIGITAL (PWM~)
ON
LEARN. SHARE. HACK.
ISP
ANALOG IN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
a b c d e
a b c d e
f g h i
f g h i
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Page 63
Pin 9
GND
Jumper Wire
Jumper Wire
i7
Jumper Wire
+
f9
Image Reference:
Piezo Buzzer
Component:
j9
-
f7
return(x);
When you write your own functions, you make your code neater and easier to re-use.
See http://arduino.cc/en/reference/functiondeclaration for more information
about functions.
If your function is returning a value from your function, put the type of the return
value in front of the function name. Then in your function, when you're ready to
return the value, put in a return(value) statement. If you won't be returning a value,
put "void" in front of the function name (similar to the declaration for the setup()
and loop() functions).
If you'll be passing parameters to your function, put them (and their types) in the
parentheses after the function name. If your function is not using any parameters, just
use an empty parenthesis () after the name.
Your functions can take in values ("parameters"), and return a value, as this one does.
}
x = parameter1 + parameter2;
int add(int parameter1, int parameter2)
{
int x;
Arduino contains a wealth of built-in functions that are useful for all kinds of things.
(See http://arduino.cc/en/reference for a list). But you can also easily create your
own functions. First, we need to declare a function. Here's a simple example named
"add," which adds two numbers together and returns the result. Let's break it down.
Creating your own functions:
11
Arduino Code:
Circuit 2
Open Arduino IDE // File > Examples > SIK Guide > Circuit # 11
Code to Note:
Up until now we've been working solely with numerical data, but
the Arduino can also work with text. Characters (single, printable,
letters, numbers and other symbols) have their own type, called
"char". When you have an array of characters, it can be defined
between double-quotes (also called a "string"), OR as a list of
single-quoted characters.
char notes[] = "cdfda ag cdfdg gf ";
char names[] = {'c','d','e','f','g','a','b','C'};
One of Arduino's many useful built-in commands is the tone()
function. This function drives an output pin at a certain
frequency, making it perfect for driving buzzers and speakers. If
you give it a duration (in milliseconds), it will play the tone then
stop. If you don't give it a duration, it will keep playing the tone
forever (but you can stop it with another function, noTone() ).
tone(pin, frequency, duration);
What You Should See:
V
15
7-
F
RE
IO SET
RE V
3
3.
5V
PO
RE
SE
T
D W
GN D E R
GN
N
VI
A0
A1
LE
H
.S
IN
.H
AC
K.
IS
P
O
N
12
11
~ 0
1
~ 9
~
8
D 7
IG
6
IT ~
5
A
~
L
(P 4
W
3
M ~
~ 2
)
1
E
AR
A5
N
AR
A4
TX
L
SC
A
SD EF
AR ND
G 13
A3
RX
13
R1X3
T TX
RX X
AN
AL
O
G
A2
You should see - well, nothing!
But you should be able to hear a
song. If it isn't working, make
sure you have assembled the
circuit correctly and verified and
uploaded the code to your board
or see the troubleshooting tips
below.
0
Troubleshooting:
Real World Application:
No Sound
Given the size and shape of the piezo buzzer it is easy to
miss the right holes on the breadboard. Try double
checking its placement.
Many modern megaphones have settings that use a loud
amplified buzzer. They are usually very loud and quite
good at getting people’s attention.
Can't Think While the Melody is Playing
Just pull up the piezo buzzer whilst you think, upload
your program then plug it back in.
Feeling Let Down and Deserted
The code is written so you can easily add your own songs.
Page 64
12
Circuit 2
CIRCUIT
#12
Spinning a Motor
5 volt
Diode
(1N4148)
Remember before when you played around with a servo
motor? Now we are going to tackle spinning a motor.
This requires the use of a transistor, which can switch a
larger amount of current than the RedBoard can. When
using a transistor, you just need to make sure its
maximum specs are high enough for your use. The
transistor we are using for this circuit is rated at 40V max
and 200 milliamps max – perfect for our toy motor!
When the motor is spinning and suddenly turned off, the
magnetic field inside it collapses, generating a voltage
spike. This can damage the transistor. To prevent this, we
use a "flyback diode", which diverts the voltage spike
around the transistor.
DC Motor
RedBoard
PIN 9
Transistor
(P2N2222AG)
Resistor (330 ohm)
(Orange-Orange-Brown)
Transistor
Diode
P2N2222AG
X
When you’re building the circuit be careful not
to mix up the transistor and the temperature
sensor, they’re almost identical. Look for
“P2N2222A” on the body of the transistor.
DC Motor
1N4148
1
X
1
Wire
X
1
330Ω
Resistor
X
6
X
1
EMITTER
BASE
P2N2
222A
PARTS:
GND
(Ground)
COLLECTOR
FRONT
COLLECTOR
BASE
EMITTER
BACK
715
V
IO
F
RE
RE
5V
3V
T
3.
SE
SE
T
W
N
ER
VI
D
PO
D
RE
GN
GN
A0
A1
L
SC A
SD EF
AR ND
G 13
RX
A
TX
E
L
13
.
~
.
10
K
11
A
C
~
H
12
.
E
R
A
H
S
IN
A5
G
N
R
A4
AL
O
A3
AN
A2
~
9
P
8
D 7
I
6
IG T ~
AL ~5
(P 4
W
3
M ~
~ 2
IS
O
N
)
TX
1
RX
0
Page 65
Page 66
A5
13
TX
RX
A4
A3
POWER
A2
A1
A0
VIN
GND
GND
5V
3.3V
RESET
IOREF
7-15V
Circuit 12 : Spinning a Motor
SCL
SDA
AREF
GND
13
12
~11
~10
~9
8
RESET
7
~6
~5
4
~3
2
TX 1
RX 0
DIGITAL (PWM~)
ON
LEARN. SHARE. HACK.
ISP
ANALOG IN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
a b c d e
a b c d e
f g h i
f g h i
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Page 67
Image Reference:
5V
b11
a3
C
5V
GND
Jumper Wire
Jumper Wire
+
e3 d11
+
Jumper Wire
j2
a7
Pin 9
e1
e2 e1
g21
e7
Jumper Wire
Jumper Wire
Jumper Wire
330Ω Resistor
e7 e11
B
DC Motor
E
a1 a2 a3
GND
b7
EMITTER
BASE
COLLECTOR
Diode 1N4148
Transistor P2N2222AG
Component:
P2N2
222A
Finally, when you create something really cool, consider sharing it with the world so
that others can learn from your genius. Be sure to let us know on
https://www.sparkfun.com/project_calls so we can put it on our home page!
If you need help, there are internet forums where you can ask questions. Try
Arduino's forum at arduino.cc/forum, and SparkFun's at forum.sparkfun.com.
When you're ready to move to more advanced topics, take a look at Arduino's
tutorials page at arduino.cc/en/tutorial. Many of SparkFun's more advanced
products were programmed with Arduino, (allowing you to easily modify them), or
have Arduino examples for them. See our product pages for info.
It's usually pretty easy to pull pieces of different sketches together, just open them in
two windows, and copy and paste between them. This is one of the reasons we've
been promoting "good programming habits". Things like using constants for pin
numbers, and breaking your sketch into functions, make it much easier to re-use your
code in new sketches. For example, if you pull in two pieces of code that use the same
pin, you can easily change one of the constants to a new pin. (Don't forget that not
all of the pins support analogWrite(); the compatible pins are marked on your board.)
We've already shown you how to use a bunch of different input sensors and output
devices (and we still have a few more to go). Feel free to make use of the examples in
your own sketches - this is the whole idea behind the "Open Source" movement.
1. Perform some sort of input
2. Make some calculations or decisions
3. Perform some sort of output
4. Repeat! (Or not!)
Most of the sketches you write will be a loop with some or all of these steps:
At this point you're probably starting to get your own ideas for circuits that do fun
things, or help solve a real problem. Excellent! Here are some tips on programming in
general.
Putting it all together:
12
Arduino Code:
Circuit 2
Open Arduino IDE // File > Examples > SIK Guide > Circuit # 12
Code to Note:
while (Serial.available() > 0)
The RedBoard's serial port can be used to receive as well as send data.
Because data could arrive at any time, the RedBoard stores, or
"buffers" data coming into the port until you're ready to use it. The
Serial.available() command returns the number of characters that the
port has received, but haven't been used by your sketch yet. Zero
means no data has arrived.
speed = Serial.parseInt();
If the port has data waiting for you, there are a number of ways for
you to use it. Since we're typing numbers into the port, we can
use the handy Serial.parseInt() command to extract, or "parse"
integer numbers from the characters it's received. If you type "1"
"0" "0" to the port, this function will return the number 100.
V
15
7-
5V
3V
3.
F
RE
IO SET
RE
What You Should See:
PO
RE
SE
T
D W
GN D E R
GN
N
VI
A0
L
SC A
SD EF
AR ND
G
13
A
LE
RN
H
.S
AC
H
E.
AR
K.
O
N
TX
12
11
~ 0
1
~ 9
~
8
D 7
I
6
IG T ~
AL ~5
(P 4
W
3
M ~
~ 2
)
1
IS
P
RX
13
R1X3
T TX
RX X
IN
A5
0
Page 68
A4
Still Not Working
Sometimes the RedBoard will disconnect from the
computer. Try un-plugging and then re-plugging it into
your USB port.
A
Still No Luck
If you sourced your own motor, double check that it will
work with 5 volts and that it does not draw too much
power.
AN
AL
O
3 G
Motor Not Spinning
If you sourced your own transistor, double check with
the data sheet that the pinout is compatible with a
P2N2222AG (many are reversed).
A2
Troubleshooting:
A1
The DC Motor should spin if you have
assembled the circuit’s components correctly,
and also verified/uploaded the correct code. If
your circuit is not working check the
troubleshooting section below.
Real World Application:
Radio Controlled(RC) cars use Direct Current(DC)
motors to turn the wheels for propulsion.
13
5
Circuit 2
CIRCUIT
#5
#13
Relays
In this circuit, we are going to use some of the lessons we
learned in circuit 12 to control a relay. A relay is basically
an electrically controlled mechanical switch. Inside that
harmless looking plastic box is an electromagnet that,
when it gets a jolt of energy, causes a switch to trip. In
this circuit, you’ll learn how to control a relay like a pro
– giving your RedBoard even more powerful abilities!
5 volt
Resistor (330 ohm)
(Orange-Orange-Brown)
Diode
(1N4148)
SPDT Relay
Transistor
(P2N2222AG)
RedBoard
PIN 2
LEDs
(Light-Emitting Diodes)
Resistor (330 ohm)
(Orange-Orange-Brown)
When the relay is off, the COM (common)
pin will be connected to the NC (Normally
Closed) pin. When the relay is on, the COM
(common) pin will be connected to the NO
(Normally Open) pin.
PARTS:
GND
(Ground)
IC
Relay
Transistor
LED
Diode
P2N2222AG
X
1
X
330Ω
Resistor
1N4148
8
X
1
X
1
LED
X
2
Wire
X
2
14
X
715
V
IO
F
RE
RE
5V
3V
T
3.
SE
SE
T
W
N
ER
VI
D
PO
D
RE
GN
GN
A0
A1
L
SC A
SD EF
AR ND
G 13
RX
A
TX
E
L
13
.
~
.
10
K
11
A
C
~
H
12
.
E
R
A
H
S
IN
A5
G
N
R
A4
AL
O
A3
AN
A2
~
9
P
8
D 7
I
6
IG T ~
AL ~5
(P 4
W
3
M ~
~ 2
IS
O
N
)
TX
1
RX
0
Page 69
Page 70
A5
13
TX
RX
A4
A3
POWER
A2
A1
A0
VIN
GND
GND
5V
3.3V
RESET
IOREF
7-15V
Circuit 13: Relays
SCL
SDA
AREF
GND
13
12
~11
~10
~9
8
RESET
7
~6
~5
4
~3
2
TX 1
RX 0
DIGITAL (PWM~)
ON
LEARN. SHARE. HACK.
ISP
ANALOG IN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
a b c d e
a b c d e
f g h i
f g h i
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Page 71
Image Reference:
i13 e22
i13
Jumper Wire
i15 e19
+
h9
Jumper Wire
Jumper Wire
j9
j7
j5
j3
Jumper Wire
Jumper Wire
Pin 2
Jumper Wire
e2
Jumper Wire
Jumper Wire
b14
+1
e7 e1
5V
330Ω Resistor
Jumper Wire
f7
a3
GND
e7
Jumper Wire
Jumper Wire
-
Jumper Wire
+
-
Jumper Wire
c22 c23
+
C
c19 c20
B
e3 e1
g31
e7
+
+
E
a2 a3 a4
Jumper Wire
5V
-
-
EMITTER
BASE
COLLECTOR
e14 e9
f15 f13 f9
Component:
330Ω Resistor
Diode 1N4148
LED (5mm)
LED (5mm)
Transistor P2N2222AG
Relay
Component:
P2N2
222A
Image Reference:
GND
5V
+
e4 b9
a7 a9
a20 e19
+
b14
a23
+ e19
+
e15
+ e19
+
e15
f7
f5 f6e19
e15
13
Arduino Code:
Circuit 2
Open Arduino IDE // File > Examples > SIK Guide > Circuit # 13
Code to Note:
digitalWrite(relayPin, HIGH);
When we turn on the transistor, which in turn energizes the
relay's coil, the relay's switch contacts are closed. This connects the
relay's COM pin to the NO (Normally Open) pin. Whatever
you've connected using these pins will turn on. (Here we're using
LEDs, but this could be almost anything.)
digitalWrite(relayPin, LOW);
The relay has an additional contact called NC (Normally Closed).
The NC pin is connected to the COM pin when the relay is OFF.
You can use either pin depending on whether something should
be normally on or normally off. You can also use both pins to
alternate power to two devices, much like railroad crossing
warning lights.
What You Should See:
V
15
7-
F
RE
IO SET
RE V
3
3.
RE
SE
T
P
5 V DD OW
GGNN DD E R
GGNN
NN
VVI
AA00
AA1
LE
N
.S
H
IINN
E.
H
AC
K.
IISS
PP
OO
NN
2
112
1
111
~~ 100
1
~~ 99
~~
88
DD I 77
I GG 66
IITT ~~ 5
AA 5
~
~
L
L
((PP 44
WW 33
MM ~~
~~ 22
))
11
AR
AA55
AR
AA44
CLL
SC A
DA
SSD EEFF
R
AAR NNDD
GG 1133
AA3
TTX
X
RX
1133
RRX1X3
TT T X
R XXX
AN
NA
ALL
OO
GG
AA2
You should be able to hear the
relay contacts click, and see the
two LEDs alternate illuminating
at 1-second intervals. If you
don't, double-check that you
have assembled the circuit
correctly, and uploaded the
correct sketch to the board. Also,
see the troubleshooting tips below.
00
Troubleshooting:
Real World Application:
LEDs Not Lighting
Double-check that you've plugged them in correctly. The
longer lead (and non-flat edge of the plastic flange) is the
positive lead.
Garage door openers use relays to operate. You might be
able to hear the clicking if you listen closely.
No Clicking Sound
The transistor or coil portion of the circuit isn't quite
working. Check the transistor is plugged in the right way.
Not Quite Working
The included relays are designed to be soldered rather than
used in a breadboard. As such you may need to press it in
to ensure it works (and it may pop out occasionally).
When you’re building the circuit be careful not to mix up
the temperature sensor and the transistor, they’re almost
identical.
Page 72
14
Circuit 2
CIRCUIT
#14
Shift Register
Now we are going to step into the world of ICs (integrated
circuits). In this circuit, you’ll learn all about using a shift
register (also called a serial-to-parallel converter). The shift
register will give your RedBoard an additional eight outputs,
using only three pins on your board. For this circuit, you’ll
practice by using the shift register to control eight LEDs.
RedBoard
5 volt
PIN 2
14
PIN 3
11
PIN 4
SER
VCC
SCK
QB
SCL
QC
16
15
QA
10
1
2
3
QD
12
RCK
4
QE
5
QF
13
8
OE
QG
GND
QH
QH*
Resistors (330 ohm)
(Orange-Orange-Brown)
6
7
9
LEDs
(Light-Emitting Diodes)
74HC595
PARTS:
GND
(Ground)
*Do not connect pin 9
IC
LED
X
330Ω
Resistor
1
X
Wire
8
X
8
19
X
VCC
QB
1
16
QC
2
15
QA
QD
3
14
SER
QE
4
13
OE
QF
5
12
RCLK
QG
6
11
SRCLK
QH
7
10
SRCLR
GND
8
9
QH’
Align notch on top,
inbetween “e5” and “f5” on
the breadboard. The notch
indicates where pin 1 is.
Bend legs to 90° angle.
715
V
IO
F
RE
RE
5V
3V
T
3.
SE
SE
T
W
N
ER
VI
D
PO
D
RE
GN
GN
A0
A1
RX
13
IN
A5
G
L
SC A
SD EF
AR ND
G 13
TX
A4
AL
O
A3
AN
A2
12
~
~
11
10
~
9
P
8
D 7
I
6
IG T ~
AL ~5
(P 4
W
3
M ~
~ 2
IS
O
N
)
TX
1
RX
0
Page 73
Page 74
A5
13
TX
RX
A4
A3
POWER
A2
A1
A0
VIN
GND
GND
5V
3.3V
RESET
IOREF
7-15V
Circuit 14: Shift Register
SCL
SDA
AREF
GND
13
12
~11
~10
~9
8
RESET
7
~6
~5
4
~3
2
TX 1
RX 0
DIGITAL (PWM~)
ON
LEARN. SHARE. HACK.
ISP
ANALOG IN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
a b c d e
a b c d e
f g h i
f g h i
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Page 75
-
Jumper Wire
Jumper Wire
Jumper Wire
Jumper Wire
c24
a3
c24
a3
c24
a3
c24
a3
+
a3
GND
j15
GND
j18
GND
j21
GND
j24
+
GND
330Ω Resistor
330Ω Resistor
330Ω Resistor
330Ω Resistor
Jumper Wire
Jumper Wire
a24
a3
GND
c23
330Ω Resistor
Jumper Wire
Jumper Wire
-
Jumper Wire
Jumper Wire
Jumper Wire
a21
a3
+
h23 h