70
Introducing the Arduino CS4062 - Eoin Brazil - Semester 2 - 2009 http://www.flickr.com/photos/collinmel/2317520331/

Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Embed Size (px)

DESCRIPTION

CS4062 Masters in Interactive Media - First Arduino Lecture - March 4th 2009 - University of Limerick. This lecture presents an introduction to the Arduino with examples. This was aimed at a digital media / music technology masters student audience.

Citation preview

Page 2: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

What is Arduino?

The hardware The developmentenvironment The community

Page 3: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

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

Why Arduino?

Page 4: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

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’ Flash Processing PD Max/MSP

Ruby Python PHP Matlab Squeak (Smalltalk)

Page 5: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

``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

Author: Massimo BanziSource: Arduino BookletUnder a Creative Commons License: Attribution-NonCommercial-ShareAlike 2.5

Page 6: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Examples of Arduino

kamil garbacz, udk berlin

Page 7: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Examples of Arduino

kamil garbacz, udk berlin

Page 8: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Examples of Arduino

kamil garbacz, udk berlin

Page 9: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Examples of Arduino

Page 10: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Examples of Arduino

Page 11: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Arduino Capabilities

=Intel 286 Arduino

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 outputs13 digital input/output pins 5 analog input pins 6 analog output pins (PWM only)Digital I/O can read switches and buttons, control LEDs and motors Analog input can read knobs or other varying sensors Analog output can be done with PWM

Page 12: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

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)

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 outputs13 digital input/output pins 5 analog input pins 6 analog output pins (PWM only)Digital I/O can read switches and buttons, control LEDs and motors Analog input can read knobs or other varying sensors Analog output can be done with PWM

Page 13: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

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) - 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)

Layout of an Arduino

Page 14: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

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

Page 15: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Arduino IO

Page 16: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Bluetooth - BlueSmirfInternet - MatchPort

Many others:Wifi, IrDa, Zigbee, etc.

Arduino IO

Page 17: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Motors:DC, Steppers, Servos

Arduino IO

Page 18: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Sensors:Flex, IrDa, Switches,FSR, Accelerometers

Arduino IO

Page 19: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Custom Hardware:e.g. VMusic 2 MP3 player

Arduino IO

Page 20: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Blinking a LED

Page 21: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Diagrams

Wiringdiagram

Schematicdiagram

Wired circuit

Page 22: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

SolderlessBreadboard

+

+

+

+

-

-

-

-

A

B

C

D

E

A

B

C

D

E

F

G

H

I

J

F

G

H

I

J

1 5 10 15 20 25

1 5 10 15 20 25

Page 23: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Stripboard / PerfboardExample

Track(all connected)

Drilled or cut holes(breaks connection)

Page 24: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

stripboard diagramming

Str ipboard Layout P lanning Sheet

Project:

Designed by:

Version:

Date:

Notes:

Actual size stripboard. Hole spacing 0.1” (2.54mm) Tracks run this way

Tips:

• Mark out the Vs and 0V power lines first, then

place the ICs.

• Remember to cut the track between the pins of

an IC. Mark the cuts on the diagram with an X.

• Try to make resistors and axial capacitors lay

flat on the stripboard. Resistors usually require a gap of 4 holes, capacitors a gap of 8 holes.

• Use the actual size grid on th e left to check

component spacing.

• Number the pins of the ICs as

shown.

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

2l1

22

1

2

3

4

8

7

6

5

Version 3 : 3/02 © 2002 Electronics in Meccano www.eleinmec.com

VeeCAD Stripboard Editor, http://veecad.com/index.html

Talk about Eagle for PCBs later

Page 25: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

LEDshort leg is negative & goes to the ground

ResistorNot direction

sensitive

Blogs, YouTube, and Google

Books & first time prototyping advice

Page 26: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009
Page 27: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Expensive but user friendly

Page 28: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Sufficient foralmost all needs

Expensive but user friendly

Page 29: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Sufficient foralmost all needs

Chips and PCBs

Expensive but user friendly

Page 30: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Arduino

ATMega168

Lego Mindstorm NXT

Page 31: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Arduino

ATMega168

Lego Mindstorm NXT

Approx.~€250

Page 32: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Arduino

ATMega168

Approx. ~€25

Lego Mindstorm NXT

Approx.~€250

Page 33: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Arduino

ATMega168

Approx. ~€25

Approx. ~€4

Lego Mindstorm NXT

Approx.~€250

Page 34: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Programming

Page 35: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Programming an Arduino

Write program

Compile (check for errors)

Reset board

Upload to board

Write programs on your Mac/PC Download them into the Arduino board (via USB)Arduino board can then be used by itself

Page 36: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

An Arduino “Sketch” Declare variables at top

Initialize setup() – run once at beginning, set pins

Running loop() – run repeatedly, after setup()

Page 37: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

