Your SlideShare is downloading. ×
0
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Arduino Lecture 1 - Introducing the Arduino

41,033

Published on

An introduction to the Arduino platform with some examples and links. Part of the Interactive Media Master's program at the University of Limerick.

An introduction to the Arduino platform with some examples and links. Part of the Interactive Media Master's program at the University of Limerick.

Published in: Technology, News & Politics
5 Comments
74 Likes
Statistics
Notes
No Downloads
Views
Total Views
41,033
On Slideshare
0
From Embeds
0
Number of Embeds
58
Actions
Shares
0
Downloads
4,892
Comments
5
Likes
74
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Introducing the Arduino CS4062 - Eoin Brazil - Semester 2 - 2009 http://www.flickr.com/photos/collinmel/2317520331/
  • 2. What is Arduino? The development The hardware The community environment
  • 3. Why Arduino? artists & designers “opportunistic prototyping” device hacking & reuse “open source hardware” Open Source Physical Computing Platform open source free to inspect & modify community wiki, forums, tutorials
  • 4. The Nuts & Bolts physical computing. er, what? ubiquitous computing, pervasive computing, ambient intelligence, calm computing, everyware, spimes, blogjects, smart objects... tiny computer you can program completely stand-alone, talks to other devices ‘C’ Ruby Flash Python Processing PHP PD Matlab Max/MSP Squeak (Smalltalk)
  • 5. ``Physical Computing is about prototyping with electronics, turning sensors, actuators and microcontrollers into materials for designers and artists.’’ ``It involves the design of interactive objects that can communicate with humans using sensors and actuators controlled by a behaviour implemented as software running inside a microcontroller.’’ Massimo Banzi, Tinker.it & Arduino Co-Founder
  • 6. Examples of Arduino
  • 7. Examples of Arduino
  • 8. Examples of Arduino
  • 9. Examples of Arduino
  • 10. Examples of Arduino
  • 11. Arduino Capabilities = Intel 286 Arduino
  • 12. Arduino Capabilities 16 kBytes of Flash program memory 1 kByte of RAM 16 MHz (Apple II: 1 MHz / Intel 286: 12.5 MHz / Intel Core 2: 3 GHz) inputs and outputs 13 digital input/output pins 5 analog input pins 6 analog output pins (PWM only)
  • 13. Analog Reference pin (orange) Digital Ground (light green) Digital Pins 2-13 (green) Digital Pins 0-1/Serial In/Out - TX/RX (dark green) These pins cannot be used for digital i/o (digitalRead and digitalWrite) if you are also using serial communiation (e.g. Serial.begin). Reset Button - S1 (dark blue) In-circuit Serial Programmer (blue-green) Analog In Pins 0-5 (light blue) Power and Ground Pins (power: orange, grounds: light orange) External Power Supply In (9-12VDC) - X1 (pink) Toggles External Power and USB Power (place jumper on two pins closest to desired supply) - Layout of an Arduino SV1 (purple) USB (used for uploading sketches to the board and for serial communication between the board and the computer; can be used to power the board) (yellow)
  • 14. Arduino Glossary ``sketch’’ - program that runs on the board ``pin’’ - input or output connected to something, e.g. output to an LED, input from switch ``digital’’ - 1 (HIGH) or 0 (LOW) value (i.e. on/off) ``analog’’ - range (0-255 typically), e.g. LED brightness wiring drawing shows the interconnection (physical layout) of all devices and components schematic drawing shows underlying logic may not link back to physical layout
  • 15. Arduino IO
  • 16. Arduino IO Bluetooth - BlueSmirf Internet - MatchPort Many others: Wifi, IrDa, Zigbee, etc.
  • 17. Arduino IO Motors: DC, Steppers, Servos
  • 18. Arduino IO Sensors: Flex, IrDa, Switches, FSR, Accelerometers
  • 19. Arduino IO Custom Hardware: e.g. VMusic 2 MP3 player
  • 20. Blinking a LED
  • 21. Diagrams Wiring diagram Schematic Wired circuit diagram
  • 22. Solderless Breadboard + + - - 1 10 15 20 5 25 A A B B C C D D E E F F G G H H I I J J - 1 10 15 20 5 25 - + +
  • 23. Track (all connected) Drilled or cut holes (breaks connection) Stripboard / Perfboard Example
  • 24. Tips: Stripboard Layout Planning Sheet • Mark out the Vs and 0V power lines first, then place the ICs. Project: Remember to cut the track between the pins of • an IC. Mark the cuts on the diagram with an X. Designed by: Try to make resistors and axial capacitors lay • Version: Actual size stripboard. Hole spacing 0.1” (2.54mm) flat on the stripboard. Resistors usually require a gap of 4 holes, capacitors a gap of 8 holes. Date: Use the actual size grid on th e left to check • Tracks run this way component spacing. Notes: 1 8 Number the pins of the ICs as • 2 7 3 6 shown. 4 5 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 22 22 21 2l1 20 20 19 19 18 18 17 17 16 16 15 15 14 14 13 13 12 12 11 11 10 10 9 9 8 8 7 7 6 6 5 5 4 4 3 3 2 2 1 1 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 Version 3 : 3/02 © 2002 Electronics in Meccano www.eleinmec.com stripboard diagramming
  • 25. Books & first time prototyping advice Blogs,YouTube, and Google Not direction Resistor sensitive LED short leg is negative & goes to the ground
  • 26. Expensive but user friendly
  • 27. Expensive but user friendly Sufficient for almost all needs
  • 28. Expensive but user friendly Sufficient for Chips and almost all needs PCBs
  • 29. Lego Mindstorm NXT Arduino ATMega168
  • 30. Lego Mindstorm NXT Arduino Approx. ATMega168 ~€250
  • 31. Approx. Lego Mindstorm NXT ~€25 Arduino Approx. ATMega168 ~€250
  • 32. Approx. Lego Mindstorm NXT ~€25 Arduino Approx. ATMega168 ~€250 Approx. ~€4
  • 33. Programming
  • 34. Programming an Arduino Write program Compile (check for errors) Reset board Upload to board
  • 35. An Arduino “Sketch” Declare variables at top Initialize setup() – run once at beginning, set pins Running loop() – run repeatedly, after setup()
  • 36. An Arduino “Sketch” int ledPin = 13; – led connected to control pin 13 int aSensor = 0; – setup Global Variables sensor 'aSensor' on analog pin 0 int statePin = LOW; – use this to hold the state of a pin
  • 37. An Arduino “Sketch” pinMode() – set a pin as input or output setup() serial.Begin() – setup to `talk' to the computer
  • 38. An Arduino “Sketch” pinMode(ledPin, Output); – set the pin `ledPin' as an output setup() serial.Begin(9600); – talk to the computer at 9600 baud rate
  • 39. An Arduino “Sketch” digitalWrite() – set a digital pin high/low digitalRead() – read a digital pin’s state analogRead() – read an analog pin loop() analogWrite() – write an “analog” PWM value delay() – wait an amount of time millis() – get the current tim
  • 40. Input / Output 14 Digital IO (pins 0 - 13) 6 Analog In (pins 0 - 5) 6 Analog Out (pins 3, 5, 6, 9, 10, 11)
  • 41. Digital ? Analog ? Digital – only has two values: on/off Analog – has many (infinite) values Computers don’t really do analog - use quantization instead
  • 42. Digital ? Analog ? Many states (Analog) or just two (HIGH/LOW - Digital) Number of states (or “bins”) is resolution Common computer resolutions: 8-bit = 256 states 16-bit = 65,536 states 32-bit = 4,294,967,296 states
  • 43. IO to/from what? Sensors Actuators LDR / IR Solenoid Switch / Stepper Motor Potentiometer / Joystick / Piezo Accelerometer Other Circuits Ultrasonic Prototype shields Indicators Special ICs LED / Lamps Buzzers
  • 44. What is a switch?
  • 45. Hello World! void setup() Install latest Arduino IDE from arduino.cc { Run Arduino IDE // start serial port at 9600 bps: Write the code on the left into the editor Serial.begin(9600); Compile / Verify the code by clicking the play } button Before uploading your sketch, check the board and void loop() the serial port are correct for your Arduino and for { your computer Serial.print(quot;Hello World!nrquot;); Menu -> Tools -> Board // wait 2sec for next reading: Menu -> Tools -> Serial Port delay(2000); } Upload the code from the computer to the Arduino using the upload button
  • 46. /* Blinking LED --- * turns on and off a light emitting diode(LED) connected to a digital * pin, based on data coming over serial */ int ledPin = 13; // LED connected to digital pin 13 int inByte = 0; void setup() { pinMode(ledPin, OUTPUT); // sets the digital pin as output Serial.begin(19200); // initiate serial communication } void loop() { while (Serial.available()>0) { inByte = Serial.read(); } if (inByte>0) { digitalWrite(ledPin, HIGH); // sets the LED on } else { digitalWrite(ledPin, LOW); // sets the LED off } }
  • 47. /* Blinking LED --- * turns on and off a light emitting diode(LED) connected to a digital * pin, based on data coming over serial Initialise */ some of the int ledPin = 13; // LED connected to digital pin 13 int inByte = 0; variables void setup() { pinMode(ledPin, OUTPUT); // sets the digital pin as output Serial.begin(19200); // initiate serial communication } void loop() { while (Serial.available()>0) { inByte = Serial.read(); } if (inByte>0) { digitalWrite(ledPin, HIGH); // sets the LED on } else { digitalWrite(ledPin, LOW); // sets the LED off } }
  • 48. /* Blinking LED --- * turns on and off a light emitting diode(LED) connected to a digital * pin, based on data coming over serial */ int ledPin = 13; // LED connected to digital pin 13 int inByte = 0; void setup() { pinMode(ledPin, OUTPUT); // sets the digital pin as output Serial.begin(19200); // initiate serial communication } void loop() Setup LED pin and { while (Serial.available()>0) { serial connection inByte = Serial.read(); } if (inByte>0) { digitalWrite(ledPin, HIGH); // sets the LED on } else { digitalWrite(ledPin, LOW); // sets the LED off } }
  • 49. /* Blinking LED --- * turns on and off a light emitting diode(LED) connected to a digital * pin, based on data coming over serial */ int ledPin = 13; // LED connected to digital pin 13 int inByte = 0; void setup() { pinMode(ledPin, OUTPUT); // sets the digital pin as output Serial.begin(19200); // initiate serial communication Loop - Reading the } serial for info, when void loop() { inByte = Serial.read(); something is received while (Serial.available()>0) { } turn LED on LED on the if (inByte>0) { digitalWrite(ledPin, HIGH); // sets the } else { digitalWrite(ledPin, LOW); // sets the LED off } }
  • 50. /* Digital reading, turns on and off a light emitting diode (LED) connected to digital * pin 13, when pressing a pushbutton attached to pin 7. It illustrates the concept of * Active-Low, which consists in connecting buttons using a 1K to 10K pull-up resistor. */ int ledPin = 13; // choose the pin for the LED int inPin = 7; // choose the input pin (button) int buttonval = 0; // variable for reading the pin status void setup() { pinMode(ledPin, OUTPUT); // set LED as output pinMode(inPin, INPUT); // set pushbutton as input Serial.begin(19200); // start serial communication to computer } void loop() { buttonval = digitalRead(inPin); // read the pin and get the button's state if (buttonval == HIGH) { // check if the input is HIGH (button released) digitalWrite(ledPin, LOW); // turn LED OFF Serial.write('0'); // Button off (0) sent to computer } else { digitalWrite(ledPin, HIGH); // turn LED ON Serial.write('1'); // Button on (1) sent to computer } }
  • 51. /* Digital reading, turns on and off a light emitting diode (LED) connected to digital * pin 13, when pressing a pushbutton attached to pin 7. It illustrates the concept of * Active-Low, which consists in connecting buttons using a 1K to 10K pull-up resistor. Initialise */ int ledPin = 13; // choose the pin for the LED some of the int inPin = 7; // choose the input pin (button) int buttonval = 0; // variable for reading the pin status variables void setup() { pinMode(ledPin, OUTPUT); // set LED as output pinMode(inPin, INPUT); // set pushbutton as input Serial.begin(19200); // start serial communication to computer } void loop() { buttonval = digitalRead(inPin); // read the pin and get the button's state if (buttonval == HIGH) { // check if the input is HIGH (button released) digitalWrite(ledPin, LOW); // turn LED OFF Serial.write('0'); // Button off (0) sent to computer } else { digitalWrite(ledPin, HIGH); // turn LED ON Serial.write('1'); // Button on (1) sent to computer } }
  • 52. /* Digital reading, turns on and off a light emitting diode (LED) connected to digital * pin 13, when pressing a pushbutton attached to pin 7. It illustrates the concept of * Active-Low, which consists in connecting buttons using a 1K to 10K pull-up resistor. */ Setup LED pin, int ledPin = 13; // choose the pin for the LED int inPin = 7; // choose the input pin (button) switch pin and int buttonval = 0; // variable for reading the pin status serial connection void setup() { pinMode(ledPin, OUTPUT); // set LED as output pinMode(inPin, INPUT); // set pushbutton as input Serial.begin(19200); // start serial communication to computer } void loop() { buttonval = digitalRead(inPin); // read the pin and get the button's state if (buttonval == HIGH) { // check if the input is HIGH (button released) digitalWrite(ledPin, LOW); // turn LED OFF Serial.write('0'); // Button off (0) sent to computer } else { digitalWrite(ledPin, HIGH); // turn LED ON Serial.write('1'); // Button on (1) sent to computer } }
  • 53. /* Digital reading, turns on and off a light emitting diode (LED) connected to digital * pin 13, when pressing a pushbutton attached to pin 7. It illustrates the concept of * Active-Low, which consists in connecting buttons using a 1K to 10K pull-up resistor. Loop - Reading the */ int ledPin = 13; // choose the pin for the LED int inPin = 7; // choose the input pin (button) button for info, when int buttonval = 0; // variable for reading the pin status button is press turn void setup() { pinMode(inPin, INPUT); // set pushbutton asthe LED on and pinMode(ledPin, OUTPUT); // set LED as output input signal the computer Serial.begin(19200); // start serial communication to computer } ofthe button's state change void loop() { buttonval = digitalRead(inPin); // read the pin and get if (buttonval == HIGH) { // check if the input is HIGH (button released) digitalWrite(ledPin, LOW); // turn LED OFF Serial.write('0'); // Button off (0) sent to computer } else { digitalWrite(ledPin, HIGH); // turn LED ON Serial.write('1'); // Button on (1) sent to computer } }
  • 54. Spooky Skull Example
  • 55. To / From Other Software
  • 56. Pure Data Pduino SimpleMessageSystem
  • 57. Flash // arduino serial proxy helper // send messages from arduino to your Serial Proxy // serial port >> socket // and read it through flash (XMLSocket server) a small program that runs #define inPin 2 on your Mac/PC and void setup(){ keeps a live connection Serial.begin(9600); between the serial port } void loop(){ and Flash byte readValue=digitalRead(inPin); if(readValue == HIGH){ Serial.print(quot;highquot;); Serial.print(0, BYTE); } }
  • 58. Flash Example http://file-error.net/1o1o1o1o1/?Physical_Computing_and_Interaction:Arduino:Arduino_VS_Flash http://protolab.pbwiki.com/Arduino2Flash
  • 59. Animata
  • 60. Animata
  • 61. Processing
  • 62. Interactive Objects / Displays Spooky Skull Example - Tod E. Kurt Lilypad - Leah Buechley Wanderlust - Hector Ouilhet Ambient Auditory Group Presence Display Hanging Gardens Dawn07, Dawn08, Dawn 09 (What will you do ?)
  • 63. Lilypad A set of stitchable controllers, sensors and actuators enables novices to build their own electronic textiles.
  • 64. Wanderlust A mobile service, uses identities and needs (in terms of time and distance) to explore spaces as well to meet people with similar interests. Ad-Hoc Social Networking tool as it provides suggestions from people and places that can be relevant to you. The prototype used physical tokens (reels) to represent a user’s different identities. Each reel is mapped to an identity; when this reel is introduced to the View- Master it will play a video showing the contents and attributes of this identity. Consists of a original View-Master (red), wooden body, Arduino board, RFID reader & antenna
  • 65. Wanderlust Prototype
  • 66. Ambient Auditory Group Presence Display: Designed to explore, using concurrent auditory icons, the issue of group awareness (ICAD07 paper) Presence and activity are conveyed by changes in the soundscape Ruby, Python, C, Growl and Boodler Semi-Public Display for Small, Co- located Groups
  • 67. Hanging Gardens: Collaboration with Jurgen Simpson Two Places - UL / Ormeau, Belfast Network of Speakers and Sensors Arduino, Ruby, Max/MSP 2 field of insects Circadian rhythm Walls and nodes
  • 68. Hanging Gardens: Collaboration with Jurgen Simpson Two Places - UL / Ormeau, Belfast Network of Speakers and Sensors Arduino, Ruby, Max/MSP 2 field of insects Circadian rhythm Walls and nodes
  • 69. Useful Links Arduino - http://www.arduino.cc/ Wanderlust - http://www.thejaguarhouse.com/blog/ Arduino lectures - http://www.slideshare.net/eoinbrazil Tod E. Kurt’s blog (check his Spooky Arduino projects) - http://todbot.com/ blog/category/arduino/ ITP Physical Computing - http://itp.nyu.edu/physcomp/Intro/HomePage The Art and Craft of Toy Design - http://yg.typepad.com/makingtoys2/ Lilypad - http://www.cs.colorado.edu/~buechley/diy/diy_lilypad_arduino.html Usman Haque and Adam Somlai-Fischer - ``Low tech sensors and actuators for artists and architects’’

×