SlideShare a Scribd company logo
02   General Purpose Input -  Output on the Arduino
Signals
0 Information is transferred in the digital/analogue world by
 signals.

0 Electrical Signals are given a logic equivalency to enable
 control and sensing from the physical universe.

0 1 == High == True == 3-5V

0 0 == Low == False == 0-2V

0 And thus the binary number system was born.
Digital and Analogue
            information
0 Signals can be defined as any time varying quantity
 that can be said to represent information.

0 Digital signals, at any given point of time take up only
 one of a few discrete predefined states.

0 Analogue signals are not restricted to any particular
 state but continuously changes itself w.r.t. time.
Hardware communication
0 Every electronic system will have two logic levels called
 VCC and GND.

0 Analogue signals in this can take any value between VCC
 and GND.

0 Digital Signals can only take the states of VCC and GND
 states.

0 Digital devices either control or respond to either VCC or
 GND.
Ports
0 A microcontroller can digitally communicate with the
 outside world through Ports.

0 Every microcontroller has its own PORTs controlled
 by specific port registers.

0 Ports are a collection of PINS on the microcontroller.

0 Each pin can be controlled digitally by the
 microcontroller.
PORTS on the arduino
0 The atmega328 has three ports
   0 B (digital pin 8 to 13)
   0 C (analog input pins)
   0 D (digital pins 0 to 7)


0 Each Port has a
   0 PORTx register that controls the value of the port.
   0 DDRx register that controls the port from output/input
     mode.
Digital Pins
0 Numbered 1 – 13 on the ardiono.


0 Can be set to Input/Output by pinMode(pin) function.


0 Can be set to output by digitalwrite(pin, state)
 function.

0 digitalread(pin) returns the state of the pin.
Digital PIN as output
0 The pin is in a state of low impedance.

0 This means the pin can supply current to other
 circuits. (40mA)

0 Shorts or attempting to draw more current can
 damage the transistors on that pin (or fry the board).

0 Use resistors to limit current from the pins. (1-
 10kohms)
LEDs
0 Light Emitting diode.

0 Use R = (VS - VL) / I to calculate the
  resistor value to put in series.
  0 Vs = 5V; VL = 2V (depends on color)
  0 I = 40mA (max current required)

0 Do not connect LEDs in parallel!!

0 The longer end is VCC and the shorter end
  is GND.
PIN13 on the Arduino
0 The arduino has an LED + resistor mounted on the
 board.

0 Open the program in folder 1. Blink in the arduino IDE.
0 Upload that program onto the board.
0 Watch blinky!


0 Can you make it blink faster?
0 Then slower?
Connecting External LED
0 Open folder 2.LED Breadboard


0 Connect LEDs as shown in the circuit diagram.


0 Avoid connecting multiple LEDs to a single PIN.


0 If the PIN is HIGH the LED will light up.
02   General Purpose Input -  Output on the Arduino
Digital Input
0 Digital Input can be sensed by all digital pins of the
  arduino.

0 Pins when set up as inputs are said to be in a High
  impedance state.
0 Which means they tend to draw very little current from the
  circuit they are sensing and that means that small changes
  in current are enough to change the state of the PIN.

0 If an input pin is left unconnected:
   0 State may change randomly
   0 Pin may capacitively couple & report the state of a nearby pin.
Switches
0 Switches are mechanical devices that “switch”
 between VCC and GND states.
Switching states
0 We need to switch between VCC and GND to use with
  digitalread().

0 But, tactile switches can only open and close circuits.

0 In each of the cases, if switch is pressed, the PIN goes into a
  state, when released the PIN is disconnected or in a random
  state.
Enter Pull-down resistors
0 Using these resistors (10kohms) provide both
 states with a single push button switch.

0 When unpressed, the PIN state will read the GND
 state through the pull-down resistor. (the
 Resistor pulls the pin to GND when no i/p is
 present)

0 When pressed, the switch will read the VCC
 because it is the path of least resistance.

