SlideShare a Scribd company logo
1 of 71
Download to read offline
Making Things Move,
Lighting Things Up and
  AVR Programming
  CS4062 - Eoin Brazil - Semester 2 - 2009
Servos and Motors
 Motion
   linear or
rotary                      Stepper      Servo
   conversion
issues

 Types
  DC
                 Gearhead             DC Motor
  Servo
  Stepper
  Gearhead
DC Motor

 2 Connections
  Continual spin, given current & voltage
  Reversing current, reverses the direction
  Increasing the voltage, spins faster,
decreasing the voltage, slows the spin
  High speed but low torque
  Gearbox can add torque but at the expense
of speed
DC Motor Example
DC Motor Example
DC Motor Example
Three Pieces
Gearhead Motor
 DC Motor with gearbox
  Not fast but provide more torque

 Servo Motor                                 Gearhead
  Gearhead motor with position feedback
  Feedback is often from potentiometer
  Pulsing the motor moves it to particular
position within 180 degree range
  Can’t move 360 degrees but can be
                                                Servo
positioned precisely within the 180 degree
range
Stepper Motor
  Precise positioning &
360 degrees range
   Move in discrete steps around a circle
   A 200 step motor would move 1.8 degrees
 per step around the full 360 degrees
   Continuous rotation in either direction
   Good torque
   Complex to connect
Solenoids and
                    Actuators
                                    Microactuators

  Linear
Motion                           Actuator
  Pull or Push

  Types
                      Solenoid
  Solenoid
  Actuator
  Microactuator
Motor Characteristics
gears or direct
rated voltage
current (efficiency) - stall / running
speed - spin / rpm, rps, Hz
torque
size, shaft diameter, shaft length
position resolution (Servos & Steppers)
Advanced Mediation
  Lisa McElligott, 2000
  interactive confessional box
  used real confessional box
  confessor was computer
program
  interacted using a voice interface.
  scripted interactions with
random noises to add to
immersion
  suspension of disbelief
  realism
Weave Mirror
                                         Daniel Rozin,
                                       Weave Mirror,
                                       2007



  Mechanical mirror
  Any person standing in front of one of
these pieces is instantly reflected on its
surface.                                                   Side and back
                                                         views
  Uses video cameras, motors and
computers to achieve mirroring
  Sound aspect - soothing sound
Weave Mirror
  Daniel Rozin,
Weave Mirror,
2007
Organic Energy Cloud
Motorised Cloud
PWM
  Analog input / output
  Duration of the digital pulse of voltage
  Microcontroller - HIGH 5V or LOW 0V
  ``Fake’’ it using PWM
  Duty cycle, ratio from low to high to low cycle
   LED dimming, DC Motor speed control, Piezo
speakers, RC Servo positioning
Pulse Width
Modulation
Wiring
            Diagram




Schematic
 Diagram
RC Servo Motor
  Servo Motor
Connections on Arduino
   Black wire would go to Grd pin
   Red wire would go to 5V power pin
    White wire would go to one of the digital
 pins on the board
   Colours can vary, Ground (black or
 brown), Power (red), Control (orange, yellow
 or white)
/*
 * NewSerialServo
 * --------------
 * Servo control from the Serial port
 *
 * Alteration of the control interface to use < and > keys
 * to slew the servo horn left and right. Works best with
 * the Linux/Mac terminal quot;screenquot; program.
 *
 * Created 10 December 2007
 * copyleft 2007 Brian D. Wendt
 * http://principialabs.com/
 *
 * Adapted from code by Tom Igoe, http://itp.nyu.edu/physcomp/Labs/Servo
 */

/** Adjust these values for your servo and setup, if necessary **/
int servoPin = 2; // control pin for servo motor
int minPulse = 600; // minimum servo position
int maxPulse = 2400; // maximum servo position
int turnRate = 100; // servo turn rate increment (larger value, faster rate)
int refreshTime = 20; // time (ms) between pulses (50Hz)

/** The Arduino will calculate these values for you **/
                                                                           continued
int centerServo;    // center servo position
int pulseWidth;     // servo pulse width
                                                                            on next
int moveServo;      // raw user input
long lastPulse = 0; // recorded time (ms) of the last pulse

                                                                             slide
/*

                                                            Setup the necessary
 * NewSerialServo
 * --------------
 * Servo control from the Serial port

                                                             control values and
 *
 * Alteration of the control interface to use < and > keys
 * to slew the servo horn left and right. Works best with

                                                             variables to store
 * the Linux/Mac terminal quot;screenquot; program.
 *
 * Created 10 December 2007

                                                                information
 * copyleft 2007 Brian D. Wendt
 * http://principialabs.com/
 *
 * Adapted from code by Tom Igoe, http://itp.nyu.edu/physcomp/Labs/Servo
 */

/** Adjust these values for your servo and setup, if necessary **/
int servoPin = 2; // control pin for servo motor
int minPulse = 600; // minimum servo position
int maxPulse = 2400; // maximum servo position
int turnRate = 100; // servo turn rate increment (larger value, faster rate)
int refreshTime = 20; // time (ms) between pulses (50Hz)

/** The Arduino will calculate these values for you **/
                                                                           continued
int centerServo;    // center servo position
int pulseWidth;     // servo pulse width
                                                                            on next
int moveServo;      // raw user input
long lastPulse = 0; // recorded time (ms) of the last pulse

                                                                             slide
// Main program setup
void setup() {
  pinMode(servoPin, OUTPUT); // Set servo pin as an output pin
  centerServo = maxPulse - ((maxPulse - minPulse)/2);
  pulseWidth = centerServo; // Give the servo a starting point (or it floats)
  Serial.begin(9600);
  Serial.println(quot;   Arduino Serial Servo Controlquot;);
  Serial.println(quot;Press < or > to move, spacebar to centerquot;);
  Serial.println();
}

