02 general purpose input - output on the arduino

31
Input & Output Arduino - 2 Wilson Wingston Sharon [email protected]

Upload: wingston

Post on 14-May-2015

1.459 views

Category:

Education


2 download

DESCRIPTION

Learn how to use LEDs, Switches effectively on the Arduino microcontroller platform.

TRANSCRIPT

Page 1: 02   General Purpose Input -  Output on the Arduino

Input & OutputArduino - 2

Wilson Wingston [email protected]

Page 2: 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.

Page 3: 02   General Purpose Input -  Output on the Arduino

Digital and Analogue information

0Signals can be defined as any time varying quantity that can be said to represent information.

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

0Analogue signals are not restricted to any particular state but continuously changes itself w.r.t. time.

Page 4: 02   General Purpose Input -  Output on the Arduino

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.

Page 5: 02   General Purpose Input -  Output on the Arduino

Ports

0A microcontroller can digitally communicate with the outside world through Ports.

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

0Ports are a collection of PINS on the microcontroller.

0Each pin can be controlled digitally by the microcontroller.

Page 6: 02   General Purpose Input -  Output on the Arduino

PORTS on the arduino

0The atmega328 has three ports0 B (digital pin 8 to 13) 0 C (analog input pins) 0 D (digital pins 0 to 7)

0Each Port has a 0 PORTx register that controls the value of the port.0 DDRx register that controls the port from output/input

mode.

Page 7: 02   General Purpose Input -  Output on the Arduino

Digital Pins

0Numbered 1 – 13 on the ardiono.

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

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

0digitalread(pin) returns the state of the pin.

Page 8: 02   General Purpose Input -  Output on the Arduino

Digital PIN as output

0The pin is in a state of low impedance.

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

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

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

Page 9: 02   General Purpose Input -  Output on the Arduino

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.

Page 10: 02   General Purpose Input -  Output on the Arduino

PIN13 on the Arduino

0 The arduino has an LED + resistor mounted on the board.

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

0Can you make it blink faster? 0Then slower?

Page 11: 02   General Purpose Input -  Output on the Arduino

Connecting External LED

0Open folder 2.LED Breadboard

0Connect LEDs as shown in the circuit diagram.

0Avoid connecting multiple LEDs to a single PIN.

0 If the PIN is HIGH the LED will light up.

Page 12: 02   General Purpose Input -  Output on the Arduino
Page 13: 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 randomly0 Pin may capacitively couple & report the state of a nearby pin.

Page 14: 02   General Purpose Input -  Output on the Arduino

Switches

0Switches are mechanical devices that “switch” between VCC and GND states.

Page 15: 02   General Purpose Input -  Output on the Arduino

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.

Page 16: 02   General Purpose Input -  Output on the Arduino

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.

Page 17: 02   General Purpose Input -  Output on the Arduino

Reading a switch

0Open 3. LED_Switch folder.

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

0Run Switch 1.pde on the arduino IDE and upload it onto the arduino.

Page 18: 02   General Purpose Input -  Output on the Arduino
Page 19: 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.

Page 20: 02   General Purpose Input -  Output on the Arduino

Interrupts

0 Interrupts are signals that indicate to the microcontroller that a particular event has occurred.

0 Internal0 Divide by 0 interrupts0 Timer interrupts0 ADC interrupts

0External0 Pin 2 & 3

Page 21: 02   General Purpose Input -  Output on the Arduino

External Interrupt

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

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

0 INT0 is on pin2 and INT1 is on pin3

0Use attachinterrupt() to associate interrupts to a function.

Page 22: 02   General Purpose Input -  Output on the Arduino

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.

Page 23: 02   General Purpose Input -  Output on the Arduino

The ISR

0The interrupt service routine is the function that is called every time the interrupt fires.

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

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

0All variables that get modified within the ISR must be volatile.

Page 24: 02   General Purpose Input -  Output on the Arduino

#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;}

Page 25: 02   General Purpose Input -  Output on the Arduino

Remember

0Make sure there are no loose connections on the breadboard.

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

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

0Don’t dismantle your circuits after completion.

Page 26: 02   General Purpose Input -  Output on the Arduino

Communication

0 Information is also transferred from arduino to computer by setting a pin HIGH or LOW in sucession to create a data waveform.

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

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

0Kinda simillarish to morse code.

Page 27: 02   General Purpose Input -  Output on the Arduino

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.

Page 28: 02   General Purpose Input -  Output on the Arduino

Baud rate

0Baud rate is the unit of symbol rate.

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

Page 29: 02   General Purpose Input -  Output on the Arduino

usage

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

0 In loop, use serial.println(data)

0Open serial monitor to see data.

Page 30: 02   General Purpose Input -  Output on the Arduino

Serial Program

0Open the folder 4. Serial and upload the arduino with the code.

0The program prints numbers from 1-100 sequentially.

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

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

Page 31: 02   General Purpose Input -  Output on the Arduino

Question Time