0 If VCC and GND are swapped in the diagram, the
 resistor is called a Pull-up resistor with reversal
 in logic levels.
Reading a switch
0 Open 3. LED_Switch folder.


0 Connect switch + resistor and LED + resistor circuits
 from the breadboard as shown.

0 Run Switch 1.pde on the arduino IDE and upload it
 onto the arduino.
02   General Purpose Input -  Output on the Arduino
Code
0 Switch is read using digital read. This will return either 1
  or 0. (HIGH / LOW).

0 This is stored in a variable.

0 LED is set to that variable.

0 So if switch is pressed, 1 is sensed and LED is set to 1.
0 When switch is released, 0 is sensed and LED turns off.

0 Voila!! LED is controlled by a switch.
Interrupts
0 Interrupts are signals that indicate to the
 microcontroller that a particular event has occurred.

0 Internal
   0 Divide by 0 interrupts
   0 Timer interrupts
   0 ADC interrupts

0 External
   0 Pin 2 & 3
External Interrupt
0 Pin 2 and 3 are set up for external interrupts.


0 Allow the arduino to continue doing tasks intstead of
 continuosly checking for external signal changes.

0 INT0 is on pin2 and INT1 is on pin3


0 Use attachinterrupt() to associate interrupts to a
 function.
attachInterrupt(interrupt, function, mode)

0 Interrupt: can be either 0 or 1 signifing which interrupt is
 being set up.

0 Function : is the name of the function to be called when
 the interrupt fires.

0 Mode:
  0 LOW to trigger the interrupt whenever the pin is low,
  0 CHANGE to trigger the interrupt whenever the pin changes
    value
  0 RISING to trigger when the pin goes from low to high,
  0 FALLING for when the pin goes from high to low.
The ISR
0 The interrupt service routine is the function that is
 called every time the interrupt fires.

0 Delay() and millis() are not supported inside an ISR.

0 Serial data received might be lost when the ISR
 returns.

0 All variables that get modified within the ISR must be
 volatile.
#include <avr/interrupt.h>

int ledPin = 12;
volatile int state = LOW;
void setup() {
  Serial.begin(9600);
  pinMode(12, OUTPUT);
  attachInterrupt(0, blink, FALLING);
}

void loop() {
  digitalWrite(ledPin,state);
}

void blink(){
  state = !state;
}
Remember
0 Make sure there are no loose connections on the
 breadboard.

0 Make sure you’ve gotten the upload successful
 message on the IDE.

0 Make sure switch GND, LED’s GND and arduino’s GND
 are one.

0 Don’t dismantle your circuits after completion.
Communication
0 Information is also transferred from arduino to
 computer by setting a pin HIGH or LOW in sucession
 to create a data waveform.

0 Each of this ‘1’s and ‘0’s are called as “bits”.


0 Because the data is transferred one after another on
 the same line, it is called serial transfer of data.

0 Kinda simillarish to morse code.
TX and RX pins
0 These pins light up when serial
  data is transmitted or received.

0 In the Arduino, the serial port
  goes through the FTDI chip and is
  converted to USB.

0 Pins 0 & 1 are the serial pins and
  serial data can be tapped from
  these pins.

0 Don’t use these pins for GPIO
  during serial transfers.
Baud rate
0 Baud rate is the unit of symbol rate.

0 A baud rate of 1 kBd = 1,000 Bd is synonymous to a
  symbol rate of 1,000 symbols per second.

0 In binary, a symbol is either a ‘1’ or ‘0’.

0 In serial communication systems, both the receiving
  machine and the transmitting system should be set to
  the same baud rate. (9600/11500 usually)
usage

0 In setup(){ } put serial.begin(9600);


0 In loop, use serial.println(data)


0 Open serial monitor to see data.
Serial Program
0 Open the folder 4. Serial and upload the arduino with
 the code.

0 The program prints numbers from 1-100 sequentially.