void loop() {
 // wait for serial input
 if (Serial.available() > 0) {
   // read the incoming byte:
   moveServo = Serial.read();

  // ASCII '<' is 44, ASCII '>' is 46 (comma and period, really)
  if (moveServo == 44) { pulseWidth = pulseWidth - turnRate; }
  if (moveServo == 46) { pulseWidth = pulseWidth + turnRate; }
                                                                               continued
  if (moveServo == 32) { pulseWidth = centerServo; }
  // stop servo pulse at min and max
                                                                                on next
  if (pulseWidth > maxPulse) { pulseWidth = maxPulse; }
  if (pulseWidth < minPulse) { pulseWidth = minPulse; }
 }
                                                                                 slide
// Main program setup
void setup() {
  pinMode(servoPin, OUTPUT); // Set servo pin as an output pin
  centerServo = maxPulse - ((maxPulse - minPulse)/2);
  pulseWidth = centerServo; // Give the servo a starting point (or it floats)
  Serial.begin(9600);
                                                                 Setup servo its
  Serial.println(quot;   Arduino Serial Servo Controlquot;);
  Serial.println(quot;Press < or > to move, spacebar to centerquot;);

                                                                pin, its pulse, and
  Serial.println();
}

                                                               its position. Setup
void loop() {
 // wait for serial input
                                                                serial connection
 if (Serial.available() > 0) {
   // read the incoming byte:
   moveServo = Serial.read();
                                                                   for control
  // ASCII '<' is 44, ASCII '>' is 46 (comma and period, really)
  if (moveServo == 44) { pulseWidth = pulseWidth - turnRate; }
  if (moveServo == 46) { pulseWidth = pulseWidth + turnRate; }
                                                                               continued
  if (moveServo == 32) { pulseWidth = centerServo; }
  // stop servo pulse at min and max
                                                                                on next
  if (pulseWidth > maxPulse) { pulseWidth = maxPulse; }
  if (pulseWidth < minPulse) { pulseWidth = minPulse; }
 }
                                                                                 slide
// Main program setup
void setup() {
  pinMode(servoPin, OUTPUT); // Set servo pin as an output pin
  centerServo = maxPulse - ((maxPulse - minPulse)/2);
  pulseWidth = centerServo; // Give the servo a starting point (or it floats)
  Serial.begin(9600);
  Serial.println(quot;   Arduino Serial Servo Controlquot;);
  Serial.println(quot;Press < or > to move, spacebar to centerquot;);
  Serial.println();
                                    The serial input controls the
}

                                   servo by the ‘<‘ or ‘>’ and keep
void loop() {
 // wait for serial input
 if (Serial.available() > 0) {
                                   its speed within the safe range
   // read the incoming byte:
   moveServo = Serial.read();

  // ASCII '<' is 44, ASCII '>' is 46 (comma and period, really)
  if (moveServo == 44) { pulseWidth = pulseWidth - turnRate; }
  if (moveServo == 46) { pulseWidth = pulseWidth + turnRate; }
                                                                               continued
  if (moveServo == 32) { pulseWidth = centerServo; }
  // stop servo pulse at min and max
                                                                                on next
  if (pulseWidth > maxPulse) { pulseWidth = maxPulse; }
  if (pulseWidth < minPulse) { pulseWidth = minPulse; }
 }
                                                                                 slide
// pulse the servo every 20 ms (refreshTime) with current pulseWidth
// this will hold the servo's position if unchanged, or move it if changed
if (millis() - lastPulse >= refreshTime) {
  digitalWrite(servoPin, HIGH); // start the pulse
  delayMicroseconds(pulseWidth); // pulse width
  digitalWrite(servoPin, LOW); // stop the pulse
  lastPulse = millis();       // save the time of the last pulse
}
}
// END of Main program
Pulse the servo every 20ms, this is where the
desired change actually happens and its based
         on the previous serial input
// pulse the servo every 20 ms (refreshTime) with current pulseWidth
// this will hold the servo's position if unchanged, or move it if changed
if (millis() - lastPulse >= refreshTime) {
  digitalWrite(servoPin, HIGH); // start the pulse
  delayMicroseconds(pulseWidth); // pulse width
  digitalWrite(servoPin, LOW); // stop the pulse
  lastPulse = millis();       // save the time of the last pulse
}
}
// END of Main program
Switches
  Types and contacts
  Knives and toggles                           Knive (SPST)
    Single pole = control of one circuit
    Double pole = two circuits controlled at
  once
    Single throw = one path for circuit
    Double throw = two paths for circuit
                                               Toggle (SPDT)
   Foot, tape / mat, roller,
hair trigger, tilt, magnetic /
reed
High and Low
    Practical switching
Arduino looks for 0V (low) to 5V (high)
Digital inputs float between these values
Resistor “pulls” input to ground (0 volts)
Pressing switch “pushes” input to 5 volts
Switch pressed = HIGH, not pressed = LOW
setup(): pinMode(myPin,INPUT)
loop(): digitalRead(myPin)
Sketching your work
                Bill Verplank
                Interaction Design
              Sketchbook

                Bill Buxton
Embodiment using
  Animatronics
               Stefan Marti
               2005, Autonomous
             Interactive
             Intermediaries
              2005, Physical
             Embodiments for Mobile
             Communication Agents
Kinematics
  Gears and mechanical
models
   Geometry of pure motion without
 reference to force or mass
   Cornell University Library, Kinematic
                                               Examples from
 Models for Design Digital Library
                                              www.flying-pig.co.uk
 (KMODDL)
  Tutorials, models, e-books, e.g. Linkages
   Chapter 3 in Building Robot Drive
 Trains
PWM Tutorials
ITP Servo tutorial
Principial Labs Arduino Servo
Driving a Unipolar Stepper Motor
Driving a Bipolar Stepper Motor           ITP Servo lab, uses
                                        a potentiometer to
Making an RC Servo wall following car   control the servo.
Arduino Library
Software Servo Library
  attach(int) Turn a pin into a servo driver.
  detach() Release a pin from servo driving.
  write(int) Set the angle of the servo in degrees, 0 to 180.
  read() return that value set with the last write().
  attached() return 1 if the servo is currently attached.
  refresh() must call once every 50ms to keep servos updated, won't call more than
every 20ms
  setMinimumPulse(uint16_t) set the duration of the 0 degree pulse in
microseconds. (default minimum value is 544 microseconds)
 setMaximumPulse(uint16_t) set the duration of the 180 degree pulse in
microseconds. (default maximum pluse value is 2400 microsconds)
  Need to first send position with write() before you can receive any control signals
Projects and
Prototyping Trade-offs
Projects and
   Prototyping Trade-offs

Re-programmable
Projects and
Prototyping Trade-offs
               Size
              matters
Capacitors



Stores charge                 With resistors
I = C * dV/dt                 RC Circuit, parallel or series
                              low-pass or high-pass filtering
removal of electrical noise
Resistor Color Code
 4-band Color Code
                                                                    10K ! ± 5%



5 - band Color Code
                                                               47.5 K ! ± 1%



6 - band Color Code
                                                                    276 ! ± 5%




                                          Multiplier    Tolerance
                                          SLV 0.01      SLV ± 10%
  1st Digit       2nd Digit   3rd Digit   GLD 0.1                           Temperature
                                                        GLD ± 5%
                                                                             Coefficient
  BLK-0           BLK-0        BLK-0       BLK-1
                                                                           BRN-100ppm
  BRN-1           BRN-1        BRN-1       BRN-10       BRN ± 1%
                                                                           RED-50ppm
  RED-2           RED-2        RED-2      RED-100       RED ± 2%
                                                                           ORN-15ppm
  ORN-3           ORN-3       ORN-3       ORN-1K
                                                                           YEL-25ppm
                                          YEL-10K
  YEL-4           YEL-4        YEL-4
                                          GRN-100K
  GRN-5           GRN-5       GRN-5                    GRN ± 0.5%
  BLU-6           BLU-6        BLU-6      BLU-1M       BLU- ± 0.25%
  VIO-7           VIO-7        VIO-7      VIO-10M      VIO ± 0.1%
  GRY-8           GRY-8       GRY-8
                                                        GRY-8
 WHT-9           WHT-9        WHT-9
Measuring Resistance
Measuring Voltage
Diodes
  LEDs, Zener, Schottky, Photo
  Pass current in one direction
only
  Forward voltage drop
           e.g. forward voltage drop of 0.7 V in circuit where
         input is 5V will have voltage of 4.3V on its far side

    Rectification
           Removal of negative voltages from signal, i.e. a
         bridge rectifier
  LED, 1.6V forward voltage drop, current limit 36mA, circuit
total voltage 5V.
 VR = 5 - 1.6 = 3.4V
  R = V / I = 3.4 / 0.036 = 94.44 Ohm (at least 100 Ohm)
  P = V * I = 3.4 * 0.036 = 0.1224 W (at least 0.125W)
RGB LEDs
RGB LEDs
RGB LEDs
Ambient orb   Cube of LEDS
RGB LEDs
TiniTinct, Arduino-based monome compatible
AVR Programmer
AVR ATTiny13 Blinky
AVR ATTiny13 Blinky
/* Two LEDs, tied to pin b0 and to b1 which correspond to physical pins 5 and 6 on ATTINY13 are turned
on for 100ms and then off for 200ms
*/

#include <avr/io.h>
#define F_CPU 1000000 // set to 1 MHz as delay.h needs F_CPU
#include <util/delay.h>
#include quot;pin_macros.hquot; // Leah Buechley's pin macros for AVRs - very useful

int main(void)
{   // Set Port B pins for 3 and 4 as outputs
    b0_output;	 //initialize LED pin
    b1_output;	 //initialize LED pin
    b0_high;	    //LED is off
    b1_high;	    //LED is off
	
    DDRB = 0x18; // In binary this is 0001 1000 (note that is bit 3 and 4)

    for ( ; 1==1 ; ) // loop while 1 equals 1 - forever - C style loop
    {
	      // Set Port B pins for 3 and 4 as HIGH (i.e. turn the LEDs on)
	      b0_low;	 	        //LED is on
	      b1_low;	 	        //LED is on
       _delay_loop_2(65535);
	      b0_high;	 	       //LED is off
	      b1_high;	 	       //LED is off
       _delay_loop_2(65535);
    }
    return 1;
}
/* Two LEDs, tied to pin b0 and to b1 which correspond to physical pins 5 and 6 on ATTINY13 are turned
on for 100ms and then off for 200ms
*/

#include <avr/io.h>

                                                                             Include the
#define F_CPU 1000000 // set to 1 MHz as delay.h needs F_CPU
#include <util/delay.h>
#include quot;pin_macros.hquot; // Leah Buechley's pin macros for AVRs - very useful
                                                                          libraries and set
int main(void)
                                                                         the speed of chip
{   // Set Port B pins for 3 and 4 as outputs
    b0_output;	 //initialize LED pin
    b1_output;	 //initialize LED pin
    b0_high;	    //LED is off
    b1_high;	    //LED is off
	
    DDRB = 0x18; // In binary this is 0001 1000 (note that is bit 3 and 4)

    for ( ; 1==1 ; ) // loop while 1 equals 1 - forever - C style loop
    {
	      // Set Port B pins for 3 and 4 as HIGH (i.e. turn the LEDs on)
	      b0_low;	 	        //LED is on
	      b1_low;	 	        //LED is on
       _delay_loop_2(65535);
	      b0_high;	 	       //LED is off
	      b1_high;	 	       //LED is off
       _delay_loop_2(65535);
    }
    return 1;
}
/* Two LEDs, tied to pin b0 and to b1 which correspond to physical pins 5 and 6 on ATTINY13 are turned
on for 100ms and then off for 200ms
*/

#include <avr/io.h>
#define F_CPU 1000000 // set to 1 MHz as delay.h needs F_CPU
#include <util/delay.h>
#include quot;pin_macros.hquot; // Leah Buechley's pin macros for AVRs - very useful

                                                           Setup LED pins, Data
int main(void)
{   // Set Port B pins for 3 and 4 as outputs
                                                           Direction Register and
    b0_output;	 //initialize LED pin
    b1_output;	 //initialize LED pin
                                                               turn LEDS off.
    b0_high;	    //LED is off
    b1_high;	    //LED is off
	
    DDRB = 0x18; // In binary this is 0001 1000 (note that is bit 3 and 4)

    for ( ; 1==1 ; ) // loop while 1 equals 1 - forever - C style loop
    {
	      // Set Port B pins for 3 and 4 as HIGH (i.e. turn the LEDs on)
	      b0_low;	 	        //LED is on
	      b1_low;	 	        //LED is on
       _delay_loop_2(65535);
	      b0_high;	 	       //LED is off
	      b1_high;	 	       //LED is off
       _delay_loop_2(65535);
    }
    return 1;
}
/* Two LEDs, tied to pin b0 and to b1 which correspond to physical pins 5 and 6 on ATTINY13 are turned
on for 100ms and then off for 200ms
*/

#include <avr/io.h>
#define F_CPU 1000000 // set to 1 MHz as delay.h needs F_CPU
#include <util/delay.h>
#include quot;pin_macros.hquot; // Leah Buechley's pin macros for AVRs - very useful

                                                          Loop - Turn the pins
int main(void)
{   // Set Port B pins for 3 and 4 as outputs
                                                         on, wait for 262ms, and
    b0_output;	 //initialize LED pin
    b1_output;	 //initialize LED pin
                                                             turn off. Repeat.
    b0_high;	    //LED is off
    b1_high;	    //LED is off
	
    DDRB = 0x18; // In binary this is 0001 1000 (note that is bit 3 and 4)

    for ( ; 1==1 ; ) // loop while 1 equals 1 - forever - C style loop
    {
	      // Set Port B pins for 3 and 4 as HIGH (i.e. turn the LEDs on)
	      b0_low;	 	        //LED is on
	      b1_low;	 	        //LED is on
       _delay_loop_2(65535);
	      b0_high;	 	       //LED is off
	      b1_high;	 	       //LED is off
       _delay_loop_2(65535);
    }
    return 1;
}
# Makefile for sample_led_program for ATtiny13 chip
# Note: to use makefile with a different chip change all
# mmcu statements (-mmcu=attiny13) to reflect new chip
# also change the part option (-p t13) for the avrdude install command

# default target when quot;makequot; is run w/o arguments
all: sample_led_program.rom

# compile sample_led_program.c into sample_led_program.o
sample_led_program.o: sample_led_program.c
	     avr-gcc -c -g -O0 -Wall -mmcu=attiny13 sample_led_program.c -o sample_led_program.o

# link up sample_led_program.o into sample_led_program.elf
sample_led_program.elf: sample_led_program.o
	      avr-gcc sample_led_program.o -Wall,-nm,-Map=sample_led_program.map,--cref -
mmcu=attiny13 -o sample_led_program.elf

# copy ROM (FLASH) object out of sample_led_program.elf into sample_led_program.rom
sample_led_program.rom: sample_led_program.elf
	     avr-objcopy -O ihex sample_led_program.elf sample_led_program.rom

# command to program chip (invoked by running quot;make installquot;)
install:
	       avrdude -c usbtiny -p t13 -e -U flash:w:sample_led_program.rom

# command to clean up junk (no source files) (invoked by quot;make cleanquot;)
clean:
	      rm -f *.o *.rom *.elf *.map *~
# Makefile for sample_led_program for ATtiny13 chip
# Note: to use makefile with a different chip change all
# mmcu statements (-mmcu=attiny13) to reflect new chip
# also change the part option (-p t13) for the avrdude install command

                                                       When Make is run,
# default target when quot;makequot; is run w/o arguments
all: sample_led_program.rom
                                                         needs a target
# compile sample_led_program.c into sample_led_program.o
sample_led_program.o: sample_led_program.c
	     avr-gcc -c -g -O0 -Wall -mmcu=attiny13 sample_led_program.c -o sample_led_program.o

# link up sample_led_program.o into sample_led_program.elf
sample_led_program.elf: sample_led_program.o
	      avr-gcc sample_led_program.o -Wall,-nm,-Map=sample_led_program.map,--cref -
mmcu=attiny13 -o sample_led_program.elf

# copy ROM (FLASH) object out of sample_led_program.elf into sample_led_program.rom
sample_led_program.rom: sample_led_program.elf
	     avr-objcopy -O ihex sample_led_program.elf sample_led_program.rom

# command to program chip (invoked by running quot;make installquot;)
install:
	       avrdude -c usbtiny -p t13 -e -U flash:w:sample_led_program.rom

# command to clean up junk (no source files) (invoked by quot;make cleanquot;)
clean:
	      rm -f *.o *.rom *.elf *.map *~
# Makefile for sample_led_program for ATtiny13 chip
# Note: to use makefile with a different chip change all
# mmcu statements (-mmcu=attiny13) to reflect new chip
# also change the part option (-p t13) for the avrdude install command

                                                      Use avr-gcc to compile
# default target when quot;makequot; is run w/o arguments
all: sample_led_program.rom
                                                           ‘c’ program
# compile sample_led_program.c into sample_led_program.o
sample_led_program.o: sample_led_program.c
	     avr-gcc -c -g -O0 -Wall -mmcu=attiny13 sample_led_program.c -o sample_led_program.o

# link up sample_led_program.o into sample_led_program.elf
sample_led_program.elf: sample_led_program.o
	      avr-gcc sample_led_program.o -Wall,-nm,-Map=sample_led_program.map,--cref -
mmcu=attiny13 -o sample_led_program.elf

# copy ROM (FLASH) object out of sample_led_program.elf into sample_led_program.rom
sample_led_program.rom: sample_led_program.elf
	     avr-objcopy -O ihex sample_led_program.elf sample_led_program.rom

# command to program chip (invoked by running quot;make installquot;)
install:
	       avrdude -c usbtiny -p t13 -e -U flash:w:sample_led_program.rom

# command to clean up junk (no source files) (invoked by quot;make cleanquot;)
clean:
	      rm -f *.o *.rom *.elf *.map *~
# Makefile for sample_led_program for ATtiny13 chip
# Note: to use makefile with a different chip change all
# mmcu statements (-mmcu=attiny13) to reflect new chip
# also change the part option (-p t13) for the avrdude install command

                                                    Use avr-gcc on `o’ obj
# default target when quot;makequot; is run w/o arguments
all: sample_led_program.rom
                                                    file to create `elf’ file
# compile sample_led_program.c into sample_led_program.o
sample_led_program.o: sample_led_program.c
	     avr-gcc -c -g -O0 -Wall -mmcu=attiny13 sample_led_program.c -o sample_led_program.o

# link up sample_led_program.o into sample_led_program.elf
sample_led_program.elf: sample_led_program.o
	      avr-gcc sample_led_program.o -Wall,-nm,-Map=sample_led_program.map,--cref -
mmcu=attiny13 -o sample_led_program.elf

# copy ROM (FLASH) object out of sample_led_program.elf into sample_led_program.rom
sample_led_program.rom: sample_led_program.elf
	     avr-objcopy -O ihex sample_led_program.elf sample_led_program.rom

# command to program chip (invoked by running quot;make installquot;)
install:
	       avrdude -c usbtiny -p t13 -e -U flash:w:sample_led_program.rom

# command to clean up junk (no source files) (invoked by quot;make cleanquot;)
clean:
	      rm -f *.o *.rom *.elf *.map *~
# Makefile for sample_led_program for ATtiny13 chip
# Note: to use makefile with a different chip change all
# mmcu statements (-mmcu=attiny13) to reflect new chip
# also change the part option (-p t13) for the avrdude install command

                                                    Use avr-objcopy to
# default target when quot;makequot; is run w/o arguments

                                                create rom from elf file
all: sample_led_program.rom

# compile sample_led_program.c into sample_led_program.o
sample_led_program.o: sample_led_program.c
	     avr-gcc -c -g -O0 -Wall -mmcu=attiny13 sample_led_program.c -o sample_led_program.o

# link up sample_led_program.o into sample_led_program.elf
sample_led_program.elf: sample_led_program.o
	      avr-gcc sample_led_program.o -Wall,-nm,-Map=sample_led_program.map,--cref -
mmcu=attiny13 -o sample_led_program.elf

# copy ROM (FLASH) object out of sample_led_program.elf into sample_led_program.rom
sample_led_program.rom: sample_led_program.elf
	     avr-objcopy -O ihex sample_led_program.elf sample_led_program.rom

# command to program chip (invoked by running quot;make installquot;)
install:
	       avrdude -c usbtiny -p t13 -e -U flash:w:sample_led_program.rom

# command to clean up junk (no source files) (invoked by quot;make cleanquot;)
clean:
	      rm -f *.o *.rom *.elf *.map *~
# Makefile for sample_led_program for ATtiny13 chip
# Note: to use makefile with a different chip change all
# mmcu statements (-mmcu=attiny13) to reflect new chip
# also change the part option (-p t13) for the avrdude install command
                                                        Use avrdube and a
# default target when quot;makequot; is run w/o arguments

                                                     usbtiny to copy to the
all: sample_led_program.rom

# compile sample_led_program.c into sample_led_program.o
                                                            ATtiny13 chip
sample_led_program.o: sample_led_program.c
	     avr-gcc -c -g -O0 -Wall -mmcu=attiny13 sample_led_program.c -o sample_led_program.o

# link up sample_led_program.o into sample_led_program.elf
sample_led_program.elf: sample_led_program.o
	      avr-gcc sample_led_program.o -Wall,-nm,-Map=sample_led_program.map,--cref -
mmcu=attiny13 -o sample_led_program.elf

# copy ROM (FLASH) object out of sample_led_program.elf into sample_led_program.rom
sample_led_program.rom: sample_led_program.elf
	     avr-objcopy -O ihex sample_led_program.elf sample_led_program.rom

# command to program chip (invoked by running quot;make installquot;)
install:
	       avrdude -c usbtiny -p t13 -e -U flash:w:sample_led_program.rom

# command to clean up junk (no source files) (invoked by quot;make cleanquot;)
clean:
	      rm -f *.o *.rom *.elf *.map *~
# Makefile for sample_led_program for ATtiny13 chip
# Note: to use makefile with a different chip change all
# mmcu statements (-mmcu=attiny13) to reflect new chip
# also change the part option (-p t13) for the avrdude install command

                                                     Clean up the files
# default target when quot;makequot; is run w/o arguments
all: sample_led_program.rom
                                                         created
# compile sample_led_program.c into sample_led_program.o
sample_led_program.o: sample_led_program.c
	     avr-gcc -c -g -O0 -Wall -mmcu=attiny13 sample_led_program.c -o sample_led_program.o

# link up sample_led_program.o into sample_led_program.elf
sample_led_program.elf: sample_led_program.o
	      avr-gcc sample_led_program.o -Wall,-nm,-Map=sample_led_program.map,--cref -
mmcu=attiny13 -o sample_led_program.elf

# copy ROM (FLASH) object out of sample_led_program.elf into sample_led_program.rom
sample_led_program.rom: sample_led_program.elf
	     avr-objcopy -O ihex sample_led_program.elf sample_led_program.rom

# command to program chip (invoked by running quot;make installquot;)
install:
	       avrdude -c usbtiny -p t13 -e -U flash:w:sample_led_program.rom

# command to clean up junk (no source files) (invoked by quot;make cleanquot;)
clean:
	      rm -f *.o *.rom *.elf *.map *~
Call the Makefile
Call the Install part of
Makefile which calls avrdude
Run avrdude, it reads
the rom, writes it to
the chip and verifies
    this process
Things To Remember
Safety first, last, and always
  do not take another person’s work about the state of a piece of equipment, always
check yourself and make sure its safe for you to work
  use the right tool for the job
  treat each tool with respect and rack them back in their correct place when they are
not in use, don’t leave a dangerous tool loose when it can harm somebody else
  don’t leave your safety glasses on the bench or in your pocket
  don’t work on a live circuit, turn the power off first
  don’t solder in an enclosed area without proper ventilation
  read the datasheet first and double check it to be sure
 get twice or three times the number of parts that you need for your circuit, you will
make mistakes and sometimes you will have to throw an almost finished piece away
Data Sheets
  Manufacturer’s details for particular electronic product
     typical device performance
     minimum and maximum requirements and characteristics
     device tolerances, what you can do without harming it
     suggestions for applications, uses, or just hints

   You don’t need to understand everything only need to
focus on the parts that are of interest to your current
problem
Features
            • High Performance, Low Power AVR® 8-Bit Microcontroller
            • Advanced RISC Architecture
                   – 120 Powerful Instructions – Most Single Clock Cycle Execution
                   – 32 x 8 General Purpose Working Registers
                   – Fully Static Operation
                   – Up to 20 MIPS Througput at 20 MHz
            •   High Endurance Non-volatile Memory segments
                   – 1K Bytes of In-System Self-programmable Flash program memory
                   – 64 Bytes EEPROM
                                                                                            8-bit
                   – 64K Bytes Internal SRAM
                   – Write/Erase cyles: 10,000 Flash/100,000 EEPROM
                                                                                            Microcontroller
                   – Data retention: 20 years at 85°C/100 years at 25°C(1)
                   – Optional Boot Code Section with Independent Lock Bits

                                                                                            with 1K Bytes
                             In-System Programming by On-chip Boot Program
                             True Read-While-Write Operation
                   – Programming Lock for Software Security
                                                                                            In-System
            •   Peripheral Features
                   – One 8-bit Timer/Counter with Prescaler and Two PWM Channels
                                                                                            Programmable
                   – 4-channel, 10-bit ADC with Internal Voltage Reference




Example:
                   – Programmable Watchdog Timer with Separate On-chip Oscillator
                                                                                            Flash
                   – On-chip Analog Comparator
            •   Special Microcontroller Features
                   – debugWIRE On-chip Debug System
                   – In-System Programmable via SPI Port
                                                                                            ATtiny13V
                   – External and Internal Interrupt Sources
                                                                                                                 Models
                   – Low Power Idle, ADC Noise Reduction, and Power-down Modes
                                                                                            ATtiny13
                   – Enhanced Power-on Reset Circuit
                   – Programmable Brown-out Detection Circuit




ATtiny13
                   – Internal Calibrated Oscillator
            •   I/O and Packages
                                                                                            Summary
                   – 8-pin PDIP/SOIC: Six Programmable I/O Lines
                   – 20-pad MLF: Six Programmable I/O Lines
            •   Operating Voltage:
                   – 1.8 - 5.5V for ATtiny13V
                                                                                     If it is the short summary
                   – 2.7 - 5.5V for ATtiny13
            •   Speed Grade
                                                                                      or longer full datasheet
                   – ATtiny13V: 0 - 4 MHz @ 1.8 - 5.5V, 0 - 10 MHz @ 2.7 - 5.5V
                   – ATtiny13: 0 - 10 MHz @ 2.7 - 5.5V, 0 - 20 MHz @ 4.5 - 5.5V
            •   Industrial Temperature Range
            •   Low Power Consumption
                   – Active Mode:
                       1 MHz, 1.8V: 240µA
                   – Power-down Mode:
                       < 0.1µA at 1.8V



           One page overview of models and capabilities


                                                                                                         Date

                                                                                                    Rev. 2535HS–AVR–10/07
Pin Configurations    Figure 1. Pinout ATtiny13


            PDIP or SOIC are
                                                                      8-PDIP/SOIC
              the only two
                                      (PCINT5/RESET/ADC0/dW) PB5       1      8     VCC
             package types                 (PCINT3/CLKI/ADC3) PB3      2      7     PB2 (SCK/ADC1/T0/PCINT2)
              we'll use. The                    (PCINT4/ADC2) PB4      3      6     PB1 (MISO/AIN1/OC0B/INT0/PCINT1)
                                                             GND       4      5     PB0 (MOSI/AIN0/OC0A/PCINT0)
           other types require
             SMD soldering.                                         20-QFN/MLF




                                                                      NC
                                                                      NC
                                                                      NC
                                                                      NC
                                                                      NC
                                                                      20
                                                                      19
                                                                      18
                                                                      17
                                                                      16
                                  (PCINT5/RESET/ADC0/dW) PB5      1               15   VCC
                                       (PCINT3/CLKI/ADC3) PB3     2               14   PB2 (SCK/ADC1/T0/PCINT2)
                                                           NC     3               13   NC
                                                           NC     4               12   PB1 (MISO/AIN1/OC0B/INT0/PCINT1)




Example:
                                            (PCINT4/ADC2) PB4     5               11   PB0 (MOSI/AIN0/OC0A/PCINT0)




                                                                      10
                                                                      6
                                                                      7
                                                                      8
                                                                      9
                                                                       NC
                                                                       NC
                                                                      GND
                                                                       NC
                                                                       NC
                                                   NOTE: Bottom pad should be soldered to ground.
                                                   NC: Not Connect




ATtiny13
                                                                    10-QFN/MLF

                                  (PCINT5/RESET/ADC0/dW) PB5      1               10   VCC
                                       (PCINT3/CLKI/ADC3) PB3     2                9   PB2 (SCK/ADC1/T0/PCINT2)
                                                           NC     3                8   NC
                                            (PCINT4/ADC2) PB4     4                7   PB1 (MISO/AIN1/OC0B/INT0/PCINT1)
                                                         GND      5                6   PB0 (MOSI/AIN0/OC0A/PCINT0)




                                                   NOTE: Bottom pad should be soldered to ground.
                                                   NC: Not Connect




           Overview              The ATtiny13 is a low-power CMOS 8-bit microcontroller based on the AVR enhanced
                                 RISC architecture. By executing powerful instructions in a single clock cycle, the
                                 ATtiny13 achieves throughputs approaching 1 MIPS per MHz allowing the system
                                 designer to optimize power consumption versus processing speed.




                                                                                                             Date
                 ATtiny13
            2
                                                                                                          2535HS–AVR–10/07
Interrupt system to continue functioning. The Power-down mode saves the register con-
                               tents, disabling all chip functions until the next Interrupt or Hardware Reset. The ADC
                               Noise Reduction mode stops the CPU and all I/O modules except ADC, to minimize
                               switching noise during ADC conversions.
                               The device is manufactured using Atmel’s high density non-volatile memory technology.
                               The On-chip ISP Flash allows the Program memory to be re-programmed In-System
                               through an SPI serial interface, by a conventional non-volatile memory programmer or
                               by an On-chip boot code running on the AVR core.
                               The ATtiny13 AVR is supported with a full suite of program and system development
                               tools including: C Compilers, Macro Assemblers, Program Debugger/Simulators, In-Cir-
                               cuit Emulators, and Evaluation kits.

           Pin Descriptions
                                                                    Descriptions of the pins
                                                                     shown in the previous
           VCC                 Digital supply voltage.

                                                                    diagram with comments
           GND                 Ground.




Example:
           Port B (PB5..PB0)   Port B is a 6-bit bi-directional I/O port with internal pull-up resistors (selected for each
                               bit). The Port B output buffers have symmetrical drive characteristics with both high sink
                               and source capability. As inputs, Port B pins that are externally pulled low will source
                               current if the pull-up resistors are activated. The Port B pins are tri-stated when a reset
                               condition becomes active, even if the clock is not running.
                               Port B also serves the functions of various special features of the ATtiny13 as listed on
                               page 51.




ATtiny13
           RESET               Reset input. A low level on this pin for longer than the minimum pulse length will gener-
                               ate a reset, even if the clock is not running. The minimum pulse length is given in Table
                               12 on page 31. Shorter pulses are not guaranteed to generate a reset.
                               Note:   1.


           Data Retention      Reliability Qualification results show that the projected data retention failure rate is much
                               less than 1 PPM over 20 years at 85°C or 100 years at 25!C.


           About Code          This documentation contains simple code examples that briefly show how to use various
                               parts of the device. These code examples assume that the part specific header file is
           Examples
                               included before compilation. Be aware that not all C compiler vendors include bit defini-
                               tions in the header files and interrupt handling in C is compiler dependent. Please
                               confirm with the C compiler documentation for more details.




                    ATtiny13
           4
                                                                                                            2535HS–AVR–10/07
Electrical Characteristics

           Absolute Maximum Ratings*
                                                                                             *NOTICE:      Stresses beyond those listed under “Absolute
            Operating Temperature.................................. -55!C to +125!C
                                                                                                           Maximum Ratings” may cause permanent dam-
                                                                                                           age to the device. This is a stress rating only and
            Storage Temperature ..................................... -65°C to +150°C
                                                                                                           functional operation of the device at these or
                                                                                                           other conditions beyond those indicated in the
            Voltage on any Pin except RESET
                                                                                                           operational sections of this specification is not
            with respect to Ground ................................-0.5V to VCC+0.5V
                                                                                                           implied. Exposure to absolute maximum rating
                                                                                                           conditions for extended periods may affect
            Voltage on RESET with respect to Ground......-0.5V to +13.0V
                                                                                                           device reliability.
            Maximum Operating Voltage ............................................ 6.0V
                                                                                    Descriptions of the what
            DC Current per I/O Pin ............................................... 40.0 mA
                                                                                 maximum ratings for device are.
            DC Current VCC and GND Pins................................ 200.0 mA

                                                                                 Running at these or beyond will
           DC Characteristics                                                         damage the device



Example:
           T = -40!C to 85!C, V = 1.8V to 5.5V (unless otherwise noted)(1)
            A                            CC

            Symbol        Parameter                              Condition                       Min.              Typ.              Max.            Units
                                                                 VCC = 1.8V - 2.4V                                                  0.2VCC
                          Input Low Voltage except
            VIL                                                                                  -0.5                                                  V
                          RESET pin                              VCC = 2.4V - 5.5V                                                  0.3VCC
                                                                                               0.7VCC(3)
                                                                 VCC = 1.8V - 2.4V
                          Input High-voltage except
            VIH                                                                                                                    VCC +0.5            V
                                                                                               0.6VCC(3)
                          RESET pin                              VCC = 2.4V - 5.5V




ATtiny13
                          Input Low-voltage
            VIL1                                                 VCC = 1.8V - 5.5                -0.5                               0.1VCC             V
                          CLKI pin
                                                                                               0.8VCC(3)
                          Input High-voltage                     VCC = 1.8V - 2.4V
            VIH1                                                                                                                   VCC +0.5            V
                                                                                               0.7VCC(3)
                          CLKI pin                               VCC = 2.4V - 5.5V
                          Input Low-voltage
            VIL2                                                 VCC = 1.8V - 5.5                -0.5                               0.2VCC             V
                          RESET pin
                          Input High-voltage
                                                                                               0.9VCC(3)
            VIH2                                                 VCC = 1.8V - 5.5                                                  VCC +0.5            V
                          RESET pin
                          Input Low-voltage                      VCC = 1.8V - 2.4V
            VIL3                                                                                 -0.5                               0.2VCC             V
                          RESET pin                              VCC = 2.4V - 5.5V
                                                                                               0.7VCC(3)
                          Input High-voltage                     VCC = 1.8V - 2.4V
            VIH3                                                                                                                   VCC +0.5            V
                                                                                               0.6VCC(3)
                          RESET pin                              VCC = 2.4V - 5.5V
                          Output Low Voltage(4)                  IOL = 20 mA, VCC = 5V                                                0.7              V
            VOL
                          (PB1 and PB0)                          IOL = 10 mA, VCC = 3V                                                0.5              V
                          Output Low Voltage(4)                  IOL = 10 mA, VCC = 5V                                                0.7              V
            VOL1
                          (PB5, PB4, PB3 and PB2)                IOL = 5 mA, VCC = 3V                                                 0.5              V
                                                                 IOL =TBD mA, VCC =
                          Output Low Voltage(4)                  TBDV                                                                                  V
            VOL2
                          (PB5, Reset used as I/O)               IOL =TBD mA, VCC =                                                                    V
                                                                 TBDV
                          Output High-voltage(5)                 IOH = -20 mA, VCC = 5V          4.2                                                   V
            VOH
                          ( PB1 and PB0)                         IOH = -10 mA, VCC = 3V          2.5                                                   V




                        ATtiny13
           120
                                                                                                                                                2535H–AVR–10/07
ATtiny13

           TA = -40quot;C to 85quot;C, VCC = 1.8V to 5.5V (unless otherwise noted)(1) (Continued)
            Symbol      Parameter                     Condition                         Min.            Typ.             Max.           Units
                                            (5)
                        Output High-voltage           IOH = -10 mA, VCC = 5V            4.2                                               V
            VOH1
                        (PB4, PB3 and PB2)            IOH = -5 mA, VCC = 3V             2.5                                               V
                                                      IOH = - TBD mA, VCC =
                        Output High-voltage(5)        TBDV                                                                                V
            VOH2
                        (PB5, Reset used as I/O)      IOH = - TBD mA, VCC =                                                               V
                                                      TBDV
                                                                         Some chips have internal resistors
                                                      Vcc = 5.5V, pin low
                        Input Leakage
            IIL                                                                                  1       µA
                                                                         which you can use for inputs, here
                        Current I/O Pin               (absolute value)
                                                      Vcc = 5.5V, pin high
                        Input Leakage
                                                                           is where you can find their value
            IIH                                                                                  1       µA
                        Current I/O Pin               (absolute value)
            RRST        Reset Pull-up Resistor                                           30                               80              k!
            Rpu         I/O Pin Pull-up Resistor                                         20                               50              k!
                                                      Active 1MHz, VCC = 2V                                              0.35            mA
                                                      Active 4MHz, VCC = 3V                                               1.8            mA




Example:
                                                      Active 8MHz, VCC = 5V                                                6             mA
                        Power Supply Current
                                                      Idle 1MHz, VCC = 2V                               0.08              0.2            mA
            ICC
                                                      Idle 4MHz, VCC = 3V                               0.41               1             mA
                                                      Idle 8MHz, VCC = 5V                                1.6               3             mA
                                                      WDT enabled, VCC = 3V                              <5               10              µA
                        Power-down mode




ATtiny13
                                                      WDT disabled, VCC = 3V                            < 0.5              2              µA
                        Analog Comparator Input       VCC = 5V
            VACIO                                                                                       < 10              40             mV
                        Offset Voltage                Vin = VCC/2
                        Analog Comparator Input       VCC = 5V
            IACLK                                                                       -50                               50              nA
                        Leakage Current               Vin = VCC/2
                        Analog Comparator             VCC = 2.7V                                         750
            tACPD                                                                                                                         ns
                        Propagation Delay             VCC = 4.0V                                         500
           Notes:   1. All DC Characteristics contained in this data sheet are based on simulation and characterization of other AVR microcontrol-
                       lers manufactured in the same process technology. These values are representing design targets, and will be updated after
                       characterization of actual silicon.
                    2. “Max” means the highest value where the pin is guaranteed to be read as low.
                    3. “Min” means the lowest value where the pin is guaranteed to be read as high.
                    4. Although each I/O port can sink more than the test conditions (20 mA at VCC = 5V, 10 mA at VCC = 3V for PB5, PB1:0, 10 mA
                       at VCC = 5V, 5 mA at VCC = 3V for PB4:2) under steady state conditions (non-transient), the following must be observed:
                       1] The sum of all IOL, for all ports, should not exceed 60 mA.
                       If IOL exceeds the test condition, VOL may exceed the related specification. Pins are not guaranteed to sink current greater
                       than the listed test condition.
                    5. Although each I/O port can source more than the test conditions (20 mA at VCC = 5V, 10 mA at VCC = 3V for PB5, PB1:0, 10
                       mA at VCC = 5V, 5 mA at VCC = 3V for PB4:2) under steady state conditions (non-transient), the following must be observed:
                       1] The sum of all IOH, for all ports, should not exceed 60 mA.
                       If IOH exceeds the test condition, VOH may exceed the related specification. Pins are not guaranteed to source current
                       greater than the listed test condition.




                                                                                                                                                121
           2535H–AVR–10/07

