Intro To Arduino: Zero To Prototyping in A Flash!
Intro To Arduino: Zero To Prototyping in A Flash!
Zero to Prototyping
in a Flash!
Getting Started:
Installation, Applications and Materials
Electrical:
Components, Ohm's Law, Input and Output, Analog and Digital
-----------------------------
Programming:
Split into groups depending on experience
Serial Communication Basics:
Troubleshooting and Debugging
Virtual Prototyping:
Schematics and PCB Layout in Fritzing
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Arduino Board
Strong Friend Created in Ivrea, Italy
in 2005 by Massimo Banzi & David Cuartielles
Open Source Hardware
Processor
Coding is accessible & transferrable (C++, Processing, java)
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Arduino
http://spectrum.ieee.org/geek-life/hands-on/the-making-of-arduino
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Getting Started
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
PWR IN USB
(to Computer)
RESET
SCL\SDA
(I2C Bus)
POWER
5V / 3.3V / GND
Digital I\O
PWM(3, 5, 6, 9, 10, 11)
Analog
INPUTS
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
PWR IN USB
(to Computer)
RESET
SCL\SDA
(I2C Bus)
POWER
5V / 3.3V / GND
Digital I\O
PWM(3, 5, 6, 9, 10, 11)
Analog
INPUTS
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Go ahead and plug your board in!
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Arduino Shields
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Arduino Shields
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
SIK Components
Name Image Type Function Notes
Push Button Digital Input Switch - Closes Polarized, needs
or opens circuit resistor
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
SIK Components
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
SIK Components
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
SIK Components
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Electricity \ Electronics Basic
Concept Review
Ohms Law
Voltage
Current
Resistance
Using a Multi-meter
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Ohms Law
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Electrical Properties
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Current Flow Analogy
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Voltage Analogy
Water
Tower
Water
Tower
V
V
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Resistance Analogy
Water Water
Tower Tower
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Continuity Is it a Circuit?
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Measuring Electricity Voltage
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Measuring Electricity -- Current
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Measuring Electricity -- Resistance
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Prototyping Circuits
Solderless Breadboard
One of the most useful tools in an
engineer or Makers toolkit. The three
most important things:
A breadboard is easier than soldering
A lot of those little holes are connected, which ones?
Sometimes breadboards break
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Whats a Breadboard?
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Solderless Breadboard
Vertical columns
called power bus
are connected
vertically
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Using the Breadboard to built a
simple circuit
What happens
when you
break the
circuit?
What if you
wanted to add
more than
one LED?
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Adding control lets use the
Arduino
and start programming!!!
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Concepts: INPUT vs. OUTPUT
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Concepts: Analog vs. Digital
Microcontrollers are digital devices ON or
OFF. Also called discrete.
5V 5V
0V 0V
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Open up Arduino
Hints:
For PC Users For Mac Users
1. Let the installer copy 1. Move the Arduino
and move the files to executable to the
the appropriate dock for ease of
locations, or access.
2. Create a folder under 2. Resist the
C:\Program Files (x86) temptation to run
called Arduino. Move these from your
the entire Arduino desktop.
program folder here.
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Arduino
Integrated Development Environment (IDE)
void setup()
{
// runs once
}
void loop()
{
// repeats
error & status messages }
Settings: Tools Serial Port
Your computer
communicates to the
Arduino microcontroller
via a serial port
through a USB-Serial
adapter.
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Settings: Tools Board
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Arduino & Arduino Compatible Boards
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
BIG 6 CONCEPTS
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Lets get to coding
Project #1 Blink
Hello World of Physical Computing
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Comments, Comments, Comments
Comments are for you the programmer and your
friendsor anyone else human that might read your
code.
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
comments
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Three commands to know
pinMode(pin, INPUT/OUTPUT);
ex: pinMode(13, OUTPUT);
digitalWrite(pin, HIGH/LOW);
ex: digitalWrite(13, HIGH);
delay(time_ms);
ex: delay(2500); // delay of 2.5 sec.
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Project #1: Wiring Diagram
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
A few simple challenges
Lets make LED#13 blink!
Challenge 1a blink with a 200 ms
second interval.
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Try adding other LEDs
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Programming Concepts: Variables
Variable Scope
Global
---
Function-
level
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Programming Concepts: Variable
Types
Variable Types:
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Concepts: Analog vs. Digital
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Project #2 Fading
Introducing a new command
analogWrite(pin, val);
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Fade - Code Review
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Fade - Code Review
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Project# 2 -- Fading
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
R G B
Color Mixing
Tri-color LED
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Project 3 RGB LED
Note: The
longest leg of
the RGB LED is
the Common
Cathode. This
goes to GND.
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
How many unique colors can you
create?
Use Colorpicker.com or
experiment on your
own.
Pick out a few colors
that you want to try
re-creating for a
lamp or lighting
display...
Play around with this
with the
analogWrite()
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
RGB LED Color Mixing
int redPin = 5;
int greenPin = 6;
int bluePin = 9;
void setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
RGB LED Color Mixing
void loop()
{
analogWrite(redPin, 255);
analogWrite (greenPin, 255);
analogWrite (bluePin, 255);
}
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Project: Mood Lamp / Light Sculpture
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Napkin
Schematics
Emphasize the
engineering
design process
with students. We
like to skirt the
line between
formal and
informal with a
tool called
Napkin
Schematics.
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Napkin
Schematics
Emphasize the
engineering
design process
with students. We
like to skirt the
line between
formal and
informal with a
tool called
Napkin
Schematics.
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Driving Motors or other High Current
Loads
to Digital
Pin 9
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Input
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Project #4 Digital Input
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Digital Sensors (a.k.a. Switches)
Pull-up Resistor (circuit)
to Digital Pin 2
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Digital Sensors (a.k.a. Switches)
Add an indicator LED to Pin 13
This is just like our
1st circuit!
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Digital Input
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Digital Sensors
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
http://opensourcehardwarejunkies.com/tutorial-03-digitalread-and-
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Programming: Conditional
Statements
if()
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Programming: Conditional
Statements
if()
void loop()
{
int buttonState = digitalRead(5);
if(buttonState == LOW)
{ // do something DIG
INPUT
}
else
{ // do something else
}
}
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Boolean Operators
<Boolean> Description
( ) == ( ) is equal?
( ) != ( ) is not equal?
( ) > ( ) greater than
( ) >= ( ) greater than or equal
( ) < ( ) less than
( ) <= ( ) less than or equal
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Trimpot (Potentiometer)
Variable Resistor
fixed
end
wiper
fixed
end
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Analog Sensors
3 Pin Potentiometer = var. resistor
(circuit)
a.k.a. Voltage Divider Circuit
wiper
fixed
ends 1.0 V 1.0 V
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Ohms Law (just the basics)
Actually, this is the voltage divider
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
analogRead()
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Using Serial Communication
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Serial Monitor & analogRead()
Opens up a
Serial Terminal
Window
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Analog Sensors
2 Pin Analog Sensors = var. resistor
MaxAnalogRead = _________
MinAnalogRead = _________
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Analog Sensors
Examples:
Sensors Variables
Mic soundVolume
Photoresistor lightLevel
Potentiometer dialPosition
Temp Sensor temperature
Flex Sensor bend
Accelerometer tilt/acceleration
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Additional Serial Communication
Sending a Message
void loop ( )
{
Serial.print(Hands on ) ;
Serial.print(Learning ) ;
Serial.println(is Fun!!!) ;
}
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Serial Communication:
Serial Debugging
void loop()
{
int xVar = 10;
Serial.print ( Variable xVar is ) ;
Serial.println ( xVar ) ;
}
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Serial Communication:
Serial Troubleshooting
void loop ( )
{
Serial.print (Digital pin 9: );
Serial.println (digitalRead(9));
}
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Virtual Electrical Prototyping Project
started in 2007 by the Interaction Design Lab
at the University of Applied Science Potsdam, Germany
Open Source
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Now that you feel comfortable putting
together circuits with your breadboard
lets talk about how to go from the
breadboard to a PCB
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Free Time
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Questions?
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
www.sparkfun.com
6175 Longbow Drive, Suite 200
Boulder, Colorado 80301
This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States