0 Use the serial monitor on the Arduino to see the
 stream.

0 Any program can open the COMx port associated with
 your arduino and read data transmitted by the
 arduino.
Question Time

More Related Content

PDF
Arduino Workshop Day 1 - Basic Arduino
PPTX
8051 programming skills using EMBEDDED C
PPTX
Embedded c
PPTX
STM32 Microcontroller Clocks and RCC block
PPT
Embedded System Basics
PDF
Introduction to pic microcontroller
PPTX
CPLD (COMPLEX PROGRAMMABLE LOGIC DEVICES)
PDF
Arduino Workshop Day 1 - Basic Arduino
8051 programming skills using EMBEDDED C
Embedded c
STM32 Microcontroller Clocks and RCC block
Embedded System Basics
Introduction to pic microcontroller
CPLD (COMPLEX PROGRAMMABLE LOGIC DEVICES)

What's hot (20)

PPTX
Embedded system design using arduino
PDF
Communication protocols - Embedded Systems
PPTX
Introduction to Arduino Hardware and Programming
PDF
MIPI DevCon 2020 | Why an Integrated MIPI C-PHY/D-PHY IP is Essential
PPTX
Esp8266 NodeMCU
PPTX
Introduction to the Arduino
PPT
Quality attributes of Embedded Systems
PPTX
18CS44-MODULE3-PPT.pptx
PDF
Introduction to ARM LPC2148
PDF
Introduction to arm architecture
PDF
Arduino presentation
PPTX
Introduction To Raspberry Pi with Simple GPIO pin Control
PPT
Cmos design rule
PDF
Esp8266 basics
PPTX
Arduino Workshop
PPTX
Internet of Things Using Arduino
PPTX
PIC Microcontrollers
PPTX
Introduction to Node MCU
PPT
Switch level modeling
PPTX
I2C Protocol
Embedded system design using arduino
Communication protocols - Embedded Systems
Introduction to Arduino Hardware and Programming
MIPI DevCon 2020 | Why an Integrated MIPI C-PHY/D-PHY IP is Essential
Esp8266 NodeMCU
Introduction to the Arduino
Quality attributes of Embedded Systems
18CS44-MODULE3-PPT.pptx
Introduction to ARM LPC2148
Introduction to arm architecture
Arduino presentation
Introduction To Raspberry Pi with Simple GPIO pin Control
Cmos design rule
Esp8266 basics
Arduino Workshop
Internet of Things Using Arduino
PIC Microcontrollers
Introduction to Node MCU
Switch level modeling
I2C Protocol
Ad

Similar to 02 General Purpose Input - Output on the Arduino (20)

KEY
Intro to Arduino
PPTX
Introduction to Arduino Microcontroller
PDF
02 Sensors and Actuators Understand .pdf
PDF
introductiontoarduino-111120102058-phpapp02.pdf
PPT
01 Intro to the Arduino and it's basics.ppt
PDF
Starting with Arduino
PDF
Arduino workshop sensors
PPTX
Arduino Foundations
PPTX
Intro to Arduino.ppt
PPTX
Arduino Workshop Slides
PPTX
Arduino slides
PPTX
Arduino Workshop (3).pptx
PPT
arduino.ppt
PDF
Making things sense - Day 1 (May 2011)
PDF
Arduino-workshop.computer engineering.pdf
PPTX
Electronz_Chapter_2.pptx
PPTX
INTODUCTION OF IOT AND INTERFACING WITH ARDUINO UNO
PPT
Intro to Arduino
PDF
Arduino spooky projects_class3
Intro to Arduino
Introduction to Arduino Microcontroller
02 Sensors and Actuators Understand .pdf
introductiontoarduino-111120102058-phpapp02.pdf
01 Intro to the Arduino and it's basics.ppt
Starting with Arduino
Arduino workshop sensors
Arduino Foundations
Intro to Arduino.ppt
Arduino Workshop Slides
Arduino slides
Arduino Workshop (3).pptx
arduino.ppt
Making things sense - Day 1 (May 2011)
Arduino-workshop.computer engineering.pdf
Electronz_Chapter_2.pptx
INTODUCTION OF IOT AND INTERFACING WITH ARDUINO UNO
Intro to Arduino
Arduino spooky projects_class3
Ad