More Related Content

What's hot

Arduino Robotics workshop Day1
Arduino Robotics workshop Day1Arduino Robotics workshop Day1
Arduino Robotics workshop Day1Sudar Muthu
 
Arduino windows remote control
Arduino windows remote controlArduino windows remote control
Arduino windows remote controlVilayatAli5
 
Arduino projects &amp; tutorials
Arduino projects &amp; tutorialsArduino projects &amp; tutorials
Arduino projects &amp; tutorialsAnshu Pandey
 
Intro to Arduino
Intro to ArduinoIntro to Arduino
Intro to ArduinoQtechknow
 
Cassiopeia Ltd - standard Arduino workshop
Cassiopeia Ltd - standard Arduino workshopCassiopeia Ltd - standard Arduino workshop
Cassiopeia Ltd - standard Arduino workshoptomtobback
 
Mims effect
Mims effectMims effect
Mims effectarnaullb
 
IOT Talking to Webserver - how to
IOT Talking to Webserver - how to IOT Talking to Webserver - how to
IOT Talking to Webserver - how to Indraneel Ganguli
 
[5]投影片 futurewad樹莓派研習會 141218
[5]投影片 futurewad樹莓派研習會 141218[5]投影片 futurewad樹莓派研習會 141218
[5]投影片 futurewad樹莓派研習會 141218CAVEDU Education
 
