Date post: | 06-May-2015 |
Category: |
Education |
Upload: | brian-huang |
View: | 3,275 times |
Download: | 3 times |
Pre-Class Survey
http://bit.ly/14Xk3Ek
Resources
This PPT
ArduBlock Download & Installation http://www.ardublock.com/
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
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!!!
Objectives
Provide a thorough introduction to the Arduino programming environment.
Develop a use of simple functions to interact with the LEDs, light sensor, push button, and buzzer on the Protosnap Pro Mini.
Arduino LilyPad Protosnap Dev
What is it?
What can it do?
Who cares?
What is it?
Heart of it – ATMega328 (a $4 microcontroller)
Open Source
High tolerance for ESD and “bad” electronics practices…
Provides easy way to interact with a computer physically – a.k.a. physical computing
What can it do?
- Great for prototyping ideas
- Great to teach Intro to Programming Arduino (no assembly required!)
- Lots and lots of options!
- Large pads can be sew-able
Who cares?
Hackers / Makers
Engineers
Artists
Musicians
Kids!
Teachers!!
You!!!
Physical Computing
What is all this stuff???Components
Buzzer / Speaker
Light Sensor
Temp.Sensor
the Brain ATmega328(16 MHz clock)
RGB LED
Vibe Motor
Switch / Button
Light Emitting
Diodes (LED)
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 PortPC – Highest COM #Mac – /dev/tty.usbserial-A####xXx
Tools BoardSetup Board
Tools Serial PortSetup COM Port
PC – Highest COM #
Mac – /dev/tty.usbserial-A####xxx
Other Board Types
Tools ArduBlockLoad ArduBlock
Programming Area
Zoomed out ViewProgramming
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 OrganizationControl
Manipulating or modifying the program flow or behavior.
Pin # – any number from 0 to 19
Values –
Pin # – 3, 5, 6, 9, 10, or 11 .
Values –
Allows the control of the pins on the Atmega328 chip – turning them on or off (like the light switch)
Block OrganizationPins
or to
Notice the different shapes?
Digital Values Analog (Number) Values
Lesson #0b – Test Upload
Notes:• Click and drag blocks from the left pane to the
Programming Area.• Blocks should snap/click together.• Right-click to copy-paste (clone) a block• Drag blocks back to the left pane to discard.
Click Upload to Arduino and watch…
Create the following program -- What do you expect this to do?
Click back to the Arduino window to check for status messages
What do you see?
LED on pin #13
What about turning the LED off?
Click to change the HIGH to a LOW
Let’s get to hacking…
Lesson #1 – What if I want to Blink?“Hello World” of Physical Computing
Psuedo-code – how should this work?
Turn LED
ON
Wait
Turn
LED OFF
Wait
Rinse &
Repeat
Let’s get to hacking…
Lesson #1 – What if I want to Blink?“Hello World” of Physical Computing
Runs once at the beginning of code.
Repeats – continuously over and over and over…
Example
What other LEDs can we play with?
16 18 17
Pins with an A are actually Analog INPUT pins – but they’re really
identified as…
Digital Pins are numbered 0 to 13.
Analog Input Pins are A0 to A5. but…
Analog Pin Digital I/O ID
A0 14
A1 15
A2 16
A3 17
A4 18
A5 19Analo
g P
in M
appin
g
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
Variable Types:
8 bits 16 bits 32 bits
byte char
intunsigned int
longunsigned long
float
Using Variables in ArduBlockNumbers/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 toGreater than or equal
toLess 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?
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 LEDsRGB LED
Challenge 2a:
1) Experiment with different values – what do you observe happens? Be prepared to share with the class – what did you try, and what did you see?
2) Do you observe anything strange about the behavior?
3) How do you create Orange? Purple? Magenta?
LED PINS
RED = 9
GREEN = 11
BLUE = 10
Change either of these values… See what happens!
Color Mixing with 3 LEDsTri-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!
Pin9
Pin11
Pin 10
5 V
Value = 0 (LOW) LED is ONValue = 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 InputsButtons / Slide Switches
INPUT A5INPUT 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 19Analo
g P
in M
appin
g
digital InputsButtons / 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 InputsButtons / 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 #3Sensors
Making MusicSetting up the Speaker
Three simple blocks to play with…
Making MusicLet’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 261C#
4/Db4 277
D4 293D#
4/Eb4 311
E4 329F4 349
F#4/Gb
4 369G4 392
G#4/Ab
4 415A4 440
A#4/Bb
4 466B4 493
Note Frequency (Hz)
C5 523C#
5/Db5 554
D5 587D#
5/Eb5 622
E5 659F5 698
F#5/Gb
5 739G5 783
G#5/Ab
5 830A5 880
A#5/Bb
5 932B5 987
Save your Project #4Tone
Getting started with Arduino
Additional Resources
http://www.sparkfun.com
http://learn.sparkfun.com
http://www.arduino.cc
http://www.bildr.org
SparkFun Tutorials and Projects
- GardenBot: www.sparkfun.com/news/598
- High Altitude Balloon:www.sparkfun.com/tutorials/180
- GPS Clock: www.sparkfun.com/tutorials/47
- Earthquake Data Logger: www.sparkfun.com/tutorials/235
Thousands of Amazing ideas…
The Cat Defender…http://www.plasma2002.com/blenderdefender/List of projects at Sparkfun:https://learn.sparkfun.com/tutorials
Questions?
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
Feedback?
www.sparkfun.com6175 Longbow Drive, Suite 200
Boulder, Colorado 80301