nsta 2013 denver - ardublock and arduino
DESCRIPTION
Updated slides and presentation materials around using ArduBlock with the SparkFun Lilypad Arduino Development Board.TRANSCRIPT
Brian Huang
Education Engineer
Email: [email protected]
Twitter: @bri_huang
#sparkfun
Engineering the
Engineering: Connecting
the Why to the How
Unleashing Your Students'
Inner Inventor—Robots,
Video Games, and DIY!
Brian Huang
Education Engineer
@bri_huang
#sparkfun
Engineering the
Engineering: Connecting
the Why to the How
Write this down…
http://bit.ly/SparkFunNSTADenver2013
A little background (Ignite style)
Ignite presentation format: (a.k.a. Pecha
Kucha)
• 20 Slides
• 15 seconds per slide
• Slides are on auto-advance
• Total Time: 5 minutes
About us...
Founded in 2003 by Nathan Seidle.
At SparkFun, our focus is all about creation, innovation,
and sharing information.
Open Source Hardware is at the core of our business. We
emphasize researching, re-mixing, adapting, making
improvements, and sharing with the world!
Today
You will use a microcontroller &
ArduBlock to design, develop, and
build interactivity and “intelligence”
with digital electronics, LEDs, and
sensors.
Consumers
Creators / Makers
Engineers / Inventors
Maker Culture
Make to Learn
Seymour Papert &
Constructionism
I want ________ to ________.
Introducing Arduino…
(circa 2005) Small, low-cost micro-controller (mini-computer).
Describes both the hardware (board) and the programming language.
Developed off the Atmel ATMega328 chip.
Designed with Artists, Students, and Non-Engineers in mind…
But, really… what is this “arduino?”
In science???
• Data logging / collection
• Control of motors, LEDs, experiments
• Design of atmospheric and Space-based
experiments and apparatus
• Inventions!
• Making Art!!!
A few project ideas
And, a couple more...
And, a couple more...
Whew!
Questions?
Let’s Start!
First thing you need is…
Download Arduino from:
www.arduino.cc/download
Follow their directions on installation.
Installation Process
ArduBlock is a run-time Java script that must be
saved to a specific location on your computer.
The file ardublock-xxxx.jar must be inside the
following file structure within your Arduino
sketchbook:
\Arduino\tools\ArduBlockTool\tool
Note: Folder names are case sensitive
A little short-cut…
Unzip this file to your Arduino
sketchbook folder.
General Rules
• Raise your hand if you have a question.
• Be respectful.
• When I raise my hand…
• Share your findings with the people near
you.
• Poke around, experiment, and have fun…
• Imagine, create, and play!!!
What is all this stuff???
Components
Buzzer /
Speaker
Light
Sensor
Temp.
Sensor
the Brain
ATmega328
(16 MHz clock)
What is all this stuff??? Silk Screen & Pins
Actual Pins
on Atmega328
Startup Arduino IDE
Double-click on either
the Arduino Icon or
wherever you
installed (saved) the
Arduino program.
Plug it in
Lesson #0a – Setting up Arduino
1.Setup Board
(LilyPad Arduino w/ ATmega328)
2.Setup COM Port
PC – Highest COM #
Mac – /dev/tty.usbserial-A####xXx
Tools Board Setup Board
Tools Serial Port Setup COM Port
PC –
Highest COM #
Mac –
/dev/tty.usbserial-
A####xxx
Other Board Types
Tools ArduBlock Load ArduBlock
Programming
Area
Zoomed out
View
Programming
Blocks Palate
What is ArduBlock?
• Graphical Introduction to Programming
• Scratch-like interface
• Clear transition to text-based coding
• Generates real Arduino code in the
background.
Block Organization
Manipulating or modifying the program
flow or behavior.
Serial and I2C communication:
transferring data between devices & PC
Special utilities: Tone, servo, and
ultrasonic sensors
Creating, assigning, or using constants,
variables, or arrays.
Simple and complex math operations.
Boolean logic operations and
comparisons.
Reading or setting values (voltages) to
pins on the microcontroller.
Block Organization
Control Manipulating or modifying the program
flow or behavior.
Example #1
Click back to the Arduino window to
check for status messages
Example #1 - debrief
What is the difference between setup() and
loop()?
When you add multiple blink blocks, describe
the behavior of the LEDs?
What new feature might you want to create?
Example #2 See if you can come up with the steps needed
to make an LED blink.
What other LEDs can we play
with?
16 18 17
Pins with an A are Analog INPUT pins –
but they’re really identified as…
Digital Pins are numbered 0 to 13.
Analog Input Pins are A0 to A5. but, actually…
Analog Pin Digital I/O ID
A0 14
A1 15
A2 16
A3 17
A4 18
A5 19
An
alo
g P
in
M
ap
pin
g
Example #2 - debrief
1) Can you write a program that blinks on and off with a 1 second
delay in between? What is the period of this pattern?
2) Can you write a program that blinks 10 times per second? What
delay time did you use? What about 50 times per second? What
delay time did you use?
3) Creative: Modify your program to create a heartbeat pattern.
4) Extension: Add extra LEDs to create an LED chaser or Larson
Scanner. Use as many of the LEDs on the Lilypad Development
Board as you like. How fast do you want it to run?
set digital pin
Any number… except,
Pin# is limited to a
range of:
Allows the control of the pins on the Atmega328
chip – turning them on or off (like the light
switch)
or
Different shapes?
Digital Constant Block Numeric Constant Block
to ON OFF
Example #3 - What’s next?
set analog pin
Because of certain hardware
settings, set analog pin only
works with pins 3, 5, 6, 9, 10,
& 11.
Allows the control of the pins on the Atmega328
chip – turning them partially on or partially off
(like a dimmer switch)
Analog Output Values
to
Rather than having just HIGH
and LOW, you can set the
pin to any value from 0 to
255.
Concept: Analog vs. Digital
To create an analog signal, the
microcontroller uses a technique called
PWM.
Pulse Width Modulation (PWM)
Pins 3, 5, 6, 9, 10, 11 are capable of producing an
Analog Output
Example 4 - What about sensors?
Example #4 - debrief
What was the maximum value you saw from the light
sensor?
What was the maximum value you saw from the temp
sensor?
Analog sensors are read by a 10-bit Analog to Digital
(A\D) converter. It “quantizes” a voltage at the input
pin into 1023 “bins.” 5 V = 1023 and 0 V = 0.
Example #5 – if statements
Example #6 – making sounds
(er… music)
Options, options, options…
Questions
?
Preview of Digital SandBox
Slider / Potentiometer Switch
Motor /
Speaker Out
Push Button
Microphone Light Sensor
Temp Sensor
LED Array
RGB LED
Arduino
Extension Project
Create a musical and interactive lighting
display.
Plan out what you want the project to do,
first! Use an outline, flow-chart, or thinking
map to accomplish this.
Getting started with Arduino
SparkFun Inventor’s Kit
KIT-12001
Circuit 1: Blinking an LED
Circuit 2: Reading a Potentiometer
Circuit 3: Driving and RGB LED
Circuit 4: Driving Multiple LEDs
Circuit 5: Push Buttons
Circuit 6: Reading a Photo Resistor
Circuit 7: Reading a Temperature Sensor
Circuit 8: Driving a Servo Motor
Circuit 9: Using a Flex Sensor
Circuit 10: Reading a Soft Potentiometer
Circuit 11: Using a Buzzer
Circuit 12: Driving a Motor
Circuit 13: Using Relays
Circuit 14: Using a Shift Register
Circuit 15: Using an LCD
Data Collection with Vernier
Discount / Promo Code
Promo Code: EDUNSTA2013
25% Discount – orders > $30
E-mail: [email protected] to create
an educator account.
Twitter: @bri_huang, #sparkfun, #nsta2013
Before leaving, please fill out a quick survey
so that I can get your e-mail and a little
info about your familiarity with Arduino /
SparkFun.
Thanks!
http://www.sparkfun.com/WorkshopFeedback
Thank you!
Alright? Let’s blink!
Challenge 1a – Blink to mimic a heartbeat
Challenge 1b – Blink multiple LEDs
First -- plan out a pattern on paper – then
start coding
Challenge 1c – Multiple LEDS – Knight
Rider (Cylon)-esque
Save your Project
• Save early, Save
often!
• Enumerate your
iterations – (e.g.
blink_10.adp,
blink_11.adp,
blink_12.adp…)
Speeding up and Slowing
Down…
What if we wanted to create a pattern that starts off
with a slow blink and gets faster and faster?
What part do we need to be able to change?
constant
Programming Concepts:
Using Variables
Variables placeholders / reminder for
counting
Using Variables in ArduBlock
Numbers/Constants
Variable is just a
placeholder for a
value.
This placeholder can
be manipulated
within the code.
Start by setting a variable called
delayTime in the setup
Now… replace the “1000” in each
delay with the variable name
Decrement delayTime each loop
– using Math Operators
Example: Did you come up with
something like this?
What happens when you reach zero?
Let’s find out!
Debugging – how can we see what’s going on?
Serial Monitor
Serial print
command
Any
message
“glue”
Data
Add this block… so that we can
watch the variable value
Upload & Click back to Arduino Open the Serial Monitor
How do we fix / prevent this from
happening?
If this is TRUE…
Do this.
Otherwise,
do this.
Conditional Logic: If(), If() – else…
Logical Operators Comparisons / Conditionals
Greater than
Less than
Equal to
Greater than or equal to
Less than or equal to
Not equal to
If delayTime <= 0… reset
Advanced… Combinations of inequalities
Combine multiple conditions together using
or and and
Example:
Other than just turning an LED on
and off…
What else might we want to do / control?
Concept: Analog vs. Digital
Micro-controllers are digital devices – ON or OFF.
An Analog signal is anything that can be a full
range of values. xWhat are some examples?
Think of like a ramp or a hill.
Concept: Analog vs. Digital
To create an analog signal, the
microcontroller uses a technique called
PWM.
Pulse Width Modulation (PWM)
Pins 3, 5, 6, 9, 10, 11 are capable of producing an
Analog Output
Color Mixing with 3 LEDs
RGB LED
LED PINS
RED = 9
GREEN = 11
BLUE = 10
Change either of these
values… See what happens!
Color Mixing with 3 LEDs
Tri-color LED
The RGB LED is a Common-Anode (means the
positive side of the LED is all tied to Vcc).
The signal line is connected to the bottom of each
LED.
Don’t worry - it’s just a different method of
completing a circuit!
Pin
9
Pin
11
Pin
10
5 V
Value = 0 (LOW) LED is ON
Value = 255 (HIGH) LED is OFF
Color Mixing with 3 LEDs
Challenge 2b:
Experiment with different values of Red, Green, and Blue
to create a couple different colors.
Write down the values you used. Check these values
with www.colorpicker.com
Challenge 2c:
Create a unique lighting display that blinks, fades, or
switches colors. Be prepared to have a name for your art
piece and show this to the rest of the class.
Save your Project #2
New Challenge
Handling Inputs
A Simple Example
Try this bit of code.
What do you think will happen? Test it
and write down your observations.
DIG
INPUT 2
digital Inputs
Buttons / Slide Switches
INPUT A5
INPUT A5
(a.k.a. 19)
What about
this??
Analog Pin Digital I/O ID
A0 14
A1 15
A2 16
A3 17
A4 18
A5 19
An
alo
g P
in
M
ap
pin
g
digital Inputs
Buttons / Slide Switches
Challenge 3a:
Re-arrange the blocks or add new ones to:
• Blink LED quickly when the button is pressed.
• Otherwise blink slow
Same as
Pin A5
digital Inputs
Buttons / Slide Switches
Challenge 3b:
Now, using the button / switch – to start a disco/light changing
pattern
Challenge 3c:
Now, using the button / switch – to turn on and off the VIBE
motor.
Reading the
Light Sensor?
What is the biggest and smallest value the analog pin will
“measure”? [Hint: open your serial monitor to find out!]
Challenge
Use the light sensor input to affect the blink
rate of the LEDs.
Use the light sensor input to affect the speed
of a “knight-rider” or cylon display.
Use the light sensor to ___________.
Save your Project #3
Sensors
Making Music
Setting up the Speaker
Three simple blocks to play with…
Making Music
Let’s Play a song…
Twinkle-Twinkle:
CC GG AA G FF EE DD C GG
Happy Birthday:
G G A G C B G G A G D C G G G E C C B A
Hot Cross Buns:
B A G <> B A G <> G G G G <> A A A A B A G
Mary Had A Little Lamb:
B A G A BB B <> AA A <> BB B <>
B A G A BBBB AAA BAG.
Musical Notes / Frequencies
Note Frequency (Hz)
C4 261
C#4/D
b4 277
D4 293
D#4/E
b4 311
E4 329
F4 349
F#4/G
b4 369
G4 392
G#4/A
b4 415
A4 440
A#4/B
b4 466
B4 493
Note Frequency (Hz)
C5 523
C#5/D
b5 554
D5 587
D#5/E
b5 622
E5 659
F5 698
F#5/G
b5 739
G5 783
G#5/A
b5 830
A5 880
A#5/B
b5 932
B5 987
Save your Project #4
Tone