A Fast Introduction to Arduino and Addressable LED Strips
A Fast Introduction to Arduino and Addressable LED StripsA Fast Introduction to Arduino and Addressable LED Strips
A Fast Introduction to Arduino and Addressable LED Stripsatuline
 
Getting started with arduino workshop
Getting started with arduino workshopGetting started with arduino workshop
Getting started with arduino workshopSudar Muthu
 
Arduino experimenters guide hq
Arduino experimenters guide hqArduino experimenters guide hq
Arduino experimenters guide hqAndreis Santos
 
Arduino: Analog I/O
Arduino: Analog I/OArduino: Analog I/O
Arduino: Analog I/OJune-Hao Hou
 
Starting with Arduino
Starting with Arduino Starting with Arduino
Starting with Arduino MajdyShamasneh
 
850i5 Installation Paginated
850i5 Installation Paginated850i5 Installation Paginated
850i5 Installation Paginatedguest90d5756
 
Easy GPS Tracker using Arduino and Python
Easy GPS Tracker using Arduino and PythonEasy GPS Tracker using Arduino and Python
Easy GPS Tracker using Arduino and PythonNúria Vilanova
 
Arduino Day 1 Presentation
Arduino Day 1 PresentationArduino Day 1 Presentation
Arduino Day 1 PresentationYogendra Tamang
 

What's hot (20)

Arduino Robotics workshop Day1
Arduino Robotics workshop Day1Arduino Robotics workshop Day1
Arduino Robotics workshop Day1
 
Programming arduino makeymakey
Programming arduino makeymakeyProgramming arduino makeymakey
Programming arduino makeymakey
 
Arduino windows remote control
Arduino windows remote controlArduino windows remote control
Arduino windows remote control
 
Arduino projects &amp; tutorials
Arduino projects &amp; tutorialsArduino projects &amp; tutorials
Arduino projects &amp; tutorials
 
Intro to Arduino
Intro to ArduinoIntro to Arduino
Intro to Arduino
 
Cassiopeia Ltd - standard Arduino workshop
Cassiopeia Ltd - standard Arduino workshopCassiopeia Ltd - standard Arduino workshop
Cassiopeia Ltd - standard Arduino workshop
 
Mims effect
Mims effectMims effect
Mims effect
 
Simply arduino
Simply arduinoSimply arduino
Simply arduino
 
IOT Talking to Webserver - how to
IOT Talking to Webserver - how to IOT Talking to Webserver - how to
IOT Talking to Webserver - how to
 
[5]投影片 futurewad樹莓派研習會 141218
[5]投影片 futurewad樹莓派研習會 141218[5]投影片 futurewad樹莓派研習會 141218
[5]投影片 futurewad樹莓派研習會 141218
 
Introduction to Arduino
Introduction to ArduinoIntroduction to Arduino
Introduction to Arduino
 
Introduction to Arduino
Introduction to ArduinoIntroduction to Arduino
Introduction to Arduino
 
A Fast Introduction to Arduino and Addressable LED Strips
A Fast Introduction to Arduino and Addressable LED StripsA Fast Introduction to Arduino and Addressable LED Strips
A Fast Introduction to Arduino and Addressable LED Strips
 
Getting started with arduino workshop
Getting started with arduino workshopGetting started with arduino workshop
Getting started with arduino workshop
 
Arduino experimenters guide hq
Arduino experimenters guide hqArduino experimenters guide hq
Arduino experimenters guide hq
 
Arduino: Analog I/O
Arduino: Analog I/OArduino: Analog I/O
Arduino: Analog I/O
 
Starting with Arduino
Starting with Arduino Starting with Arduino
Starting with Arduino
 
850i5 Installation Paginated
850i5 Installation Paginated850i5 Installation Paginated
850i5 Installation Paginated
 
Easy GPS Tracker using Arduino and Python
Easy GPS Tracker using Arduino and PythonEasy GPS Tracker using Arduino and Python
Easy GPS Tracker using Arduino and Python
 
Arduino Day 1 Presentation
Arduino Day 1 PresentationArduino Day 1 Presentation
Arduino Day 1 Presentation
 

Viewers also liked

Arduino Lecture 3 - Interactive Media CS4062 Semester 2 2009
Arduino Lecture 3 - Interactive Media CS4062 Semester 2 2009Arduino Lecture 3 - Interactive Media CS4062 Semester 2 2009
Arduino Lecture 3 - Interactive Media CS4062 Semester 2 2009Eoin Brazil
 
Arduino Lecture 2 - Interactive Media CS4062 Semester 2 2009
Arduino Lecture 2 - Interactive Media CS4062 Semester 2 2009Arduino Lecture 2 - Interactive Media CS4062 Semester 2 2009
Arduino Lecture 2 - Interactive Media CS4062 Semester 2 2009Eoin Brazil
 
Arduino Lecture 4 - Interactive Media CS4062 Semester 2 2009
Arduino Lecture 4 - Interactive Media CS4062 Semester 2 2009Arduino Lecture 4 - Interactive Media CS4062 Semester 2 2009
Arduino Lecture 4 - Interactive Media CS4062 Semester 2 2009Eoin Brazil
 
Programming with arduino
Programming with arduinoProgramming with arduino
Programming with arduinoMakers of India
 
Introduction to Arduino
Introduction to ArduinoIntroduction to Arduino
Introduction to ArduinoKarim El-Rayes
 
Introduction to Arduino
Introduction to ArduinoIntroduction to Arduino
Introduction to ArduinoRichard Rixham
 
Arduino Development For Beginners
Arduino Development For BeginnersArduino Development For Beginners
Arduino Development For BeginnersFTS seminar
 
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the ArduinoArduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the ArduinoEoin Brazil
 
Arduino Full Tutorial
Arduino Full TutorialArduino Full Tutorial
Arduino Full TutorialAkshay Sharma
 
Introduction to arduino
Introduction to arduinoIntroduction to arduino
Introduction to arduinoAhmed Sakr
 
Introduction to Arduino Programming
Introduction to Arduino ProgrammingIntroduction to Arduino Programming
Introduction to Arduino ProgrammingJames Lewis
 

Viewers also liked (12)

Arduino Lecture 3 - Interactive Media CS4062 Semester 2 2009
Arduino Lecture 3 - Interactive Media CS4062 Semester 2 2009Arduino Lecture 3 - Interactive Media CS4062 Semester 2 2009
Arduino Lecture 3 - Interactive Media CS4062 Semester 2 2009
 
Arduino Lecture 2 - Interactive Media CS4062 Semester 2 2009
Arduino Lecture 2 - Interactive Media CS4062 Semester 2 2009Arduino Lecture 2 - Interactive Media CS4062 Semester 2 2009
Arduino Lecture 2 - Interactive Media CS4062 Semester 2 2009
 
Arduino Lecture 4 - Interactive Media CS4062 Semester 2 2009
Arduino Lecture 4 - Interactive Media CS4062 Semester 2 2009Arduino Lecture 4 - Interactive Media CS4062 Semester 2 2009
Arduino Lecture 4 - Interactive Media CS4062 Semester 2 2009
 
Programming with arduino
Programming with arduinoProgramming with arduino
Programming with arduino
 
Introduction to Arduino
Introduction to ArduinoIntroduction to Arduino
Introduction to Arduino
 
Introduction to Arduino
Introduction to ArduinoIntroduction to Arduino
Introduction to Arduino
 
Arduino Development For Beginners
Arduino Development For BeginnersArduino Development For Beginners
Arduino Development For Beginners
 
Arduino
ArduinoArduino
Arduino
 
Arduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the ArduinoArduino Lecture 1 - Introducing the Arduino
Arduino Lecture 1 - Introducing the Arduino
 