An Arduino “Sketch”

int ledPin = 13; – led connected to control pin 13

Global Variablesint aSensor = 0; – setup sensor 'aSensor' on analog pin 0

int statePin = LOW; – use this to hold the state of a pin

Page 38: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

An Arduino “Sketch”

setup()

pinMode() – set a pin as input or output

serial.Begin() – setup to `talk' to the computer

Page 39: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

An Arduino “Sketch”

setup()

pinMode(ledPin, Output); – set the pin `ledPin' as an output

serial.Begin(9600); – talk to the computer at 9600 baud rate

Page 40: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

An Arduino “Sketch”

loop()

digitalWrite() – set a digital pin high/low

digitalRead() – read a digital pin’s state

analogRead() – read an analog pin

analogWrite() – write an “analog” PWM value

delay() – wait an amount of time

millis() – get the current tim

Page 41: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Input / Output

14 Digital IO (pins 0 - 13) 6 Analog In (pins 0 - 5) 6 Analog Out (pins 3, 5, 6, 9, 10, 11)

14 Digital IO (pins 0 - 13) can be inputs or outputs as set in software. 6 Analog In (pins 0 - 5) are dedicated analogue input pins. These take analogue values (i.e. voltage readings) and convert them into a number between 0 and 1023. 6 Analog Out (pins 3, 5, 6, 9, 10, 11) these are actually 6 of the digital pins that can be reassigned to do analogue output.

Page 42: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Digital ? Analog ?

Digital – only has two values: on/off

Analog – has many (infinite) values

Computers don’t really do analog - use quantization instead

Page 43: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

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

image from: http://www.engr.colostate.edu/~dga/me307/lectures.html

Page 44: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

IO to/from what? LDR / IR Switch /

Potentiometer / Joystick / Piezo Accelerometer Ultrasonic

Sensors Actuators

Solenoid

Stepper Motor

Other Circuits

Prototype shields

Special ICs LED / Lamps Buzzers

Indicators

Page 45: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

What is a switch?

Page 46: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Hello World!

void setup(){ // start serial port at 9600 bps: Serial.begin(9600);}

void loop(){ Serial.print("Hello World!\n\r"); // wait 2sec for next reading: delay(2000); }

Install latest Arduino IDE from arduino.cc

Run Arduino IDE

Write the code on the left into the editor

Compile / Verify the code by clicking the play button

Before uploading your sketch, check the board and the serial port are correct for your Arduino and for your computer

Menu -> Tools -> Board

Menu -> Tools -> Serial Port

Upload the code from the computer to the Arduino using the upload button

Page 47: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

/* 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 13int 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 }}

Page 48: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

/* 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 13int 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 }}

Initialisesome of the

variables

Page 49: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

/* 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 13int 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 }}

Setup LED pin and serial connection

Page 50: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

/* 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 13int 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 }}

Loop - Reading the serial for info, when

something is received turn the LED on

Page 51: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

/* 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 LEDint 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 }}

Page 52: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

/* 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 LEDint 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 }}

Initialisesome of the

variables

Page 53: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

/* 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 LEDint 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 }}

Setup LED pin, switch pin and

serial connection

Page 54: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

/* 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 LEDint 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 }}

Loop - Reading the button for info, when button is press turn

the LED on and signal the computer

of change

Page 55: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Spooky Skull Example

http://todbot.com/

Page 56: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

To / From Other

Software

Page 57: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Pure Data

Pduino

SimpleMessageSystem

Page 58: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Flash// arduino serial proxy helper// send messages from arduino to your// serial port >> socket// and read it through flash

#define inPin 2

void setup(){ Serial.begin(9600);}void loop(){ byte readValue=digitalRead(inPin); if(readValue == HIGH){ Serial.print("high"); Serial.print(0, BYTE); }}

Serial Proxy (XMLSocket server) a small program that runs on your Mac/PC and keeps a live connection between the serial port and Flash

Page 60: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Animata

Page 61: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Animata

Page 62: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Processing

Page 63: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

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 ?)

Page 64: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Lilypad A set of stitchable controllers,

sensors and actuators enables novices to build their own electronic textiles.

http://www.cs.colorado.edu/~buechley/diy/diy_lilypad_arduino.htmlA Construction Kit for Electronic Textiles - IEEE International Symposium on Wearable Computers (ISWC) 2006.

Page 65: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

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

http://www.thejaguarhouse.com/blog/finalpresentation/wanderlust.html

Page 66: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

Wanderlust Prototype

thesis: http://www.thejaguarhouse.com/blog/wanderlust.pdffinal presentation: http://www.thejaguarhouse.com/blog/finalpresentation/wanderlust.html

Page 67: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

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

Page 68: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

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

Page 69: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

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

Page 70: Arduino Lecture 1 - Interactive Media CS4062 Semester 2 2009

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’’