Hardware Hacking and Arduinos
-
Upload
howard-mao -
Category
Technology
-
view
193 -
download
4
description
Transcript of Hardware Hacking and Arduinos
Hardware Hackingand Arduinos
Howard Mao and Mason Silber
Downloading the Arduino IDE
● Go to www.arduino.cc/en/main/software○ Download whichever software fits your Operating
System● Linux users: find the "arduino" package in
your distro's repository● OSX users: make sure to also install USB
FTDI drivers○ http://www.ftdichip.com/Drivers/VCP.htm
What you have in front of you:
● Arduino Duemilanove● USB Cable● Breadboard● Box of jumper wires● 4 1k-ohm resistors (Brown-Black-Red)● 1 100k-ohm resistor (Brown-Black-Yellow)● 1 100k-ohm potentiometer● 4 Light Emitting Diodes (LEDs)● 1 push button switch
LED
● Light-emitting Diode● Produces light when current flows through● Current can only flow one way
Rules for LEDs
● Always use inline resistor● Make sure direction is right (long pin is +)
Digital Output
Voltage can be HIGH (+5 V) or LOW (0 V)pinMode(pin, OUTPUT) sets pin to outputdigitalWrite(pin, HIGH) sets voltage highdigitalWrite(pin, LOW) sets voltage low
Breadboards● Red channel for power● Blue channel for ground● Slots on horizontal channels all
connected together internally● Except break in middle of
board● Bridge two unconnected lines
of breadboard to build your circuit
Basic Arduino Program Structure
void setup(){
//All initial settings go here}
void loop(){
//Runs indefinitely after setup has completed}
Lab 1: LED sweep
● Connect LEDs to Arduino pins 8, 9, 10, 11● Turn only one on at a time● Sweep left and then right
"Analog Output" : PWM
● Higher voltage gives brighter LED● Use PWM to approximate lower voltages● More time spent high (duty cycle) means
higher average voltage● analogWrite(pin, level) sets PWM duty cycle● Levels are from 0 to 255 (8 bits)
thT
Duty Cycle = th / T
Lab 2: Analog LED Sweep
● Sweep left and right as before● But keep a trail of dimmer LEDs behind● Divide the level of secondary LEDs down by
two after each step
Voltage Division
Vout = R2 / (R1 + R2) * Vin
Analog Input
● Arduino has an Analog-to-Digital Converter● Pins A0 - A5● Use analogRead(pin) to get voltage level● Levels go from 0 to 1023 (10 bits)
Lab 3: Variable Speed
● Use potentiometer (variable resistor) and resistor to form variable voltage divider
● Connect output of voltage divider to pin A0● Read output voltage and use it to control
delay time
Buttons and Switches
● Two kinds of switches○ Single Throw - open or closed○ Double Throw - one branch or another
● Closed switch has 0 resistance○ Acts as a wire
● Open switch has infinite resistance○ No current can flow
Pull-up Resistors
● Open switch with no voltage driver is an antenna, not necessarily ground
● Use pull-up resistors when combining single-throw switches and digital logic
Interrupts
● Tell the Arduino that a digital input has changed
● attachInterrupt(interrupt, function, mode) sets function to be run on interrupts
● Interrupt 0 -> pin 2, Interrupt 1 -> pin 3● Modes are CHANGE, RISING, FALLING,
LOW
Lab 4: Pause Button
● Connect push button to Arduino pin 2● Set pin mode to INPUT_PULLUP● Attach interrupt for pin 2● When button pressed (switch closed), pause
the sweeping● When button released (switch open), resume
the sweeping
Congratulations! You did it!
Some safety rules to remember
● Do not use very high voltages○ microcontrollers like Arduino use either 5 V or 3.3 V
● Do not short power to ground● Do not touch small resistor (< 100 Ohm)
after voltage is applied○ power is inversely proportional to resistance○ power in resistor is dissipated as heat○ small resistor + normal voltage = hot! hot! hot!
● Make sure directional components are in right direction
Learning More
● Arduino website (http://arduino.cc) has many good tutorials and resources
The EndHave fun at HackNY