Arduino Full Tutorial
Arduino Full TutorialArduino Full Tutorial
Arduino Full Tutorial
 
Introduction to arduino
Introduction to arduinoIntroduction to arduino
Introduction to arduino
 
Introduction to Arduino Programming
Introduction to Arduino ProgrammingIntroduction to Arduino Programming
Introduction to Arduino Programming
 

Similar to Arduino Lecture 3 - Interactive Media CS4062 Semester 2 2009

Gulotta_Wright_Parisi_FinalProjectOverview1
Gulotta_Wright_Parisi_FinalProjectOverview1Gulotta_Wright_Parisi_FinalProjectOverview1
Gulotta_Wright_Parisi_FinalProjectOverview1Nicholas Parisi
 
Arduino Workshop Day 2 - Advance Arduino & DIY
Arduino Workshop Day 2 - Advance Arduino & DIYArduino Workshop Day 2 - Advance Arduino & DIY
Arduino Workshop Day 2 - Advance Arduino & DIYVishnu
 
MaxBotix Code Examples
MaxBotix Code ExamplesMaxBotix Code Examples
MaxBotix Code ExamplesMaxBotix Inc
 
Motorized pan tilt(Arduino based)
Motorized pan tilt(Arduino based)Motorized pan tilt(Arduino based)
Motorized pan tilt(Arduino based)kane111
 
4 IOT 18ISDE712 MODULE 4 IoT Physical Devices and End Point-Aurdino Uno.pdf
4 IOT 18ISDE712  MODULE 4 IoT Physical Devices and End Point-Aurdino  Uno.pdf4 IOT 18ISDE712  MODULE 4 IoT Physical Devices and End Point-Aurdino  Uno.pdf
4 IOT 18ISDE712 MODULE 4 IoT Physical Devices and End Point-Aurdino Uno.pdfJayanthi Kannan MK
 
Arduino Final Project
Arduino Final ProjectArduino Final Project
Arduino Final ProjectBach Nguyen
 
What will be quantization step size in numbers and in voltage for th.pdf
What will be quantization step size in numbers and in voltage for th.pdfWhat will be quantization step size in numbers and in voltage for th.pdf
What will be quantization step size in numbers and in voltage for th.pdfSIGMATAX1
 
Arduino Interfacing with different sensors and motor
Arduino Interfacing with different sensors and motorArduino Interfacing with different sensors and motor
Arduino Interfacing with different sensors and motorAmarjeetsingh Thakur
 
Twin wheeler modified for arduino simplified serial protocol to sabertooth v21
Twin wheeler modified for arduino simplified serial protocol to sabertooth v21Twin wheeler modified for arduino simplified serial protocol to sabertooth v21
Twin wheeler modified for arduino simplified serial protocol to sabertooth v21josnihmurni2907
 
Arduino cic3
Arduino cic3Arduino cic3
Arduino cic3Jeni Shah
 
GENESIS BOARD MINI SUMO ROBOT PROGRAMFOR 3 OPPONENT SENSOR, .pdf
 GENESIS BOARD MINI SUMO ROBOT PROGRAMFOR 3 OPPONENT SENSOR, .pdf GENESIS BOARD MINI SUMO ROBOT PROGRAMFOR 3 OPPONENT SENSOR, .pdf
GENESIS BOARD MINI SUMO ROBOT PROGRAMFOR 3 OPPONENT SENSOR, .pdfalltiusind
 
Arduino for Beginners
Arduino for BeginnersArduino for Beginners
Arduino for BeginnersSarwan Singh
 
Weapons grade React by Ken Wheeler
Weapons grade React by Ken Wheeler Weapons grade React by Ken Wheeler
Weapons grade React by Ken Wheeler React London 2017
 
Day 2 slides UNO summer 2010 robotics workshop
Day 2 slides UNO summer 2010 robotics workshopDay 2 slides UNO summer 2010 robotics workshop
Day 2 slides UNO summer 2010 robotics workshopRaj Dasgupta
 
Twin wheeler modified for arduino simplified serial protocol to sabertooth v22
Twin wheeler modified for arduino simplified serial protocol to sabertooth v22Twin wheeler modified for arduino simplified serial protocol to sabertooth v22
Twin wheeler modified for arduino simplified serial protocol to sabertooth v22josnihmurni2907
 

Similar to Arduino Lecture 3 - Interactive Media CS4062 Semester 2 2009 (20)

Arduino Programming
Arduino ProgrammingArduino Programming
Arduino Programming
 
Gulotta_Wright_Parisi_FinalProjectOverview1
Gulotta_Wright_Parisi_FinalProjectOverview1Gulotta_Wright_Parisi_FinalProjectOverview1
Gulotta_Wright_Parisi_FinalProjectOverview1
 
Arduino Workshop Day 2 - Advance Arduino & DIY
Arduino Workshop Day 2 - Advance Arduino & DIYArduino Workshop Day 2 - Advance Arduino & DIY
Arduino Workshop Day 2 - Advance Arduino & DIY
 
Hexapod ppt
Hexapod pptHexapod ppt
Hexapod ppt
 
MaxBotix Code Examples
MaxBotix Code ExamplesMaxBotix Code Examples
MaxBotix Code Examples
 
Motorized pan tilt(Arduino based)
Motorized pan tilt(Arduino based)Motorized pan tilt(Arduino based)
Motorized pan tilt(Arduino based)
 
4 IOT 18ISDE712 MODULE 4 IoT Physical Devices and End Point-Aurdino Uno.pdf
4 IOT 18ISDE712  MODULE 4 IoT Physical Devices and End Point-Aurdino  Uno.pdf4 IOT 18ISDE712  MODULE 4 IoT Physical Devices and End Point-Aurdino  Uno.pdf
4 IOT 18ISDE712 MODULE 4 IoT Physical Devices and End Point-Aurdino Uno.pdf
 
Arduino Final Project
Arduino Final ProjectArduino Final Project
Arduino Final Project
 
Metal detecting robot sketch
Metal detecting robot sketchMetal detecting robot sketch
Metal detecting robot sketch
 
What will be quantization step size in numbers and in voltage for th.pdf
What will be quantization step size in numbers and in voltage for th.pdfWhat will be quantization step size in numbers and in voltage for th.pdf
What will be quantization step size in numbers and in voltage for th.pdf
 
Arduino Interfacing with different sensors and motor
Arduino Interfacing with different sensors and motorArduino Interfacing with different sensors and motor
Arduino Interfacing with different sensors and motor
 
Twin wheeler modified for arduino simplified serial protocol to sabertooth v21
Twin wheeler modified for arduino simplified serial protocol to sabertooth v21Twin wheeler modified for arduino simplified serial protocol to sabertooth v21
Twin wheeler modified for arduino simplified serial protocol to sabertooth v21
 
Arduino cic3
Arduino cic3Arduino cic3
Arduino cic3
 
GENESIS BOARD MINI SUMO ROBOT PROGRAMFOR 3 OPPONENT SENSOR, .pdf
 GENESIS BOARD MINI SUMO ROBOT PROGRAMFOR 3 OPPONENT SENSOR, .pdf GENESIS BOARD MINI SUMO ROBOT PROGRAMFOR 3 OPPONENT SENSOR, .pdf
GENESIS BOARD MINI SUMO ROBOT PROGRAMFOR 3 OPPONENT SENSOR, .pdf
 
Arduino for Beginners
Arduino for BeginnersArduino for Beginners
Arduino for Beginners
 
Weapons grade React by Ken Wheeler
Weapons grade React by Ken Wheeler Weapons grade React by Ken Wheeler
Weapons grade React by Ken Wheeler
 
Day 2 slides UNO summer 2010 robotics workshop
Day 2 slides UNO summer 2010 robotics workshopDay 2 slides UNO summer 2010 robotics workshop
Day 2 slides UNO summer 2010 robotics workshop
 
How to use an Arduino
How to use an ArduinoHow to use an Arduino
How to use an Arduino
 
Twin wheeler modified for arduino simplified serial protocol to sabertooth v22
Twin wheeler modified for arduino simplified serial protocol to sabertooth v22Twin wheeler modified for arduino simplified serial protocol to sabertooth v22
Twin wheeler modified for arduino simplified serial protocol to sabertooth v22
 
Arduino intro.pptx
Arduino intro.pptxArduino intro.pptx
Arduino intro.pptx
 

More from Eoin Brazil

Pragmatic Analytics - Case Studies of High Performance Computing for Better B...
Pragmatic Analytics - Case Studies of High Performance Computing for Better B...Pragmatic Analytics - Case Studies of High Performance Computing for Better B...
Pragmatic Analytics - Case Studies of High Performance Computing for Better B...Eoin Brazil
 
Introduction to Machine Learning using R - Dublin R User Group - Oct 2013
Introduction to Machine Learning using R - Dublin R User Group - Oct 2013Introduction to Machine Learning using R - Dublin R User Group - Oct 2013
Introduction to Machine Learning using R - Dublin R User Group - Oct 2013Eoin Brazil
 
Mobile Services from Concept to Reality - Case Studies at the Mobile Service ...
Mobile Services from Concept to Reality - Case Studies at the Mobile Service ...Mobile Services from Concept to Reality - Case Studies at the Mobile Service ...
Mobile Services from Concept to Reality - Case Studies at the Mobile Service ...Eoin Brazil
 
Cloud Computing Examples at ICHEC
Cloud Computing Examples at ICHECCloud Computing Examples at ICHEC
Cloud Computing Examples at ICHECEoin Brazil
 
An example of discovering simple patterns using basic data mining
An example of discovering simple patterns using basic data miningAn example of discovering simple patterns using basic data mining
An example of discovering simple patterns using basic data miningEoin Brazil
 
Bringing HPC to tackle your business problems
Bringing HPC to tackle your business problemsBringing HPC to tackle your business problems
Bringing HPC to tackle your business problemsEoin Brazil
 
Fat Nodes & GPGPUs - Red-shifting your infrastructure without breaking the bu...
Fat Nodes & GPGPUs - Red-shifting your infrastructure without breaking the bu...Fat Nodes & GPGPUs - Red-shifting your infrastructure without breaking the bu...
Fat Nodes & GPGPUs - Red-shifting your infrastructure without breaking the bu...Eoin Brazil
 
Example optimisation using GPGPUs by ICHEC
Example optimisation using GPGPUs by ICHECExample optimisation using GPGPUs by ICHEC
Example optimisation using GPGPUs by ICHECEoin Brazil
 
Ichec is vs-andthecloud
Ichec is vs-andthecloudIchec is vs-andthecloud
Ichec is vs-andthecloudEoin Brazil
 
Mixing Interaction, Sonification, Rendering and Design - The art of creating ...
Mixing Interaction, Sonification, Rendering and Design - The art of creating ...Mixing Interaction, Sonification, Rendering and Design - The art of creating ...
Mixing Interaction, Sonification, Rendering and Design - The art of creating ...Eoin Brazil
 
Echoes, Whispers, and Footsteps from the Conflux of Sonic Interaction Design ...
Echoes, Whispers, and Footsteps from the Conflux of Sonic Interaction Design ...Echoes, Whispers, and Footsteps from the Conflux of Sonic Interaction Design ...
Echoes, Whispers, and Footsteps from the Conflux of Sonic Interaction Design ...Eoin Brazil
 
IOTC08 The Arduino Platform
IOTC08 The Arduino PlatformIOTC08 The Arduino Platform
IOTC08 The Arduino PlatformEoin Brazil
 
Arduino Lecture 2 - Electronic, LEDs, Communications and Datasheets
Arduino Lecture 2 - Electronic, LEDs, Communications and DatasheetsArduino Lecture 2 - Electronic, LEDs, Communications and Datasheets
Arduino Lecture 2 - Electronic, LEDs, Communications and DatasheetsEoin Brazil
 
Arduino Lecture 3 - Making Things Move and AVR programming
Arduino Lecture 3 - Making Things Move and AVR programmingArduino Lecture 3 - Making Things Move and AVR programming
Arduino Lecture 3 - Making Things Move and AVR programmingEoin Brazil
 

More from Eoin Brazil (14)

Pragmatic Analytics - Case Studies of High Performance Computing for Better B...
Pragmatic Analytics - Case Studies of High Performance Computing for Better B...Pragmatic Analytics - Case Studies of High Performance Computing for Better B...
Pragmatic Analytics - Case Studies of High Performance Computing for Better B...
 
Introduction to Machine Learning using R - Dublin R User Group - Oct 2013
Introduction to Machine Learning using R - Dublin R User Group - Oct 2013Introduction to Machine Learning using R - Dublin R User Group - Oct 2013
Introduction to Machine Learning using R - Dublin R User Group - Oct 2013
 
Mobile Services from Concept to Reality - Case Studies at the Mobile Service ...
Mobile Services from Concept to Reality - Case Studies at the Mobile Service ...Mobile Services from Concept to Reality - Case Studies at the Mobile Service ...
Mobile Services from Concept to Reality - Case Studies at the Mobile Service ...
 
Cloud Computing Examples at ICHEC
Cloud Computing Examples at ICHECCloud Computing Examples at ICHEC
Cloud Computing Examples at ICHEC
 
An example of discovering simple patterns using basic data mining
An example of discovering simple patterns using basic data miningAn example of discovering simple patterns using basic data mining
An example of discovering simple patterns using basic data mining
 
Bringing HPC to tackle your business problems
Bringing HPC to tackle your business problemsBringing HPC to tackle your business problems
Bringing HPC to tackle your business problems
 
Fat Nodes & GPGPUs - Red-shifting your infrastructure without breaking the bu...
Fat Nodes & GPGPUs - Red-shifting your infrastructure without breaking the bu...Fat Nodes & GPGPUs - Red-shifting your infrastructure without breaking the bu...
Fat Nodes & GPGPUs - Red-shifting your infrastructure without breaking the bu...
 
