* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Slide 1
Flip-flop (electronics) wikipedia , lookup
Gender of connectors and fasteners wikipedia , lookup
Analog-to-digital converter wikipedia , lookup
Resistive opto-isolator wikipedia , lookup
Schmitt trigger wikipedia , lookup
Direction finding wikipedia , lookup
Radio transmitter design wikipedia , lookup
Operational amplifier wikipedia , lookup
Power electronics wikipedia , lookup
Valve RF amplifier wikipedia , lookup
Switched-mode power supply wikipedia , lookup
Trionic T5.5 wikipedia , lookup
Current mirror wikipedia , lookup
D-subminiature wikipedia , lookup
Transistor–transistor logic wikipedia , lookup
Microcontroller wikipedia , lookup
XLR connector wikipedia , lookup
Rectiverter wikipedia , lookup
Immunity-aware programming wikipedia , lookup
EMS1EP Lecture 5 Digital Outputs Dr. Robert Ross Overview (what you should learn today) • • • • Hardware Connections What the pins on the LArduino board do Setting pin directions digitalWrite() Hardware • Microcontrollers need to interact with the real world (sensing, computing and outputting) • Today we look at how the microcontroller can control or output data • There are lots of things we might want to control: – – – – – – LED Motor Servo Linear Actuator Relay Speaker Connecting hardware to the microcontroller • The pins on the microcontroller can only supply a small amount of current (<20mA) • Indicator LEDs are relatively low current (~515mA) and so they can be driven directly – larger current devices need another way to drive them Driving LEDs from an Arduino Datasheet gives current and voltage for LED For example: • Vf = 1.9V • If = 10mA Use KVL and ohms law to find the value of R Driving LEDs from an Arduino • Vf = 1.9V • If = 10mA R Vcc V f if • If Vcc = 5V • R = 310Ω Class Quiz • As Vcc, Vf and If may change depending on the circuit, what current limiting resistor is needed for the following: • Vcc = 3.3V • Vf = 2.1V • If = 15mA R Vcc V f if Driving higher currents • Use a transistor as a switch • Transistor has small base current but much larger collector current – so it can switch a higher load • For even higher loads use FETs as they have a lower on-resistance Pins on the LArduino Select between USB supplied power and power on V+ pin Reset switch Analog input pins for ADC GND, 5V and V+ Digital I/O Pins Pins with a ‘P’ can be used for pulse width modulation Driving a LED with the LArduino • Use 5V pin as Vcc • Use R = 330Ω Resistors • Set power to USB Driving a LED with the LArduino // PIN ASSIGNMENTS int ledPin = 10; // LED connected to digital pin10 // The setup() method runs once on startup void setup() { // initialize pin as output: pinMode(ledPin, OUTPUT); } // Infinite loop void loop() { digitalWrite(ledPin, HIGH); // LED OFF delay(1000); // Wait 1S digitalWrite(ledPin, LOW); // LED ON delay(1000); // Wait 1S } Digital Inputs and Outputs • The next two lectures will focus on the digital pins – the analog pins will come later • Before using the digital pins we need to set them up as either inputs or outputs • This is called setting the direction of the pins (input direction or output direction) • To do this we use the pinMode() function • Use pin assignments to refer to pins by name rather than number pinMode() function • Syntax: pinMode(<pin_number>, <direction>) • Normally some pins will be assigned at the top of your code • e.g. – int LED1Pin = 10; – int switchPin = 11; • These assignments are used for the pin number • Direction should be OUTPUT or INPUT • e.g. – pinMode(LED1Pin, OUTPUT); – pinMode(switchPin, INPUT); Class Quiz • Pins 5 and 9 have LEDs connected to them • Pin 7 has a speaker connected to it • Pins 6 and 12 have switches connected to them • Write code to assign names to these pins and then code to set the direction of these pins inside the setup() function digitalWrite() • After the direction of the pins has been setup the pins can either be set to high (5V) or low (0V) • digitalWrite() is used to set the value of each pin • Syntax: – digitalWrite(<Pin_Number>, <HIGH/LOW>); • e.g. //Sets pin to 5V – LED off digitalWrite(LED1Pin, HIGH); //Sets pin to 0V – LED on digitalWrite(LED1Pin, LOW); (0 and 1 can also be used to assign low and high respectively) Class Quiz • Use the digitalWrite() function to do the following: – Set the pin LED1Pin to 5V – Set the pin Buzzer1Pin to a logical low – Set the pin LED3Pin to High – Turn on the LED at LED2Pin (the LED is in a sinking arrangement as shown earlier) Class Challenge • Write a full sketch to alternately flash two LEDs (like a railway crossing) • LED flash period should be 1.5 seconds • LEDs on pins 10 and 12 • Write: – Pin assignments – Setup Function – Loop function Summary (What you learnt in this session) • How to interface an LED with an Arduino • What the different pins on the LArduino do • Setting up pins and inputs and outputs • Setting pins high and low