An Arduino
Workshop

By: Andrew Tuline
Overview
•
•
•
•
•
•

Introductions
Check out the kits
Do the drivers work?
Experiment time
Some reference material
Create...
Introductions

Work on your own or work as a team, and help each other out.
Open ‘er Up
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30....
The Official Arduino Robot
> $300
Or you can build
your own for less

Do a Google search for ‘Sumobot’.
Installing Arduino DE
• On Windows 7
• Installs to C:Program Files (x86)Arduino
• Your programs are in C:UsersuseridDocume...
Touring the IDE
• ‘File | Examples’ includes lots of examples
• ‘File | Upload’ is how we compile and upload our program t...
A Breadboard
Simple Schematic
Simple Layout

1) Connect the power bus first.
2) Add the LED and resistor.
3) Connect them to the power bus.
Ohm’s Law
Current = Volts / Resistance
or

I=E/R
If we have a 5 volt battery and a 200 ohm resistor.
5 volts / 200 ohms = ...
Don’t Blow It Up
•
•
•
•

An LED needs about 1.4 volts to light up.
An LED should run at around .02 amps.
If you put 5V in...
Blinky LED Layout

Move the red wire from 5V to pin 13.
Blinky LED Code

What happens if you move the red wire to 5V and the black to pin 13.
Button Schematic

We’ll light up the internal LED when the switch is pushed.
Button Layout

Why the 10K resistor?
Button Code
/* Button
*/
const int buttonPin = 2;
const int ledPin = 13;

// the number of the pushbutton pin
// the numbe...
Analog vs. Digital

Analog outputs are expensive!
Analog vs. PWM Signals

PWM is cheap to implement!
Fade Schematic
Fade Layout
Fade Code
/* Fade
*/
int led = 9;
int brightness = 0;
int fadeAmount = 5;

// the pin that the LED is attached to
// how b...
Analog Read Schematic

Try both the potentiometer
and the joystick for this
experiment.
Analog Read Layout
Analog Read Code
/* Analog Read
*/
void setup() {
Serial.begin(9600);
}

// initialize console output at 9600 bits per sec...
Potentiometer Fader
• The joystick provides values between 0 – 1023
• The LED takes values between 0 – 255
• We need to sc...
Potentiometer Fader Schematic
Potentiometer Fader Code
/* Potentiometer Fader
*/

const int analogInPin = A0;
const int analogOutPin = 9;

// Analog inp...
Fader Variations
• Hook up the RGB LED (common cathode)
• Use the x/y of the joystick to control
brightness and fade speed...
Light and Sound Schematic
Light and Sound Code
/* Light and Sound
*/
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorReading = analogRe...
Additional Experiments
•
•
•
•
•
•
•

LCD display
Servo
Stepper motor
Temperature sensor
Tilt sensor
Shift register
IR sen...
Now THIS Is A Breadboard
More Cool Parts and Kits
•
•
•
•
•
•
•
•

Ultrasonic Sensor
Motor driver board
Robot chassis
LED Strips
8x8 LED display
Co...
Tools
•
•
•
•
•
•
•
•

Needle nose pliers
Multi-meter
Wire strippers
Wire cutter
Soldering iron + solder + flux + wick
Vis...
Arduino Tutorials
•
•
•
•
•

arduino.cc/tutorial
playground.arduino.cc
tronixstuff.com/tutorials
learn.sparkfun.com/tutori...
Inspirational Web Sites
•
•
•
•

www.instructables.com
www.tindie.com
www.makershed.com
www.makezine.com
Sources for Parts
•
•
•
•
•
•
•

www.robotshop.ca
www.sparkfun.com
www.leeselectronics.com
www.adafruit.com
www.ebay.ca
ww...
University
Hardware Hacker

https://diy.org/skills/hardwarehacker
Make Something
Arduino Workshop
Upcoming SlideShare
Loading in …5
×

Arduino Workshop

3,229 views

Published on

Arduino Workshop prepared for Fraser Valley Scouts.

