0% found this document useful (0 votes)
53 views

Intro To Arduino: Zero To Prototyping in A Flash!

This document provides an overview of an introductory class on Arduino prototyping. The class covers getting started with Arduino installation and materials, electrical components and concepts like Ohm's Law, programming basics, and virtual prototyping using Fritzing. Students will learn about the Arduino board, shields, common components, and electricity/electronic concepts to get started with basic Arduino projects.
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
53 views

Intro To Arduino: Zero To Prototyping in A Flash!

This document provides an overview of an introductory class on Arduino prototyping. The class covers getting started with Arduino installation and materials, electrical components and concepts like Ohm's Law, programming basics, and virtual prototyping using Fritzing. Students will learn about the Arduino board, shields, common components, and electricity/electronic concepts to get started with basic Arduino projects.
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 93

Intro to Arduino

Zero to Prototyping
in a Flash!

Material designed by Linz Craig, Nick Poole, Prashanta Aryal,


Theo Simpson, Tai Johnson, and Eli Santistevan
Overview of Class

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

is the go-to gear for artists, hobbyists,


students, and anyone with a
gadgetry dream.

rose out of anotherformidable


challenge: how to teach students to
create electronics, fast.

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

SW Installation: Arduino (v.1.0+)


Fritzing
SIK Guide Code
Drivers (FTDI)

Materials: SIK Guide


Analog I/O, Digital I/O, Serial,
& Fritzing handouts
Arduino CheatSheet


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

PCB Built Shield Inserted Shield


This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Arduino Shields

Micro SD MP3 Trigger LCD


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

Trim Analog Input Variable resistor Also called a


Trimpot.
potentiometer
Photoresistor Analog Input Light Dependent Resistance varies
Resistor (LDR) with light.

Relay Digital Output Switch driven by Used to control


a small signal larger voltages
Temp Sensor Analog Input Temp Dependent
Resistor
Flex Sensor Analog Input Variable resistor

Soft Trimpot Analog Input Variable resistor Careful of shorts

RGB LED Dig & Analog 16,777,216 Ooh... So pretty.


Output different colors


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

High Current Low Current


This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Voltage Analogy

Water
Tower
Water
Tower

V
V

More Energy == Higher Voltage Less Energy == Lower Voltage


This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Resistance Analogy

Water Water
Tower Tower

Big Pipe == Lower Resistance Small Pipe == Higher Resistance


This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Continuity Is it a Circuit?

The word circuit is derived from the circle. An


Electrical Circuit must have a continuous LOOP
from Power (Vcc) to Ground (GND).

Continuity is important to make portions of


circuits are connect. Continuity is the simplest
and possibly the most important setting on
your multi-meter. Sometimes we call this
ringing out a circuit.


This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Measuring Electricity Voltage

Voltage is a measure of potential


electrical energy. A voltage is also called
a potential difference it is measured
between two points in a circuit across
a device.


This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Measuring Electricity -- Current

Current is the measure of the rate of charge flow.


For Electrical Engineers we consider this to
be the movement of electrons.
In order to measure this you must break the
circuit or insert the meter in-line (series).


This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Measuring Electricity -- Resistance

Resistance is the measure of how much


opposition to current flow is in a circuit.
Components should be removed entirely from
the circuit to measure resistance. Note the
settings on the multi-meter. Make sure that
you are set for the appropriate range.
Resistance
settings


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

Each row (horiz.) of 5


holes are
connected.

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

Use the breadboard


to wire up a single
LED with a 330
Ohm Resistor
(Orange-Orange-
Brown).
Note: the longer leg on the
LED is the positive leg and
the shorter leg is the
negative

This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Fritzing View of Breadboard 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

Referenced from the perspective of the microcontroller (electrical


board).
Inputs is a signal / Output is any signal
information going into the exiting the board.
board.

Almost all systems that use physical computing will have


some form of output

What are some examples of Outputs?



This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Concepts: INPUT vs. OUTPUT

Referenced from the perspective of the microcontroller (electrical


board).
Inputs is a signal / Output is any signal
information going into the exiting the board.
board.

Examples: Buttons Switches, Examples: LEDs, DC motor,


Light Sensors, Flex Sensors, servo motor, a piezo buzzer,
Humidity Sensors, relay, an RGB LED
Temperature Sensors


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.