Example optimisation using GPGPUs by ICHEC
Example optimisation using GPGPUs by ICHECExample optimisation using GPGPUs by ICHEC
Example optimisation using GPGPUs by ICHEC
 
Ichec is vs-andthecloud
Ichec is vs-andthecloudIchec is vs-andthecloud
Ichec is vs-andthecloud
 
Mixing Interaction, Sonification, Rendering and Design - The art of creating ...
Mixing Interaction, Sonification, Rendering and Design - The art of creating ...Mixing Interaction, Sonification, Rendering and Design - The art of creating ...
Mixing Interaction, Sonification, Rendering and Design - The art of creating ...
 
Echoes, Whispers, and Footsteps from the Conflux of Sonic Interaction Design ...
Echoes, Whispers, and Footsteps from the Conflux of Sonic Interaction Design ...Echoes, Whispers, and Footsteps from the Conflux of Sonic Interaction Design ...
Echoes, Whispers, and Footsteps from the Conflux of Sonic Interaction Design ...
 
IOTC08 The Arduino Platform
IOTC08 The Arduino PlatformIOTC08 The Arduino Platform
IOTC08 The Arduino Platform
 
Arduino Lecture 2 - Electronic, LEDs, Communications and Datasheets
Arduino Lecture 2 - Electronic, LEDs, Communications and DatasheetsArduino Lecture 2 - Electronic, LEDs, Communications and Datasheets
Arduino Lecture 2 - Electronic, LEDs, Communications and Datasheets
 
Arduino Lecture 3 - Making Things Move and AVR programming
Arduino Lecture 3 - Making Things Move and AVR programmingArduino Lecture 3 - Making Things Move and AVR programming
Arduino Lecture 3 - Making Things Move and AVR programming
 

Recently uploaded

Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 

Recently uploaded (20)

Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 