More from Wingston (20)

PPTX
OpenCV @ Droidcon 2012
PPTX
05 content providers - Android
PPTX
04 activities - Android
PPTX
03 layouts & ui design - Android
PPTX
02 hello world - Android
PPTX
01 introduction & setup - Android
PPTX
OpenCV with android
PPTX
C game programming - SDL
PPTX
C programming - Pointers
PPTX
Introduction to Basic C programming 02
PPT
Introduction to Basic C programming 01
PPTX
Linux – an introduction
PPTX
Embedded linux
PPTX
04 Arduino Peripheral Interfacing
PPTX
03 analogue anrduino fundamentals
PPTX
4.content mgmt
PPTX
8 Web Practices for Drupal
PPTX
7 Theming in Drupal
PPTX
6 Special Howtos for Drupal
PPTX
5 User Mgmt in Drupal
OpenCV @ Droidcon 2012
05 content providers - Android
04 activities - Android
03 layouts & ui design - Android
02 hello world - Android
01 introduction & setup - Android
OpenCV with android
C game programming - SDL
C programming - Pointers
Introduction to Basic C programming 02
Introduction to Basic C programming 01
Linux – an introduction
Embedded linux
04 Arduino Peripheral Interfacing
03 analogue anrduino fundamentals
4.content mgmt
8 Web Practices for Drupal
7 Theming in Drupal
6 Special Howtos for Drupal
5 User Mgmt in Drupal

Recently uploaded (20)

PDF
Yogi Goddess Pres Conference Studio Updates
PPTX
GDM (1) (1).pptx small presentation for students
PDF
RMMM.pdf make it easy to upload and study
PDF
A systematic review of self-coping strategies used by university students to ...
PDF
Black Hat USA 2025 - Micro ICS Summit - ICS/OT Threat Landscape
PDF
Classroom Observation Tools for Teachers
PDF
Trump Administration's workforce development strategy
PDF
Chinmaya Tiranga quiz Grand Finale.pdf
DOC
Soft-furnishing-By-Architect-A.F.M.Mohiuddin-Akhand.doc
PDF
O5-L3 Freight Transport Ops (International) V1.pdf
PDF
2.FourierTransform-ShortQuestionswithAnswers.pdf
PPTX
Cell Structure & Organelles in detailed.
PDF
O7-L3 Supply Chain Operations - ICLT Program
PPTX
human mycosis Human fungal infections are called human mycosis..pptx
PPTX
Final Presentation General Medicine 03-08-2024.pptx
PDF
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
PPTX
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
PPTX
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
PDF
Abdominal Access Techniques with Prof. Dr. R K Mishra
PDF
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
Yogi Goddess Pres Conference Studio Updates
GDM (1) (1).pptx small presentation for students
RMMM.pdf make it easy to upload and study
A systematic review of self-coping strategies used by university students to ...
Black Hat USA 2025 - Micro ICS Summit - ICS/OT Threat Landscape
Classroom Observation Tools for Teachers
Trump Administration's workforce development strategy
Chinmaya Tiranga quiz Grand Finale.pdf
Soft-furnishing-By-Architect-A.F.M.Mohiuddin-Akhand.doc
O5-L3 Freight Transport Ops (International) V1.pdf
2.FourierTransform-ShortQuestionswithAnswers.pdf
Cell Structure & Organelles in detailed.
O7-L3 Supply Chain Operations - ICLT Program
human mycosis Human fungal infections are called human mycosis..pptx
Final Presentation General Medicine 03-08-2024.pptx
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
Abdominal Access Techniques with Prof. Dr. R K Mishra
3rd Neelam Sanjeevareddy Memorial Lecture.pdf