analog signals are anything that can be a


full range of values. What are some
examples? More on this later

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)

Two required functions /


methods / routines:

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.

Check to make sure that


the drivers are properly
installed.


This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Settings: Tools Board

Next, double-check that the proper board is selected


under the ToolsBoard menu.


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

Psuedo-code how should this work?


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 is for single line comments


// its good to put a description at the top and
before anything tricky
/* this is for multi-line comments
Like this
And this.
*/


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.

// NOTE: -> commands are CASE-sensitive


This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Project #1: Wiring Diagram

Move the green


wire from the
power bus to pin
13 (or any other
Digital I/O pin on
the Arduino
board.

Image created in Fritzing


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.

Challenge 1b blink to mimic a heartbeat

Challenge 1c find the fastest blink that


the human eye can still detect
1 ms delay? 2 ms delay? 3 ms delay???


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:

8 bits 16 bits 32 bits

byte int long


char unsigned int unsigned long
float

This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Fading in and Fading Out
(Analog or Digital?)

A few pins on the Arduino allow for us


to modify the output to mimic an
analog signal.

This is done by a technique called:


Pulse Width Modulation (PWM)


This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Concepts: Analog vs. Digital

To create an analog signal, the microcontroller uses


a technique called PWM. By varying the duty cycle,
we can mimic an average analog voltage.

Pulse Width Modulation (PWM)


This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Project #2 Fading
Introducing a new command

analogWrite(pin, val);

pin refers to the OUTPUT


pin (limited to pins 3, 5, 6, 9,
10, 11.) denoted by a ~
symbol

val 8 bit value (0 255).


0 => 0V | 255 => 5V

This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Move one of your LED pins over to
Pin 9
In Arduino, open up:
File Examples 01.Basics Fade


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

Challenge 2a Change the rate of the


fading in and out. There are at least
two different ways to do this can
you figure them out?

Challenge 2b Use 2 (or more) LEDs


so that one fades in as the other
one fades out.


This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
R G B
Color Mixing
Tri-color LED

In the SIK, this is a standard


Common Cathode LED

This means the negative


side of the LED is all tied to
Ground.


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.

Use pins 5, 6, &


9


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

NPN Transistor (Common Emitter Amplifier Circuit)

to Digital
Pin 9


This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Input

Input is any signal entering an electrical system


.
Both digital and analog sensors are forms of
input
Input can also take many other forms:
Keyboards, a mouse, infrared sensors, biometric
sensors, or just plain voltage from a circuit


This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Project #4 Digital Input

In Arduino, open up:


File Examples 02.Digital
Button


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

Connect digital input to your Arduino using Pins # 0 13


(Although pins # 0 & 1 are also used for programming)

Digital Input needs a pinMode command:


pinMode (pinNumber, INPUT);
Make sure to use ALL CAPS for INPUT

To get a digital reading:


int buttonState = digitalRead (pinNumber);

Digital Input values are only HIGH (On) or LOW (Off)


This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Digital Sensors

Digital sensors are more straight forward than


Analog

No matter what the sensor there are only two


settings: On and Off

Signal is always either HIGH (On) or LOW (Off)

Voltage signal for HIGH will be a little less than 5V


on your Uno

Voltage signal for LOW will be 0V on most systems


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()

Arduino uses a 10-bit A/D Converter:


this means that you get input values
from 0 to 1023
0V0
5 V 1023
Ex:
int sensorValue = analogRead(A0);


This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Using Serial Communication

Method used to transfer data between two


devices.
Data passes between the computer and Arduino
through the USB cable. Data is transmitted as zeros
(0) and ones (1) sequentially.

Arduino dedicates Digital I/O pin # 0 to


receiving and Digital I/O pin #1 to transmit.


This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 United States
Serial Monitor & analogRead()

Initializes the Serial


Communication

9600 baud data rate

prints data to serial bus



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

Take two sensors -- Use


the Serial Monitor
and find the range of
input values you get
for each sensor.

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

Prototypes: Document, Share, Teach, Manufacture


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

The rest of the class is dedicated to free pursuit

Experiment with the various circuits and


lessons in the SIK.

Explore the additional tutorials available on


learn.sparkfun.com

Thank you for attending our Intro to Arduino


class


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

You might also like