Arduino Lecture 3 - Interactive Media CS4062 Semester 2 2009

  • 1. Making Things Move, Lighting Things Up and AVR Programming CS4062 - Eoin Brazil - Semester 2 - 2009
  • 2. Servos and Motors Motion linear or rotary Stepper Servo conversion issues Types DC Gearhead DC Motor Servo Stepper Gearhead
  • 3. DC Motor 2 Connections Continual spin, given current & voltage Reversing current, reverses the direction Increasing the voltage, spins faster, decreasing the voltage, slows the spin High speed but low torque Gearbox can add torque but at the expense of speed
  • 8. Gearhead Motor DC Motor with gearbox Not fast but provide more torque Servo Motor Gearhead Gearhead motor with position feedback Feedback is often from potentiometer Pulsing the motor moves it to particular position within 180 degree range Can’t move 360 degrees but can be Servo positioned precisely within the 180 degree range
  • 9. Stepper Motor Precise positioning & 360 degrees range Move in discrete steps around a circle A 200 step motor would move 1.8 degrees per step around the full 360 degrees Continuous rotation in either direction Good torque Complex to connect
  • 10. Solenoids and Actuators Microactuators Linear Motion Actuator Pull or Push Types Solenoid Solenoid Actuator Microactuator
  • 11. Motor Characteristics gears or direct rated voltage current (efficiency) - stall / running speed - spin / rpm, rps, Hz torque size, shaft diameter, shaft length position resolution (Servos & Steppers)
  • 12. Advanced Mediation Lisa McElligott, 2000 interactive confessional box used real confessional box confessor was computer program interacted using a voice interface. scripted interactions with random noises to add to immersion suspension of disbelief realism
  • 13. Weave Mirror Daniel Rozin, Weave Mirror, 2007 Mechanical mirror Any person standing in front of one of these pieces is instantly reflected on its surface. Side and back views Uses video cameras, motors and computers to achieve mirroring Sound aspect - soothing sound
  • 14. Weave Mirror Daniel Rozin, Weave Mirror, 2007
  • 17. PWM Analog input / output Duration of the digital pulse of voltage Microcontroller - HIGH 5V or LOW 0V ``Fake’’ it using PWM Duty cycle, ratio from low to high to low cycle LED dimming, DC Motor speed control, Piezo speakers, RC Servo positioning
  • 19. Wiring Diagram Schematic Diagram
  • 20. RC Servo Motor Servo Motor Connections on Arduino Black wire would go to Grd pin Red wire would go to 5V power pin White wire would go to one of the digital pins on the board Colours can vary, Ground (black or brown), Power (red), Control (orange, yellow or white)
  • 21. /* * NewSerialServo * -------------- * Servo control from the Serial port * * Alteration of the control interface to use < and > keys * to slew the servo horn left and right. Works best with * the Linux/Mac terminal quot;screenquot; program. * * Created 10 December 2007 * copyleft 2007 Brian D. Wendt * http://principialabs.com/ * * Adapted from code by Tom Igoe, http://itp.nyu.edu/physcomp/Labs/Servo */ /** Adjust these values for your servo and setup, if necessary **/ int servoPin = 2; // control pin for servo motor int minPulse = 600; // minimum servo position int maxPulse = 2400; // maximum servo position int turnRate = 100; // servo turn rate increment (larger value, faster rate) int refreshTime = 20; // time (ms) between pulses (50Hz) /** The Arduino will calculate these values for you **/ continued int centerServo; // center servo position int pulseWidth; // servo pulse width on next int moveServo; // raw user input long lastPulse = 0; // recorded time (ms) of the last pulse slide
  • 22. /* Setup the necessary * NewSerialServo * -------------- * Servo control from the Serial port control values and * * Alteration of the control interface to use < and > keys * to slew the servo horn left and right. Works best with variables to store * the Linux/Mac terminal quot;screenquot; program. * * Created 10 December 2007 information * copyleft 2007 Brian D. Wendt * http://principialabs.com/ * * Adapted from code by Tom Igoe, http://itp.nyu.edu/physcomp/Labs/Servo */ /** Adjust these values for your servo and setup, if necessary **/ int servoPin = 2; // control pin for servo motor int minPulse = 600; // minimum servo position int maxPulse = 2400; // maximum servo position int turnRate = 100; // servo turn rate increment (larger value, faster rate) int refreshTime = 20; // time (ms) between pulses (50Hz) /** The Arduino will calculate these values for you **/ continued int centerServo; // center servo position int pulseWidth; // servo pulse width on next int moveServo; // raw user input long lastPulse = 0; // recorded time (ms) of the last pulse slide
  • 23. // Main program setup void setup() { pinMode(servoPin, OUTPUT); // Set servo pin as an output pin centerServo = maxPulse - ((maxPulse - minPulse)/2); pulseWidth = centerServo; // Give the servo a starting point (or it floats) Serial.begin(9600); Serial.println(quot; Arduino Serial Servo Controlquot;); Serial.println(quot;Press < or > to move, spacebar to centerquot;); Serial.println(); } void loop() { // wait for serial input if (Serial.available() > 0) { // read the incoming byte: moveServo = Serial.read(); // ASCII '<' is 44, ASCII '>' is 46 (comma and period, really) if (moveServo == 44) { pulseWidth = pulseWidth - turnRate; } if (moveServo == 46) { pulseWidth = pulseWidth + turnRate; } continued if (moveServo == 32) { pulseWidth = centerServo; } // stop servo pulse at min and max on next if (pulseWidth > maxPulse) { pulseWidth = maxPulse; } if (pulseWidth < minPulse) { pulseWidth = minPulse; } } slide
  • 24. // Main program setup void setup() { pinMode(servoPin, OUTPUT); // Set servo pin as an output pin centerServo = maxPulse - ((maxPulse - minPulse)/2); pulseWidth = centerServo; // Give the servo a starting point (or it floats) Serial.begin(9600); Setup servo its Serial.println(quot; Arduino Serial Servo Controlquot;); Serial.println(quot;Press < or > to move, spacebar to centerquot;); pin, its pulse, and Serial.println(); } its position. Setup void loop() { // wait for serial input serial connection if (Serial.available() > 0) { // read the incoming byte: moveServo = Serial.read(); for control // ASCII '<' is 44, ASCII '>' is 46 (comma and period, really) if (moveServo == 44) { pulseWidth = pulseWidth - turnRate; } if (moveServo == 46) { pulseWidth = pulseWidth + turnRate; } continued if (moveServo == 32) { pulseWidth = centerServo; } // stop servo pulse at min and max on next if (pulseWidth > maxPulse) { pulseWidth = maxPulse; } if (pulseWidth < minPulse) { pulseWidth = minPulse; } } slide
  • 25. // Main program setup void setup() { pinMode(servoPin, OUTPUT); // Set servo pin as an output pin centerServo = maxPulse - ((maxPulse - minPulse)/2); pulseWidth = centerServo; // Give the servo a starting point (or it floats) Serial.begin(9600); Serial.println(quot; Arduino Serial Servo Controlquot;); Serial.println(quot;Press < or > to move, spacebar to centerquot;); Serial.println(); The serial input controls the } servo by the ‘<‘ or ‘>’ and keep void loop() { // wait for serial input if (Serial.available() > 0) { its speed within the safe range // read the incoming byte: moveServo = Serial.read(); // ASCII '<' is 44, ASCII '>' is 46 (comma and period, really) if (moveServo == 44) { pulseWidth = pulseWidth - turnRate; } if (moveServo == 46) { pulseWidth = pulseWidth + turnRate; } continued if (moveServo == 32) { pulseWidth = centerServo; } // stop servo pulse at min and max on next if (pulseWidth > maxPulse) { pulseWidth = maxPulse; } if (pulseWidth < minPulse) { pulseWidth = minPulse; } } slide
  • 26. // pulse the servo every 20 ms (refreshTime) with current pulseWidth // this will hold the servo's position if unchanged, or move it if changed if (millis() - lastPulse >= refreshTime) { digitalWrite(servoPin, HIGH); // start the pulse delayMicroseconds(pulseWidth); // pulse width digitalWrite(servoPin, LOW); // stop the pulse lastPulse = millis(); // save the time of the last pulse } } // END of Main program
  • 27. Pulse the servo every 20ms, this is where the desired change actually happens and its based on the previous serial input // pulse the servo every 20 ms (refreshTime) with current pulseWidth // this will hold the servo's position if unchanged, or move it if changed if (millis() - lastPulse >= refreshTime) { digitalWrite(servoPin, HIGH); // start the pulse delayMicroseconds(pulseWidth); // pulse width digitalWrite(servoPin, LOW); // stop the pulse lastPulse = millis(); // save the time of the last pulse } } // END of Main program
  • 28. Switches Types and contacts Knives and toggles Knive (SPST) Single pole = control of one circuit Double pole = two circuits controlled at once Single throw = one path for circuit Double throw = two paths for circuit Toggle (SPDT) Foot, tape / mat, roller, hair trigger, tilt, magnetic / reed
  • 29. High and Low Practical switching Arduino looks for 0V (low) to 5V (high) Digital inputs float between these values Resistor “pulls” input to ground (0 volts) Pressing switch “pushes” input to 5 volts Switch pressed = HIGH, not pressed = LOW setup(): pinMode(myPin,INPUT) loop(): digitalRead(myPin)
  • 30. Sketching your work Bill Verplank Interaction Design Sketchbook Bill Buxton
  • 31. Embodiment using Animatronics Stefan Marti 2005, Autonomous Interactive Intermediaries 2005, Physical Embodiments for Mobile Communication Agents
  • 32. Kinematics Gears and mechanical models Geometry of pure motion without reference to force or mass Cornell University Library, Kinematic Examples from Models for Design Digital Library www.flying-pig.co.uk (KMODDL) Tutorials, models, e-books, e.g. Linkages Chapter 3 in Building Robot Drive Trains
  • 33. PWM Tutorials ITP Servo tutorial Principial Labs Arduino Servo Driving a Unipolar Stepper Motor Driving a Bipolar Stepper Motor ITP Servo lab, uses a potentiometer to Making an RC Servo wall following car control the servo.
  • 34. Arduino Library Software Servo Library attach(int) Turn a pin into a servo driver. detach() Release a pin from servo driving. write(int) Set the angle of the servo in degrees, 0 to 180. read() return that value set with the last write(). attached() return 1 if the servo is currently attached. refresh() must call once every 50ms to keep servos updated, won't call more than every 20ms setMinimumPulse(uint16_t) set the duration of the 0 degree pulse in microseconds. (default minimum value is 544 microseconds) setMaximumPulse(uint16_t) set the duration of the 180 degree pulse in microseconds. (default maximum pluse value is 2400 microsconds) Need to first send position with write() before you can receive any control signals
  • 36. Projects and Prototyping Trade-offs Re-programmable
  • 38. Capacitors Stores charge With resistors I = C * dV/dt RC Circuit, parallel or series low-pass or high-pass filtering removal of electrical noise
  • 39. Resistor Color Code 4-band Color Code 10K ! ± 5% 5 - band Color Code 47.5 K ! ± 1% 6 - band Color Code 276 ! ± 5% Multiplier Tolerance SLV 0.01 SLV ± 10% 1st Digit 2nd Digit 3rd Digit GLD 0.1 Temperature GLD ± 5% Coefficient BLK-0 BLK-0 BLK-0 BLK-1 BRN-100ppm BRN-1 BRN-1 BRN-1 BRN-10 BRN ± 1% RED-50ppm RED-2 RED-2 RED-2 RED-100 RED ± 2% ORN-15ppm ORN-3 ORN-3 ORN-3 ORN-1K YEL-25ppm YEL-10K YEL-4 YEL-4 YEL-4 GRN-100K GRN-5 GRN-5 GRN-5 GRN ± 0.5% BLU-6 BLU-6 BLU-6 BLU-1M BLU- ± 0.25% VIO-7 VIO-7 VIO-7 VIO-10M VIO ± 0.1% GRY-8 GRY-8 GRY-8 GRY-8 WHT-9 WHT-9 WHT-9
  • 42. Diodes LEDs, Zener, Schottky, Photo Pass current in one direction only Forward voltage drop e.g. forward voltage drop of 0.7 V in circuit where input is 5V will have voltage of 4.3V on its far side Rectification Removal of negative voltages from signal, i.e. a bridge rectifier LED, 1.6V forward voltage drop, current limit 36mA, circuit total voltage 5V. VR = 5 - 1.6 = 3.4V R = V / I = 3.4 / 0.036 = 94.44 Ohm (at least 100 Ohm) P = V * I = 3.4 * 0.036 = 0.1224 W (at least 0.125W)
  • 45. RGB LEDs Ambient orb Cube of LEDS
  • 50. /* Two LEDs, tied to pin b0 and to b1 which correspond to physical pins 5 and 6 on ATTINY13 are turned on for 100ms and then off for 200ms */ #include <avr/io.h> #define F_CPU 1000000 // set to 1 MHz as delay.h needs F_CPU #include <util/delay.h> #include quot;pin_macros.hquot; // Leah Buechley's pin macros for AVRs - very useful int main(void) { // Set Port B pins for 3 and 4 as outputs b0_output; //initialize LED pin b1_output; //initialize LED pin b0_high; //LED is off b1_high; //LED is off DDRB = 0x18; // In binary this is 0001 1000 (note that is bit 3 and 4) for ( ; 1==1 ; ) // loop while 1 equals 1 - forever - C style loop { // Set Port B pins for 3 and 4 as HIGH (i.e. turn the LEDs on) b0_low; //LED is on b1_low; //LED is on _delay_loop_2(65535); b0_high; //LED is off b1_high; //LED is off _delay_loop_2(65535); } return 1; }
  • 51. /* Two LEDs, tied to pin b0 and to b1 which correspond to physical pins 5 and 6 on ATTINY13 are turned on for 100ms and then off for 200ms */ #include <avr/io.h> Include the #define F_CPU 1000000 // set to 1 MHz as delay.h needs F_CPU #include <util/delay.h> #include quot;pin_macros.hquot; // Leah Buechley's pin macros for AVRs - very useful libraries and set int main(void) the speed of chip { // Set Port B pins for 3 and 4 as outputs b0_output; //initialize LED pin b1_output; //initialize LED pin b0_high; //LED is off b1_high; //LED is off DDRB = 0x18; // In binary this is 0001 1000 (note that is bit 3 and 4) for ( ; 1==1 ; ) // loop while 1 equals 1 - forever - C style loop { // Set Port B pins for 3 and 4 as HIGH (i.e. turn the LEDs on) b0_low; //LED is on b1_low; //LED is on _delay_loop_2(65535); b0_high; //LED is off b1_high; //LED is off _delay_loop_2(65535); } return 1; }
  • 52. /* Two LEDs, tied to pin b0 and to b1 which correspond to physical pins 5 and 6 on ATTINY13 are turned on for 100ms and then off for 200ms */ #include <avr/io.h> #define F_CPU 1000000 // set to 1 MHz as delay.h needs F_CPU #include <util/delay.h> #include quot;pin_macros.hquot; // Leah Buechley's pin macros for AVRs - very useful Setup LED pins, Data int main(void) { // Set Port B pins for 3 and 4 as outputs Direction Register and b0_output; //initialize LED pin b1_output; //initialize LED pin turn LEDS off. b0_high; //LED is off b1_high; //LED is off DDRB = 0x18; // In binary this is 0001 1000 (note that is bit 3 and 4) for ( ; 1==1 ; ) // loop while 1 equals 1 - forever - C style loop { // Set Port B pins for 3 and 4 as HIGH (i.e. turn the LEDs on) b0_low; //LED is on b1_low; //LED is on _delay_loop_2(65535); b0_high; //LED is off b1_high; //LED is off _delay_loop_2(65535); } return 1; }
  • 53. /* Two LEDs, tied to pin b0 and to b1 which correspond to physical pins 5 and 6 on ATTINY13 are turned on for 100ms and then off for 200ms */ #include <avr/io.h> #define F_CPU 1000000 // set to 1 MHz as delay.h needs F_CPU #include <util/delay.h> #include quot;pin_macros.hquot; // Leah Buechley's pin macros for AVRs - very useful Loop - Turn the pins int main(void) { // Set Port B pins for 3 and 4 as outputs on, wait for 262ms, and b0_output; //initialize LED pin b1_output; //initialize LED pin turn off. Repeat. b0_high; //LED is off b1_high; //LED is off DDRB = 0x18; // In binary this is 0001 1000 (note that is bit 3 and 4) for ( ; 1==1 ; ) // loop while 1 equals 1 - forever - C style loop { // Set Port B pins for 3 and 4 as HIGH (i.e. turn the LEDs on) b0_low; //LED is on b1_low; //LED is on _delay_loop_2(65535); b0_high; //LED is off b1_high; //LED is off _delay_loop_2(65535); } return 1; }
  • 54. # Makefile for sample_led_program for ATtiny13 chip # Note: to use makefile with a different chip change all # mmcu statements (-mmcu=attiny13) to reflect new chip # also change the part option (-p t13) for the avrdude install command # default target when quot;makequot; is run w/o arguments all: sample_led_program.rom # compile sample_led_program.c into sample_led_program.o sample_led_program.o: sample_led_program.c avr-gcc -c -g -O0 -Wall -mmcu=attiny13 sample_led_program.c -o sample_led_program.o # link up sample_led_program.o into sample_led_program.elf sample_led_program.elf: sample_led_program.o avr-gcc sample_led_program.o -Wall,-nm,-Map=sample_led_program.map,--cref - mmcu=attiny13 -o sample_led_program.elf # copy ROM (FLASH) object out of sample_led_program.elf into sample_led_program.rom sample_led_program.rom: sample_led_program.elf avr-objcopy -O ihex sample_led_program.elf sample_led_program.rom # command to program chip (invoked by running quot;make installquot;) install: avrdude -c usbtiny -p t13 -e -U flash:w:sample_led_program.rom # command to clean up junk (no source files) (invoked by quot;make cleanquot;) clean: rm -f *.o *.rom *.elf *.map *~
  • 55. # Makefile for sample_led_program for ATtiny13 chip # Note: to use makefile with a different chip change all # mmcu statements (-mmcu=attiny13) to reflect new chip # also change the part option (-p t13) for the avrdude install command When Make is run, # default target when quot;makequot; is run w/o arguments all: sample_led_program.rom needs a target # compile sample_led_program.c into sample_led_program.o sample_led_program.o: sample_led_program.c avr-gcc -c -g -O0 -Wall -mmcu=attiny13 sample_led_program.c -o sample_led_program.o # link up sample_led_program.o into sample_led_program.elf sample_led_program.elf: sample_led_program.o avr-gcc sample_led_program.o -Wall,-nm,-Map=sample_led_program.map,--cref - mmcu=attiny13 -o sample_led_program.elf # copy ROM (FLASH) object out of sample_led_program.elf into sample_led_program.rom sample_led_program.rom: sample_led_program.elf avr-objcopy -O ihex sample_led_program.elf sample_led_program.rom # command to program chip (invoked by running quot;make installquot;) install: avrdude -c usbtiny -p t13 -e -U flash:w:sample_led_program.rom # command to clean up junk (no source files) (invoked by quot;make cleanquot;) clean: rm -f *.o *.rom *.elf *.map *~
  • 56. # Makefile for sample_led_program for ATtiny13 chip # Note: to use makefile with a different chip change all # mmcu statements (-mmcu=attiny13) to reflect new chip # also change the part option (-p t13) for the avrdude install command Use avr-gcc to compile # default target when quot;makequot; is run w/o arguments all: sample_led_program.rom ‘c’ program # compile sample_led_program.c into sample_led_program.o sample_led_program.o: sample_led_program.c avr-gcc -c -g -O0 -Wall -mmcu=attiny13 sample_led_program.c -o sample_led_program.o # link up sample_led_program.o into sample_led_program.elf sample_led_program.elf: sample_led_program.o avr-gcc sample_led_program.o -Wall,-nm,-Map=sample_led_program.map,--cref - mmcu=attiny13 -o sample_led_program.elf # copy ROM (FLASH) object out of sample_led_program.elf into sample_led_program.rom sample_led_program.rom: sample_led_program.elf avr-objcopy -O ihex sample_led_program.elf sample_led_program.rom # command to program chip (invoked by running quot;make installquot;) install: avrdude -c usbtiny -p t13 -e -U flash:w:sample_led_program.rom # command to clean up junk (no source files) (invoked by quot;make cleanquot;) clean: rm -f *.o *.rom *.elf *.map *~
  • 57. # Makefile for sample_led_program for ATtiny13 chip # Note: to use makefile with a different chip change all # mmcu statements (-mmcu=attiny13) to reflect new chip # also change the part option (-p t13) for the avrdude install command Use avr-gcc on `o’ obj # default target when quot;makequot; is run w/o arguments all: sample_led_program.rom file to create `elf’ file # compile sample_led_program.c into sample_led_program.o sample_led_program.o: sample_led_program.c avr-gcc -c -g -O0 -Wall -mmcu=attiny13 sample_led_program.c -o sample_led_program.o # link up sample_led_program.o into sample_led_program.elf sample_led_program.elf: sample_led_program.o avr-gcc sample_led_program.o -Wall,-nm,-Map=sample_led_program.map,--cref - mmcu=attiny13 -o sample_led_program.elf # copy ROM (FLASH) object out of sample_led_program.elf into sample_led_program.rom sample_led_program.rom: sample_led_program.elf avr-objcopy -O ihex sample_led_program.elf sample_led_program.rom # command to program chip (invoked by running quot;make installquot;) install: avrdude -c usbtiny -p t13 -e -U flash:w:sample_led_program.rom # command to clean up junk (no source files) (invoked by quot;make cleanquot;) clean: rm -f *.o *.rom *.elf *.map *~
  • 58. # Makefile for sample_led_program for ATtiny13 chip # Note: to use makefile with a different chip change all # mmcu statements (-mmcu=attiny13) to reflect new chip # also change the part option (-p t13) for the avrdude install command Use avr-objcopy to # default target when quot;makequot; is run w/o arguments create rom from elf file all: sample_led_program.rom # compile sample_led_program.c into sample_led_program.o sample_led_program.o: sample_led_program.c avr-gcc -c -g -O0 -Wall -mmcu=attiny13 sample_led_program.c -o sample_led_program.o # link up sample_led_program.o into sample_led_program.elf sample_led_program.elf: sample_led_program.o avr-gcc sample_led_program.o -Wall,-nm,-Map=sample_led_program.map,--cref - mmcu=attiny13 -o sample_led_program.elf # copy ROM (FLASH) object out of sample_led_program.elf into sample_led_program.rom sample_led_program.rom: sample_led_program.elf avr-objcopy -O ihex sample_led_program.elf sample_led_program.rom # command to program chip (invoked by running quot;make installquot;) install: avrdude -c usbtiny -p t13 -e -U flash:w:sample_led_program.rom # command to clean up junk (no source files) (invoked by quot;make cleanquot;) clean: rm -f *.o *.rom *.elf *.map *~
  • 59. # Makefile for sample_led_program for ATtiny13 chip # Note: to use makefile with a different chip change all # mmcu statements (-mmcu=attiny13) to reflect new chip # also change the part option (-p t13) for the avrdude install command Use avrdube and a # default target when quot;makequot; is run w/o arguments usbtiny to copy to the all: sample_led_program.rom # compile sample_led_program.c into sample_led_program.o ATtiny13 chip sample_led_program.o: sample_led_program.c avr-gcc -c -g -O0 -Wall -mmcu=attiny13 sample_led_program.c -o sample_led_program.o # link up sample_led_program.o into sample_led_program.elf sample_led_program.elf: sample_led_program.o avr-gcc sample_led_program.o -Wall,-nm,-Map=sample_led_program.map,--cref - mmcu=attiny13 -o sample_led_program.elf # copy ROM (FLASH) object out of sample_led_program.elf into sample_led_program.rom sample_led_program.rom: sample_led_program.elf avr-objcopy -O ihex sample_led_program.elf sample_led_program.rom # command to program chip (invoked by running quot;make installquot;) install: avrdude -c usbtiny -p t13 -e -U flash:w:sample_led_program.rom # command to clean up junk (no source files) (invoked by quot;make cleanquot;) clean: rm -f *.o *.rom *.elf *.map *~
  • 60. # Makefile for sample_led_program for ATtiny13 chip # Note: to use makefile with a different chip change all # mmcu statements (-mmcu=attiny13) to reflect new chip # also change the part option (-p t13) for the avrdude install command Clean up the files # default target when quot;makequot; is run w/o arguments all: sample_led_program.rom created # compile sample_led_program.c into sample_led_program.o sample_led_program.o: sample_led_program.c avr-gcc -c -g -O0 -Wall -mmcu=attiny13 sample_led_program.c -o sample_led_program.o # link up sample_led_program.o into sample_led_program.elf sample_led_program.elf: sample_led_program.o avr-gcc sample_led_program.o -Wall,-nm,-Map=sample_led_program.map,--cref - mmcu=attiny13 -o sample_led_program.elf # copy ROM (FLASH) object out of sample_led_program.elf into sample_led_program.rom sample_led_program.rom: sample_led_program.elf avr-objcopy -O ihex sample_led_program.elf sample_led_program.rom # command to program chip (invoked by running quot;make installquot;) install: avrdude -c usbtiny -p t13 -e -U flash:w:sample_led_program.rom # command to clean up junk (no source files) (invoked by quot;make cleanquot;) clean: rm -f *.o *.rom *.elf *.map *~
  • 61.
  • 63. Call the Install part of Makefile which calls avrdude
  • 64. Run avrdude, it reads the rom, writes it to the chip and verifies this process
  • 65. Things To Remember Safety first, last, and always do not take another person’s work about the state of a piece of equipment, always check yourself and make sure its safe for you to work use the right tool for the job treat each tool with respect and rack them back in their correct place when they are not in use, don’t leave a dangerous tool loose when it can harm somebody else don’t leave your safety glasses on the bench or in your pocket don’t work on a live circuit, turn the power off first don’t solder in an enclosed area without proper ventilation read the datasheet first and double check it to be sure get twice or three times the number of parts that you need for your circuit, you will make mistakes and sometimes you will have to throw an almost finished piece away
  • 66. Data Sheets Manufacturer’s details for particular electronic product typical device performance minimum and maximum requirements and characteristics device tolerances, what you can do without harming it suggestions for applications, uses, or just hints You don’t need to understand everything only need to focus on the parts that are of interest to your current problem
  • 67. Features • High Performance, Low Power AVR® 8-Bit Microcontroller • Advanced RISC Architecture – 120 Powerful Instructions – Most Single Clock Cycle Execution – 32 x 8 General Purpose Working Registers – Fully Static Operation – Up to 20 MIPS Througput at 20 MHz • High Endurance Non-volatile Memory segments – 1K Bytes of In-System Self-programmable Flash program memory – 64 Bytes EEPROM 8-bit – 64K Bytes Internal SRAM – Write/Erase cyles: 10,000 Flash/100,000 EEPROM Microcontroller – Data retention: 20 years at 85°C/100 years at 25°C(1) – Optional Boot Code Section with Independent Lock Bits with 1K Bytes In-System Programming by On-chip Boot Program True Read-While-Write Operation – Programming Lock for Software Security In-System • Peripheral Features – One 8-bit Timer/Counter with Prescaler and Two PWM Channels Programmable – 4-channel, 10-bit ADC with Internal Voltage Reference Example: – Programmable Watchdog Timer with Separate On-chip Oscillator Flash – On-chip Analog Comparator • Special Microcontroller Features – debugWIRE On-chip Debug System – In-System Programmable via SPI Port ATtiny13V – External and Internal Interrupt Sources Models – Low Power Idle, ADC Noise Reduction, and Power-down Modes ATtiny13 – Enhanced Power-on Reset Circuit – Programmable Brown-out Detection Circuit ATtiny13 – Internal Calibrated Oscillator • I/O and Packages Summary – 8-pin PDIP/SOIC: Six Programmable I/O Lines – 20-pad MLF: Six Programmable I/O Lines • Operating Voltage: – 1.8 - 5.5V for ATtiny13V If it is the short summary – 2.7 - 5.5V for ATtiny13 • Speed Grade or longer full datasheet – ATtiny13V: 0 - 4 MHz @ 1.8 - 5.5V, 0 - 10 MHz @ 2.7 - 5.5V – ATtiny13: 0 - 10 MHz @ 2.7 - 5.5V, 0 - 20 MHz @ 4.5 - 5.5V • Industrial Temperature Range • Low Power Consumption – Active Mode: 1 MHz, 1.8V: 240µA – Power-down Mode: < 0.1µA at 1.8V One page overview of models and capabilities Date Rev. 2535HS–AVR–10/07
  • 68. Pin Configurations Figure 1. Pinout ATtiny13 PDIP or SOIC are 8-PDIP/SOIC the only two (PCINT5/RESET/ADC0/dW) PB5 1 8 VCC package types (PCINT3/CLKI/ADC3) PB3 2 7 PB2 (SCK/ADC1/T0/PCINT2) we'll use. The (PCINT4/ADC2) PB4 3 6 PB1 (MISO/AIN1/OC0B/INT0/PCINT1) GND 4 5 PB0 (MOSI/AIN0/OC0A/PCINT0) other types require SMD soldering. 20-QFN/MLF NC NC NC NC NC 20 19 18 17 16 (PCINT5/RESET/ADC0/dW) PB5 1 15 VCC (PCINT3/CLKI/ADC3) PB3 2 14 PB2 (SCK/ADC1/T0/PCINT2) NC 3 13 NC NC 4 12 PB1 (MISO/AIN1/OC0B/INT0/PCINT1) Example: (PCINT4/ADC2) PB4 5 11 PB0 (MOSI/AIN0/OC0A/PCINT0) 10 6 7 8 9 NC NC GND NC NC NOTE: Bottom pad should be soldered to ground. NC: Not Connect ATtiny13 10-QFN/MLF (PCINT5/RESET/ADC0/dW) PB5 1 10 VCC (PCINT3/CLKI/ADC3) PB3 2 9 PB2 (SCK/ADC1/T0/PCINT2) NC 3 8 NC (PCINT4/ADC2) PB4 4 7 PB1 (MISO/AIN1/OC0B/INT0/PCINT1) GND 5 6 PB0 (MOSI/AIN0/OC0A/PCINT0) NOTE: Bottom pad should be soldered to ground. NC: Not Connect Overview The ATtiny13 is a low-power CMOS 8-bit microcontroller based on the AVR enhanced RISC architecture. By executing powerful instructions in a single clock cycle, the ATtiny13 achieves throughputs approaching 1 MIPS per MHz allowing the system designer to optimize power consumption versus processing speed. Date ATtiny13 2 2535HS–AVR–10/07
  • 69. Interrupt system to continue functioning. The Power-down mode saves the register con- tents, disabling all chip functions until the next Interrupt or Hardware Reset. The ADC Noise Reduction mode stops the CPU and all I/O modules except ADC, to minimize switching noise during ADC conversions. The device is manufactured using Atmel’s high density non-volatile memory technology. The On-chip ISP Flash allows the Program memory to be re-programmed In-System through an SPI serial interface, by a conventional non-volatile memory programmer or by an On-chip boot code running on the AVR core. The ATtiny13 AVR is supported with a full suite of program and system development tools including: C Compilers, Macro Assemblers, Program Debugger/Simulators, In-Cir- cuit Emulators, and Evaluation kits. Pin Descriptions Descriptions of the pins shown in the previous VCC Digital supply voltage. diagram with comments GND Ground. Example: Port B (PB5..PB0) Port B is a 6-bit bi-directional I/O port with internal pull-up resistors (selected for each bit). The Port B output buffers have symmetrical drive characteristics with both high sink and source capability. As inputs, Port B pins that are externally pulled low will source current if the pull-up resistors are activated. The Port B pins are tri-stated when a reset condition becomes active, even if the clock is not running. Port B also serves the functions of various special features of the ATtiny13 as listed on page 51. ATtiny13 RESET Reset input. A low level on this pin for longer than the minimum pulse length will gener- ate a reset, even if the clock is not running. The minimum pulse length is given in Table 12 on page 31. Shorter pulses are not guaranteed to generate a reset. Note: 1. Data Retention Reliability Qualification results show that the projected data retention failure rate is much less than 1 PPM over 20 years at 85°C or 100 years at 25!C. About Code This documentation contains simple code examples that briefly show how to use various parts of the device. These code examples assume that the part specific header file is Examples included before compilation. Be aware that not all C compiler vendors include bit defini- tions in the header files and interrupt handling in C is compiler dependent. Please confirm with the C compiler documentation for more details. ATtiny13 4 2535HS–AVR–10/07
  • 70. Electrical Characteristics Absolute Maximum Ratings* *NOTICE: Stresses beyond those listed under “Absolute Operating Temperature.................................. -55!C to +125!C Maximum Ratings” may cause permanent dam- age to the device. This is a stress rating only and Storage Temperature ..................................... -65°C to +150°C functional operation of the device at these or other conditions beyond those indicated in the Voltage on any Pin except RESET operational sections of this specification is not with respect to Ground ................................-0.5V to VCC+0.5V implied. Exposure to absolute maximum rating conditions for extended periods may affect Voltage on RESET with respect to Ground......-0.5V to +13.0V device reliability. Maximum Operating Voltage ............................................ 6.0V Descriptions of the what DC Current per I/O Pin ............................................... 40.0 mA maximum ratings for device are. DC Current VCC and GND Pins................................ 200.0 mA Running at these or beyond will DC Characteristics damage the device Example: T = -40!C to 85!C, V = 1.8V to 5.5V (unless otherwise noted)(1) A CC Symbol Parameter Condition Min. Typ. Max. Units VCC = 1.8V - 2.4V 0.2VCC Input Low Voltage except VIL -0.5 V RESET pin VCC = 2.4V - 5.5V 0.3VCC 0.7VCC(3) VCC = 1.8V - 2.4V Input High-voltage except VIH VCC +0.5 V 0.6VCC(3) RESET pin VCC = 2.4V - 5.5V ATtiny13 Input Low-voltage VIL1 VCC = 1.8V - 5.5 -0.5 0.1VCC V CLKI pin 0.8VCC(3) Input High-voltage VCC = 1.8V - 2.4V VIH1 VCC +0.5 V 0.7VCC(3) CLKI pin VCC = 2.4V - 5.5V Input Low-voltage VIL2 VCC = 1.8V - 5.5 -0.5 0.2VCC V RESET pin Input High-voltage 0.9VCC(3) VIH2 VCC = 1.8V - 5.5 VCC +0.5 V RESET pin Input Low-voltage VCC = 1.8V - 2.4V VIL3 -0.5 0.2VCC V RESET pin VCC = 2.4V - 5.5V 0.7VCC(3) Input High-voltage VCC = 1.8V - 2.4V VIH3 VCC +0.5 V 0.6VCC(3) RESET pin VCC = 2.4V - 5.5V Output Low Voltage(4) IOL = 20 mA, VCC = 5V 0.7 V VOL (PB1 and PB0) IOL = 10 mA, VCC = 3V 0.5 V Output Low Voltage(4) IOL = 10 mA, VCC = 5V 0.7 V VOL1 (PB5, PB4, PB3 and PB2) IOL = 5 mA, VCC = 3V 0.5 V IOL =TBD mA, VCC = Output Low Voltage(4) TBDV V VOL2 (PB5, Reset used as I/O) IOL =TBD mA, VCC = V TBDV Output High-voltage(5) IOH = -20 mA, VCC = 5V 4.2 V VOH ( PB1 and PB0) IOH = -10 mA, VCC = 3V 2.5 V ATtiny13 120 2535H–AVR–10/07
  • 71. ATtiny13 TA = -40quot;C to 85quot;C, VCC = 1.8V to 5.5V (unless otherwise noted)(1) (Continued) Symbol Parameter Condition Min. Typ. Max. Units (5) Output High-voltage IOH = -10 mA, VCC = 5V 4.2 V VOH1 (PB4, PB3 and PB2) IOH = -5 mA, VCC = 3V 2.5 V IOH = - TBD mA, VCC = Output High-voltage(5) TBDV V VOH2 (PB5, Reset used as I/O) IOH = - TBD mA, VCC = V TBDV Some chips have internal resistors Vcc = 5.5V, pin low Input Leakage IIL 1 µA which you can use for inputs, here Current I/O Pin (absolute value) Vcc = 5.5V, pin high Input Leakage is where you can find their value IIH 1 µA Current I/O Pin (absolute value) RRST Reset Pull-up Resistor 30 80 k! Rpu I/O Pin Pull-up Resistor 20 50 k! Active 1MHz, VCC = 2V 0.35 mA Active 4MHz, VCC = 3V 1.8 mA Example: Active 8MHz, VCC = 5V 6 mA Power Supply Current Idle 1MHz, VCC = 2V 0.08 0.2 mA ICC Idle 4MHz, VCC = 3V 0.41 1 mA Idle 8MHz, VCC = 5V 1.6 3 mA WDT enabled, VCC = 3V <5 10 µA Power-down mode ATtiny13 WDT disabled, VCC = 3V < 0.5 2 µA Analog Comparator Input VCC = 5V VACIO < 10 40 mV Offset Voltage Vin = VCC/2 Analog Comparator Input VCC = 5V IACLK -50 50 nA Leakage Current Vin = VCC/2 Analog Comparator VCC = 2.7V 750 tACPD ns Propagation Delay VCC = 4.0V 500 Notes: 1. All DC Characteristics contained in this data sheet are based on simulation and characterization of other AVR microcontrol- lers manufactured in the same process technology. These values are representing design targets, and will be updated after characterization of actual silicon. 2. “Max” means the highest value where the pin is guaranteed to be read as low. 3. “Min” means the lowest value where the pin is guaranteed to be read as high. 4. Although each I/O port can sink more than the test conditions (20 mA at VCC = 5V, 10 mA at VCC = 3V for PB5, PB1:0, 10 mA at VCC = 5V, 5 mA at VCC = 3V for PB4:2) under steady state conditions (non-transient), the following must be observed: 1] The sum of all IOL, for all ports, should not exceed 60 mA. If IOL exceeds the test condition, VOL may exceed the related specification. Pins are not guaranteed to sink current greater than the listed test condition. 5. Although each I/O port can source more than the test conditions (20 mA at VCC = 5V, 10 mA at VCC = 3V for PB5, PB1:0, 10 mA at VCC = 5V, 5 mA at VCC = 3V for PB4:2) under steady state conditions (non-transient), the following must be observed: 1] The sum of all IOH, for all ports, should not exceed 60 mA. If IOH exceeds the test condition, VOH may exceed the related specification. Pins are not guaranteed to source current greater than the listed test condition. 121 2535H–AVR–10/07