02 General Purpose Input - Output on the Arduino

  • 2. Signals 0 Information is transferred in the digital/analogue world by signals. 0 Electrical Signals are given a logic equivalency to enable control and sensing from the physical universe. 0 1 == High == True == 3-5V 0 0 == Low == False == 0-2V 0 And thus the binary number system was born.
  • 3. Digital and Analogue information 0 Signals can be defined as any time varying quantity that can be said to represent information. 0 Digital signals, at any given point of time take up only one of a few discrete predefined states. 0 Analogue signals are not restricted to any particular state but continuously changes itself w.r.t. time.
  • 4. Hardware communication 0 Every electronic system will have two logic levels called VCC and GND. 0 Analogue signals in this can take any value between VCC and GND. 0 Digital Signals can only take the states of VCC and GND states. 0 Digital devices either control or respond to either VCC or GND.
  • 5. Ports 0 A microcontroller can digitally communicate with the outside world through Ports. 0 Every microcontroller has its own PORTs controlled by specific port registers. 0 Ports are a collection of PINS on the microcontroller. 0 Each pin can be controlled digitally by the microcontroller.
  • 6. PORTS on the arduino 0 The atmega328 has three ports 0 B (digital pin 8 to 13) 0 C (analog input pins) 0 D (digital pins 0 to 7) 0 Each Port has a 0 PORTx register that controls the value of the port. 0 DDRx register that controls the port from output/input mode.
  • 7. Digital Pins 0 Numbered 1 – 13 on the ardiono. 0 Can be set to Input/Output by pinMode(pin) function. 0 Can be set to output by digitalwrite(pin, state) function. 0 digitalread(pin) returns the state of the pin.
  • 8. Digital PIN as output 0 The pin is in a state of low impedance. 0 This means the pin can supply current to other circuits. (40mA) 0 Shorts or attempting to draw more current can damage the transistors on that pin (or fry the board). 0 Use resistors to limit current from the pins. (1- 10kohms)
  • 9. LEDs 0 Light Emitting diode. 0 Use R = (VS - VL) / I to calculate the resistor value to put in series. 0 Vs = 5V; VL = 2V (depends on color) 0 I = 40mA (max current required) 0 Do not connect LEDs in parallel!! 0 The longer end is VCC and the shorter end is GND.
  • 10. PIN13 on the Arduino 0 The arduino has an LED + resistor mounted on the board. 0 Open the program in folder 1. Blink in the arduino IDE. 0 Upload that program onto the board. 0 Watch blinky! 0 Can you make it blink faster? 0 Then slower?
  • 11. Connecting External LED 0 Open folder 2.LED Breadboard 0 Connect LEDs as shown in the circuit diagram. 0 Avoid connecting multiple LEDs to a single PIN. 0 If the PIN is HIGH the LED will light up.
  • 13. Digital Input 0 Digital Input can be sensed by all digital pins of the arduino. 0 Pins when set up as inputs are said to be in a High impedance state. 0 Which means they tend to draw very little current from the circuit they are sensing and that means that small changes in current are enough to change the state of the PIN. 0 If an input pin is left unconnected: 0 State may change randomly 0 Pin may capacitively couple & report the state of a nearby pin.
  • 14. Switches 0 Switches are mechanical devices that “switch” between VCC and GND states.
  • 15. Switching states 0 We need to switch between VCC and GND to use with digitalread(). 0 But, tactile switches can only open and close circuits. 0 In each of the cases, if switch is pressed, the PIN goes into a state, when released the PIN is disconnected or in a random state.
  • 16. Enter Pull-down resistors 0 Using these resistors (10kohms) provide both states with a single push button switch. 0 When unpressed, the PIN state will read the GND state through the pull-down resistor. (the Resistor pulls the pin to GND when no i/p is present) 0 When pressed, the switch will read the VCC because it is the path of least resistance. 0 If VCC and GND are swapped in the diagram, the resistor is called a Pull-up resistor with reversal in logic levels.
  • 17. Reading a switch 0 Open 3. LED_Switch folder. 0 Connect switch + resistor and LED + resistor circuits from the breadboard as shown. 0 Run Switch 1.pde on the arduino IDE and upload it onto the arduino.
  • 19. Code 0 Switch is read using digital read. This will return either 1 or 0. (HIGH / LOW). 0 This is stored in a variable. 0 LED is set to that variable. 0 So if switch is pressed, 1 is sensed and LED is set to 1. 0 When switch is released, 0 is sensed and LED turns off. 0 Voila!! LED is controlled by a switch.
  • 20. Interrupts 0 Interrupts are signals that indicate to the microcontroller that a particular event has occurred. 0 Internal 0 Divide by 0 interrupts 0 Timer interrupts 0 ADC interrupts 0 External 0 Pin 2 & 3
  • 21. External Interrupt 0 Pin 2 and 3 are set up for external interrupts. 0 Allow the arduino to continue doing tasks intstead of continuosly checking for external signal changes. 0 INT0 is on pin2 and INT1 is on pin3 0 Use attachinterrupt() to associate interrupts to a function.
  • 22. attachInterrupt(interrupt, function, mode) 0 Interrupt: can be either 0 or 1 signifing which interrupt is being set up. 0 Function : is the name of the function to be called when the interrupt fires. 0 Mode: 0 LOW to trigger the interrupt whenever the pin is low, 0 CHANGE to trigger the interrupt whenever the pin changes value 0 RISING to trigger when the pin goes from low to high, 0 FALLING for when the pin goes from high to low.
  • 23. The ISR 0 The interrupt service routine is the function that is called every time the interrupt fires. 0 Delay() and millis() are not supported inside an ISR. 0 Serial data received might be lost when the ISR returns. 0 All variables that get modified within the ISR must be volatile.
  • 24. #include <avr/interrupt.h> int ledPin = 12; volatile int state = LOW; void setup() { Serial.begin(9600); pinMode(12, OUTPUT); attachInterrupt(0, blink, FALLING); } void loop() { digitalWrite(ledPin,state); } void blink(){ state = !state; }
  • 25. Remember 0 Make sure there are no loose connections on the breadboard. 0 Make sure you’ve gotten the upload successful message on the IDE. 0 Make sure switch GND, LED’s GND and arduino’s GND are one. 0 Don’t dismantle your circuits after completion.
  • 26. Communication 0 Information is also transferred from arduino to computer by setting a pin HIGH or LOW in sucession to create a data waveform. 0 Each of this ‘1’s and ‘0’s are called as “bits”. 0 Because the data is transferred one after another on the same line, it is called serial transfer of data. 0 Kinda simillarish to morse code.
  • 27. TX and RX pins 0 These pins light up when serial data is transmitted or received. 0 In the Arduino, the serial port goes through the FTDI chip and is converted to USB. 0 Pins 0 & 1 are the serial pins and serial data can be tapped from these pins. 0 Don’t use these pins for GPIO during serial transfers.
  • 28. Baud rate 0 Baud rate is the unit of symbol rate. 0 A baud rate of 1 kBd = 1,000 Bd is synonymous to a symbol rate of 1,000 symbols per second. 0 In binary, a symbol is either a ‘1’ or ‘0’. 0 In serial communication systems, both the receiving machine and the transmitting system should be set to the same baud rate. (9600/11500 usually)
  • 29. usage 0 In setup(){ } put serial.begin(9600); 0 In loop, use serial.println(data) 0 Open serial monitor to see data.
  • 30. Serial Program 0 Open the folder 4. Serial and upload the arduino with the code. 0 The program prints numbers from 1-100 sequentially. 0 Use the serial monitor on the Arduino to see the stream. 0 Any program can open the COMx port associated with your arduino and read data transmitted by the arduino.