Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
16 views

Introto Arduino

This document provides an overview of an introductory class on Arduino. 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, components and their functions. The document outlines the course material including electricity and electronics review, programming, and hands-on exercises.

Uploaded by

Hemant Homkar
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views

Introto Arduino

This document provides an overview of an introductory class on Arduino. 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, components and their functions. The document outlines the course material including electricity and electronics review, programming, and hands-on exercises.

Uploaded by

Hemant Homkar
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
Arduino…

is the go-to gear for artists, hobbyists, students,


and anyone with a gadgetry dream.

rose out of another formidable 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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
Go ahead and plug your board in!

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
Arduino Shields

PCB Built Shield Inserted Shield

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
Arduino Shields

Micro SD MP3 Trigger LCD

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
SIK Components

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
SIK Components

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
SIK Components

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
Electricity \ Electronics Basic Concept
Review
• Ohms Law
• Voltage
• Current
• Resistance
• Using a Multi-meter

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
Ohm’s Law

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
Electrical Properties

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
Current Flow Analogy

High Current Low Current

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
Voltage Analogy

Water
Tower
Water
Tower

V
V

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

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
Resistance Analogy

Water Water
Tower Tower

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

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
Prototyping Circuits
Solderless Breadboard
One of the most useful tools in an engineer or
Maker’s 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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
What’s a Breadboard?

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
Solderless Breadboard

Each row (horiz.) of 5


holes are connected.

Vertical columns – called


power bus are
connected vertically

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
Adding control – let’s use the Arduino
and start programming!!!

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

Referenced from the perspective of the microcontroller (electrical board).

Inputs is a signal / information Output is any signal exiting the


going into 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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
Concepts: INPUT vs. OUTPUT

Referenced from the perspective of the microcontroller (electrical board).

Inputs is a signal / information Output is any signal exiting the


going into the board. board.

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


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

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
Open up Arduino

Hints:
For PC Users  For Mac Users 
1. Let the installer copy and 1. Move the Arduino
move the files to the executable to the dock for
appropriate locations, or ease of access.
2. Create a folder under 2. Resist the temptation to
C:\Program Files (x86) run these from your
called Arduino. Move the desktop.
entire Arduino program
folder here.

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
Settings: Tools  Board

Next, double-check that the proper board is selected under the


ToolsBoard menu.

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
Arduino & Arduino Compatible Boards

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
BIG 6 CONCEPTS

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
Let’s get to coding…

Project #1 – Blink
“Hello World” of Physical Computing

Psuedo-code – how should this work?

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
Comments, Comments, Comments
Comments are for you – the programmer and your friends…or
anyone else human that might read your code.

// this is for single line comments


// it’s 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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
comments

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
A few simple challenges
Let’s 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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
Try adding other LEDs

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
Programming Concepts: Variables

Variable Scope

Global
---
Function-level

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
Move one of your LED pins over to Pin 9

In Arduino, open up:


File  Examples  01.Basics  Fade

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
Fade - Code Review

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
Fade - Code Review

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
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()
command.

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
RGB LED Color Mixing

void loop()
{
analogWrite(redPin, 255);
analogWrite (greenPin, 255);
analogWrite (bluePin, 255);
}

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
Project: Mood Lamp / Light Sculpture

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
Driving Motors or other High Current Loads

NPN Transistor (Common Emitter “Amplifier” Circuit)

to Digital
Pin 9

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
Project #4 – Digital Input

In Arduino, open up:


File  Examples  02.Digital  Button

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
Digital Sensors (a.k.a. Switches)
Pull-up Resistor (circuit)

to Digital Pin 2

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
                           
http://opensourcehardwarejunkies.com/tutorial-03-digitalread-and-
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
Programming: Conditional Statements
if()

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
Trimpot (Potentiometer)
Variable Resistor

fixed
end

wiper

fixed
end

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
Ohms Law… (just the basics)
Actually, this is the “voltage divider”

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
analogRead()

Arduino uses a 10-bit A/D Converter:


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

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
Serial Monitor & analogRead()

Initializes the Serial


Communication

9600 baud data rate


prints data to serial bus
                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
Serial Monitor & analogRead()

Opens up a
Serial Terminal
Window

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
Additional Serial Communication
Sending a Message

void loop ( )
{
Serial.print(“Hands on “) ;
Serial.print(“Learning ”) ;
Serial.println(“is Fun!!!”) ;

}
                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
Serial Communication:
Serial Debugging

void loop()
{
int xVar = 10;
Serial.print ( “Variable xVar is “ ) ;
Serial.println ( xVar ) ;
}

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
Serial Communication:
Serial Troubleshooting

void loop ( )
{
Serial.print (“Digital pin 9: “);
Serial.println (digitalRead(9));
}

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
Now that you feel comfortable putting together circuits
with your breadboard let’s talk about how to go from
the breadboard to a PCB

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
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 a Creative Commons Attribution-ShareAlike 3.0 United States License.
Questions?

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.
www.sparkfun.com
6175 Longbow Drive, Suite 200
Boulder, Colorado 80301

                           
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.

You might also like