Published in: Technology, Business
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,229
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
314
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • I want to do that and more and I’m going to use the highly popular Arduino Microcontroller.
  • Get programmers to team up with non-programmers. Helping out each other is critical to success.
  • Let’s go through some menu items.
  • An optional slide, depending on the audience.
  • Arduino Workshop

    1. 1. An Arduino Workshop By: Andrew Tuline
    2. 2. Overview • • • • • • Introductions Check out the kits Do the drivers work? Experiment time Some reference material Create your own project If you like, you can go at your own pace
    3. 3. Introductions Work on your own or work as a team, and help each other out.
    4. 4. Open ‘er Up 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 1 pcs x for Arduino UNO board 1 pcs x Development expansion board 1 pcs x Breadboard 5 pcs x LED kit (red / blue / yellow) 1 pcs x 74hc595 2 pcs x Buzzers 1 pcs x Seven-segment display (1-digit) 1 pcs x Seven-segment display (4-digit) ~10 pcs x Push button switches 3 pcs x Light dependent resistors 5 pcs x 10K resistors 5 pcs x 1K resistors ~8 pcs x 220R resistors 1 pcs x Adjustable resistor 1 pcs x LM35 temperature sensor 1 pcs x 1602 LCD display 1pcs x PS2 joystick 1 pcs x Stepping motor 1 pcs x Stepping motor driver board 1 pcs x Steering engine (servo) 1 pcs x RGB LED module ~30 pcs x Breadboard cables ~10 pcs x Dupont lines 1 pcs x 2.54mm pin header 2 pcs x Mercury switches 1 pcs x Flame sensor 1 pcs x Infrared receiver 1 pcs x USB cable (80cm) 1 pcs x Remote control 1 pcs x Battery case Err . . most of it should be there.
    5. 5. The Official Arduino Robot > $300 Or you can build your own for less Do a Google search for ‘Sumobot’.
    6. 6. Installing Arduino DE • On Windows 7 • Installs to C:Program Files (x86)Arduino • Your programs are in C:UsersuseridDocumentsArduino • ‘Tools | Board’ should say ‘Arduino UNO’ • In Device Manager, see ‘Ports (COM & LPT)’ • Device drivers in C:Program Files (x86)ArduinodriversFTDI USB Drivers You running 32 bit or 64 bit?
    7. 7. Touring the IDE • ‘File | Examples’ includes lots of examples • ‘File | Upload’ is how we compile and upload our program to the Arduino • ‘Help | Reference’ includes a local copy of the Language Reference
    8. 8. A Breadboard
    9. 9. Simple Schematic
    10. 10. Simple Layout 1) Connect the power bus first. 2) Add the LED and resistor. 3) Connect them to the power bus.
    11. 11. Ohm’s Law Current = Volts / Resistance or I=E/R If we have a 5 volt battery and a 200 ohm resistor. 5 volts / 200 ohms = .025 amps The higher the resistance, the lower the current.
    12. 12. Don’t Blow It Up • • • • An LED needs about 1.4 volts to light up. An LED should run at around .02 amps. If you put 5V into an LED, it could burn out. We’ll need a resistor to reduce the voltage and ensure adequate current. 5V - 1.4V = 3.6V I = E / R is the same as R = E / I R = 3.6 / .02 = 180 ohms
    13. 13. Blinky LED Layout Move the red wire from 5V to pin 13.
    14. 14. Blinky LED Code What happens if you move the red wire to 5V and the black to pin 13.
    15. 15. Button Schematic We’ll light up the internal LED when the switch is pushed.
    16. 16. Button Layout Why the 10K resistor?
    17. 17. Button Code /* Button */ const int buttonPin = 2; const int ledPin = 13; // the number of the pushbutton pin // the number of the LED pin int buttonState = 0; // variable for reading the pushbutton status void setup() { pinMode(ledPin, OUTPUT); pinMode(buttonPin, INPUT); } void loop() { buttonState = digitalRead(buttonPin); // read the state of the pushbutton value if (buttonState == HIGH) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } } You can make this code a lot shorter!
    18. 18. Analog vs. Digital Analog outputs are expensive!
    19. 19. Analog vs. PWM Signals PWM is cheap to implement!
    20. 20. Fade Schematic
    21. 21. Fade Layout
    22. 22. Fade Code /* Fade */ int led = 9; int brightness = 0; int fadeAmount = 5; // the pin that the LED is attached to // how bright the LED is // how many points to fade the LED by void setup() { pinMode(led, OUTPUT); } // declare pin 9 to be an output void loop() { analogWrite(led, brightness); // set the brightness of pin 9 (it’s not really analog) brightness = brightness + fadeAmount; if (brightness == 0 || brightness == 255) { fadeAmount = -fadeAmount ; } // reverse the direction of the fading at the ends of the fade delay(30); } // change the brightness for next time through the loop // wait for 30 milliseconds to see the dimming effect
    23. 23. Analog Read Schematic Try both the potentiometer and the joystick for this experiment.
    24. 24. Analog Read Layout
    25. 25. Analog Read Code /* Analog Read */ void setup() { Serial.begin(9600); } // initialize console output at 9600 bits per second // Press ctrl-shift-m to bring up the console void loop() { int sensorValue = analogRead(A0); Serial.println(sensorValue); delay(10); } // read the input on analog pin 0 // print out the value you read // delay in between reads for stability The potentiometer is logarithmic while the joystick is linear.
    26. 26. Potentiometer Fader • The joystick provides values between 0 – 1023 • The LED takes values between 0 – 255 • We need to scale to fit ledValue = map(joystickValue, 0, 1023, 0, 255); Either divide the sensor value by 4 OR Use the ‘map’ command
    27. 27. Potentiometer Fader Schematic
    28. 28. Potentiometer Fader Code /* Potentiometer Fader */ const int analogInPin = A0; const int analogOutPin = 9; // Analog input pin that the potentiometer is attached to // Analog output pin that the LED is attached to int sensorValue = 0; int outputValue = 0; void setup() { Serial.begin(9600); } void loop() { sensorValue = analogRead(analogInPin); outputValue = map(sensorValue, 0, 1023, 0, 255); analogWrite(analogOutPin, outputValue); Serial.println(outputValue); delay(2); } You could also use the joystick to change the frequency of the fade!
    29. 29. Fader Variations • Hook up the RGB LED (common cathode) • Use the x/y of the joystick to control brightness and fade speed • Use the button to change colours • Adjust the map ranges • Create a colour cycling fader
    30. 30. Light and Sound Schematic
    31. 31. Light and Sound Code /* Light and Sound */ void setup() { Serial.begin(9600); } void loop() { int sensorReading = analogRead(A0); Serial.println(sensorReading); // map the analog input range (in this case, ~80 - 310 from the photo resistor) // to the output pitch range (100 - 1000Hz) int thisPitch = map(sensorReading, 80, 310, 100, 1000); tone(9, thisPitch); delay(1); // play the pitch on pin 9 // delay in between reads for stability } Not quite the same value resistors as on the web site – so fudge it!
    32. 32. Additional Experiments • • • • • • • LCD display Servo Stepper motor Temperature sensor Tilt sensor Shift register IR sensor There’s thousands online!
    33. 33. Now THIS Is A Breadboard
    34. 34. More Cool Parts and Kits • • • • • • • • Ultrasonic Sensor Motor driver board Robot chassis LED Strips 8x8 LED display Color organ board Electroluminescent wire Ardupilot You’ve still got to program it!
    35. 35. Tools • • • • • • • • Needle nose pliers Multi-meter Wire strippers Wire cutter Soldering iron + solder + flux + wick Vise 3rd hand Oscilloscope (for those with $$$) I need strong reading glasses and good light!
    36. 36. Arduino Tutorials • • • • • arduino.cc/tutorial playground.arduino.cc tronixstuff.com/tutorials learn.sparkfun.com/tutorials oomlout.com/a/products/ardx Don’t forget the examples included with the Arduino software
    37. 37. Inspirational Web Sites • • • • www.instructables.com www.tindie.com www.makershed.com www.makezine.com
    38. 38. Sources for Parts • • • • • • • www.robotshop.ca www.sparkfun.com www.leeselectronics.com www.adafruit.com www.ebay.ca www.amazon.com www.dealextreme.com A VISA card helps
    39. 39. University
    40. 40. Hardware Hacker https://diy.org/skills/hardwarehacker
    41. 41. Make Something

    ×