Arduino: Introduction & Programming: Course Instructor
Arduino: Introduction & Programming: Course Instructor
Arduino: Introduction & Programming: Course Instructor
Introduction &
Programming
Course Instructor:
Dr Huma Qayyum
What is an Arduino ?
• Open Source electronic prototyping platform based on flexible easy to
use hardware and software.
Technical specification
• Microcontroller ATmega328
• Operating Voltage 5V
• Input Voltage (recommended) 7-12V
• Input Voltage (limits) 6-20V
• Digital I/O Pins 14 (of which 6 provide PWM output)
• Analog Input Pins 6
• DC Current per I/O Pin 40 mA
• DC Current for 3.3V Pin 50 mA
• Flash Memory 32 KB of which 0.5 KB used by bootloader
• SRAM 2 KB
• EEPROM 1 KB
• Clock Speed 16 MHz
Power USB
Arduino board can be powered by using the USB cable from your computer. All you need to do is connect
the USB cable to the USB connection (1).
Voltage Regulator
The function of the voltage regulator is to control the voltage given to the Arduino board and stabilize
the DC voltages used by the processor and other elements.
Crystal Oscillator
The crystal oscillator helps Arduino in dealing with time issues. How does Arduino calculate time? The
answer is, by using the crystal oscillator. The number printed on top of the Arduino crystal is 16.000H9H.
It tells us that the frequency is 16,000,000 Hertz or 16 MHz.
Arduino Reset
You can reset your Arduino board, i.e., start your program from the beginning. You can reset the UNO
board in two ways. First, by using the reset button (17) on the board. Second, you can connect an
external reset button to the Arduino pin labelled RESET (5).
Main microcontroller
Each Arduino board has its own microcontroller (11). You can assume it as the brain of
your board. The main IC (integrated circuit) on the Arduino is slightly different from
board to board. The microcontrollers are usually of the ATMEL Company. You must
know what IC your board has before loading up a new program from the Arduino IDE.
This information is available on the top of the IC. For more details about the IC
construction and functions, you can refer to the data sheet.
ICSP pin
Mostly, ICSP (12) is an AVR, a tiny programming header for the Arduino consisting
of MOSI, MISO, SCK, RESET, VCC, and GND. It is often referred to as an SPI (Serial
Peripheral Interface), which could be considered as an "expansion" of the output.
Actually, you are slaving the output device to the master of the SPI bus.
Power LED indicator
This LED should light up when you plug your Arduino into a power source to
indicate that your board is powered up correctly. If this light does not turn on,
then there is something wrong with the connection.
TX and RX LEDs
On your board, you will find two labels: TX (transmit) and RX (receive). They
appear in two places on the Arduino UNO board. First, at the digital pins 0 and 1,
to indicate the pins responsible for serial communication. Second, the TX and RX
led (13). The TX led flashes with different speed while sending the serial data.
The speed of flashing depends on the baud rate used by the board. RX flashes
during the receiving process.
Digital I/O
The Arduino UNO board has 14 digital I/O pins (15) (of which 6 provide PWM (Pulse
Width Modulation) output. These pins can be configured to work as input digital pins to
read logic values (0 or 1) or as digital output pins to drive different modules like LEDs,
relays, etc. The pins labeled “~” can be used to generate PWM.
AREF
AREF stands for Analog Reference. It is sometimes, used to set an external reference
voltage (between 0 and 5 Volts) as the upper limit for the analog input pins.
Getting started with Programming
Bare minimum code
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
Bare minimum code
• loop : The loop functions runs continuously till the device is powered
off. The main logic of the code goes here.
PinMode
Description
• Pauses the program for the amount of time (in milliseconds) specified
as parameter. (There are 1000 milliseconds in a second.)
Syntax
• Delay(ms)
Parameters
• ms: the number of milliseconds to pause (unsigned long)
Returns
• Nothing
Reading/writing digital values
Description • Circuit
• Hardware Required
Arduino Board
LED
220 ohm resistor
Schematic
Code
void setup() {
// initialize digital pin LED_BUILTIN as an output.
// pinMode(LED_BUILTIN, OUTPUT);
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
}
Description Circuit
Connect the anode (the longer,
positive leg) of your LED to digital
output pin 9 on your board through
a 220 ohm resistor. Connect
the cathode (the shorter, negative
leg) directly to ground.
Schematic
Blinking Three Leds
Blinking three LEDs
• void setup() {
• // initialize digital pin LED_BUILTIN as an output.
• pinMode(11, OUTPUT);
• pinMode(12, OUTPUT);
• pinMode(13, OUTPUT);
•}
• #define trig 10
• #define echo 11
• int greenLED = 5;
• int yellowLED = 2;
• int redLED = 7;
• void setup() {
• pinMode(echo,INPUT);
• pinMode(trig,OUTPUT);
• pinMode(greenLED,OUTPUT);
• pinMode(yellowLED,OUTPUT);
• pinMode(redLED,OUTPUT);
• Serial.begin(9600);
•}
Water level sensor
• void loop() {
• // put your main code here, to run repeatedly:
• float d = distance();
• Serial.println(d);
• if (d>10)
• {
• Serial.println("Water Level is LOW");
• digitalWrite(greenLED,HIGH);
• digitalWrite(yellowLED,LOW);
• digitalWrite(redLED,LOW);
• }
Water
•
level sensor
• else if ( d>4.5 && d<10)
• {
• Serial.println("Water Level is AVG");
• digitalWrite(greenLED,LOW);
• digitalWrite(yellowLED,HIGH);
• digitalWrite(redLED,LOW);
• }
• else if ( d<4.5)
• {
• Serial.println("Water Level is HIGH");
• digitalWrite(greenLED,LOW);
• digitalWrite(yellowLED,LOW);
• digitalWrite(redLED,HIGH);
• }
• delay(500);
•}
Water level sensor
float distance() {
digitalWrite(trig,LOW);
delayMicroseconds(2);