0% found this document useful (0 votes)
108 views60 pages

Introduction To Arduino Programming: Jinasena Innovation & Technology Institute - Ekala

void setup() and void loop()

Uploaded by

Sanuji Kalhan
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
Download as pptx, pdf, or txt
0% found this document useful (0 votes)
108 views60 pages

Introduction To Arduino Programming: Jinasena Innovation & Technology Institute - Ekala

void setup() and void loop()

Uploaded by

Sanuji Kalhan
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1/ 60

INTRODUCTION TO ARDUINO

PROGRAMMING
Jinasena Innovation & Technology Institute - Ekala

Content Courtesy

DEC 2014
What is a Microcontroller ?
(µC, MCU)
• Computer on a single integrated chip
– Processor (CPU)
– Memory (RAM / ROM / Flash)
– I/O ports (USB, I2C, SPI, ADC)
• Companies that manufacture microcontrollers :
– Intel: 4004, 8008, etc.
– Atmel: AT and AVR
– Microchip: PIC
– Freescale: (multiple manufacturers)
• Used in:
– Cellphones,
– Toys
– Household appliances
– Cars
– Cameras

2
Shrinking a Microcontroller
Kinetis KL02
• 1.9 x 2.00 x 0.56 millimetres
• Good match for 'internet of things' devices

3
The ATmega328P Microcontroller
(used by Arduino UNO)

• AVR 8-bit RISC architecture


• Available in DIP package
• Up to 20 MHz clock
• 32kB flash memory
• 1 kB SRAM
• 23 programmable I/O channels
• Six 10-bit ADC inputs
• Three timers/counters
• Six PWM outputs

4
What is Arduino Not?

• It is not a chip (IC)


• It is not a board (PCB)
• It is not a company or a manufacturer
• It is not a programming language
• It is not a computer architecture

(although it involves all of these things...)

5
So what is Arduino?
It’s a movement, not a microcontroller:
• Founded by Massimo Banzi and David
Cuartielles in 2005
• Based on “Wiring Platform”, which dates to
2003
• Open-source hardware platform
• Open source development environment
– Easy-to learn language and libraries (based
on Wiring language)
– Integrated development environment (based
on Processing programming environment)
– Available for Windows / Mac / Linux

6
The Many Flavors of Arduino

• Arduino Uno
• Arduino Leonardo
• Arduino LilyPad
• Arduino Mega
• Arduino Nano
• Arduino Mini
• Arduino Mini Pro
• Arduino BT

7
Arduino Add-ons (Shields)

• TFT Touch Screen


• Data logger
• Motor/Servo shield
• Ethernet shield
• Audio wave shield
• Cellular/GSM shield
• WiFi shield
• Proto-shield
• ...many more

8
Getting to know the Arduino:
Electrical Inputs and Outputs
LED 14 digital inputs/outputs
 Input voltage: 7-12 V (6 PWM outputs)
(USB, DC plug, or Vin) Power
 Max output current per pin: 40 mA indicator

USB connection Reset


Button
16 MHz clock

Voltage regulator ATmega328P

AC/DC adapter
jack DC voltage
6 analog
supply
inputs
(IN/OUT) 9
Download and Install

• Download Arduino compiler and development environment from:


http://arduino.cc/en/Main/Software
• Current version: 1.0.1
• Available for:
– Windows
– MacOX
– Linux
• No installer needed... just unzip to a convenient location
• Before running Arduino, plug in your board using USB cable
(external power is not necessary)
• When USB device is not recognized, navigate to and select the
appopriate driver from the installation directory
• Run Arduino

10
Select your Board

11
Select Serial Port

12
Elements of the Arduino IDE
• Text editor
– syntax and keyword
colouring
– automatic
indentation
– programming
shortcuts
• Compiler
• Hardware Interface
– Uploading programs
– Communicating with
Arduino via USB

13
Using the Arduino IDE
Name of sketch
Compile sketch

Upload to board
Serial Monitor

Program area
Save
Open
New

Messages /
Errors
14
Arduino Reference

Arduino Reference is installed locally


or available online at http://arduino.cc/

15
Arduino Sketch Structure

• void setup()
void setup() {
– Will be executed only // put your setup code here, to run once:
when the program
}
begins (or reset button
void loop() {
is pressed) // put your main code here, to run repeatedly:

• void loop() }

– Will be executed
repeatedly
Text that follows // is a comment
(ignored by compiler)

Useful IDE Shortcut: Press Ctrl‐/


to comment (or uncomment) a
selected portion of your program.

16
Activity 1: LED Blink

 Load the “Blink” example


(FileExamplesBasicsBlink)
Use pin 13 as digital output void setup() {
// initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino boards:
pinMode(13, OUTPUT);
Set output high (+5V) }

void loop() {
digitalWrite(13, HIGH); // set the LED on
Wait 1000 milliseconds delay(1000); // wait for a second
digitalWrite(13, LOW); // set the LED off
delay(1000); // wait for a second
Set output low (0V) }

• Compile, then upload the program.


• Congratulations! You are now blinkers!
• Adding Comments in your code is good practice !!!
17
Now connect your own LED
Anatomy of an LED:

Notes:
• Resistor is needed to limit current
• Resistor and LED may be
interchanged
(but polarity of LED is important)
http://www.wikipedia.org/ • Pin 13 is special: has built-in
resistor and LED
• Change program and upload
18
Example: Using a Solderless
Breadboard

19
Experimenting

• Change the blink rate


– how fast can the LED blink (before you can no
longer perceive the blinking?)

20
Activity 2: LED Bargraph

• Connect an LED bargraph to the arduino.


• Try to implement the
Knight Rider Light on it.

21
Activity 2: LED Bargraph
Experimenting
 How would you change the speed of the Knight Rider
Light?
 Is there another easy way to change it with minimal
change to the code?

Hint : Variables

22
Variables
 A variable is a way of naming and storing a value for later use by the
program, such as data from a sensor or an intermediate value used in a
calculation.
 It has a type, a name & a value.

 Variable Declaration

Variable Type Variable Name Variable Stored Value

 Int stands for integer  User determined  Int type can only
 stores a 16-bit (2-byte)  No spaces save integer values
value

23
Activity 2: LED Bargraph
Experimenting
 If your knight rider light is to modified so that a single LED travels twice
before changing direction, (Left – left – right - right), how would you
implement it?
 Is there any alternate method to achieve this easily?

Hint : Functions

24
Functions
 Segmenting code into functions allows a programmer to create modular
pieces of code that perform a defined task and then return to the area of
code from which the function was "called". The typical case for creating a
function is when one needs to perform the same action multiple times in a
program.
 Functions must be created outside of ‘Setup’ & ‘Loop’.
 The contents within the function is executed only if it is ‘called’ within setup
or loop.

Fun Fact : There are two required functions in any Arduino sketch, setup() and
loop().

25
Digital Input: Reading Switches and
Buttons
Writing HIGH to an input pin:
enables an internal pull-up resistor

void setup() {
pinMode(11, OUTPUT); // Use pin 11 for digital out
pinMode(12, INPUT); // Use pin 12 for digital input
digitalWrite(12, HIGH); // Enable pull‐up resistor
}

void loop() {
boolean state;
state = digitalRead(12); // read state of pin 12
digitalWrite(11, state); // set state of pin 11 (LED)
delay(100); // wait for a 1/10 second
}

• Turn on/off LED based on switch


• Pin 12 reads LOW when switch is closed
• Pin 12 reads HIGH when switch is open (pull-up)
Without the internal pull-up resistor,
unconnected digital inputs could read
either high or low
26
Digital Input: Reading Switches and
Buttons

 Change the line :


digitalWrite(11, state);
Into :
digitalWrite(11, !state);

 How has this changed the performance of the


system?

27
Activity 3: Switching

 Implement a sketch so that two LEDs are controlled with two


different push buttons.

28
Serial Communication - Writing
IMPORTANT: • Serial.begin(baud)
USB serial
communication is Initialize serial port for communication (and sets baud
shared with rate)
Arduino pins 0
and 1 (RX/TX) Example:
– Serial.begin(9600); // 9600 baud

Serial.print(val), Serial.print(val,fmt)
Format can be:•
BIN, HEX, OCT,
Prints data to the serial port
or an integer Examples:
specifying the – Serial.print(“Hi”); // print a string
number of digits
to display – Serial.print(78); // works with numbers, too
– Serial.print(variable); // works with variables
– Serial.print(5,BIN); // will print 1001110

• Serial.println(val)
Same as Serial.print(), but with line-feed
29
Serial Communication - Writing

 Serial Monitor

Use the Serial Monitor


to see the output
(Ctrl + Shift + M)

30
Activity 4: Loop Counter

 Implement a sketch to count and display


the number of loop counts that occurred.
A loop is executed every two seconds.
 Refer to the flow chart.

31
OPTIONAL
Activity 5: Switch Counter

 Implement a sketch to count the number of times a


switch is pressed.
 The current counter value is displayed every half a
second.

32
For Loops

 Try the following example


sketch :

 Can you describe the


performance of the LED?

33
For Loops

 The for statement is used to repeat a block of statements


enclosed in curly braces. An increment counter is usually used
to increment and terminate the loop. The for statement is
useful for any repetitive operations.

 Declare Variable & Initialize – initial value of the counter

 Test – Condition so that the next iteration is executed

 Increment or Decrement – Change to the counter value done at


t++ is a short form of• each iteration
t=t+1 which means
increment by 1
34
For Loops
Experimenting
 Make the following changes in the above sketch and do
monitor the changes.
 Add Serial.print() within the for loop and after it.
 Change the intial value into negative & positive numbers.
 Change the test condition.
 Change the increment / decrement value.

 Can you draw the flow chart to the sketch in the previous for
loop example?

35
Activity 6: For Loops

 Write a flowchart & sketch to incorporate 2 Blinking LEDs.


 A single LED should blink 5 times where after the 2nd LED
should blink another 5 times.
 After both LEDs have blinked 5 times each both LEDs should
be off for 1 second and then remain in the ON state
indefinitely.

36
Analog Input and Sensors
Reference Voltage (optional) • Six analog inputs:
 A0, A1, A2, A3, A4, A5
• AREF = Reference voltage
(default = +5 V)
• 10 bit resolution:
– returns an integer from 0 to
1023
– result is proportional to the
pin voltage
• All voltages are measured
relative to GND
Note: If you need additional
Analog Inputs digital I/O, the analog pins can be
re-assigned for digital use:
pinMode(A0, OUTPUT); 37
Potentiometers
(variable resistors, rheostats)

38
Volume Knob
• Connect the potentiometer from 5V to GND
• Use analogRead(A0) to measure the voltage on the center pin
• Set the LED blink rate depending on the reading

39
Reading Analog Values
 value = analogRead(pin)
 Reads the analog measurement on pin & returns integer
between 0 and 1023

Note: Do NOT use


pinMode(A0, INPUT) unless
you want to use A0 for DIGITAL
input.

40
Activity 7: Volume Knob

 Write a sketch to vary a LED blink rate using analog inputs.

 How would you write a flow chart to this sketch?

41
OPTIONAL
Activity 8: Speed Varying Knight Rider

• Using the analog input and a LED bargraph & write a


sketch to control the speed of the knight rider circuit
according to the analog input.

42
Activity 7: Photo Resistor Module

 The photo resistor module gives a analog voltage according


to the light intensity it senses.
 Use your earlier program to interface this sensor module to
change the blinking rate of your LED.
 Use the Serial Monitor to check between what
values the Arduino receives.

43
if statements

 The if() statement is the most basic of all programming


control structures. It allows you to make something happen
or not depending on whether a given condition is true or not.
 Some methods of
implementing an if
statement are as follows :

44
if statements
 Let's try the
following example
using a analog input

45
if statements
 Let's try to draw a flow chart for this example

46
if statements

 Other comparison operators

47
Nested if statements : Water Tank
Example
 Imagine a water tank where different lights are to be
illuminated according to the water level in it.
 There are 3 sensors to
detect the water level
namely A, B & C

 How would you draw a


flow chart for it?

48
Nested if statements : Water Tank
Example
 Flow Chart for the previous problem.

49
Nested if statements : Water Tank
Example
 If statement code for the previous problem.

50
Activity 10 : IF Statements

 Using the analog input and a LED bargraph write a program


to on a single LED according to the value taken from the
analog input.

 HINT : Use your knowledge on if loops and functions

51
Analog Output?

• Most microcontrollers
have only digital outputs
• Pulse-width Modulation:
Analog variables can be
represented by the duty-
cycle (or pulse-width) of
a digital signal

http://arduino.cc/en/Tutorial/PWM
52
PulseWidth Modulation (PWM)
PWM available on pins 3, 5, 6, 9, 10, 11
• analogWrite(pin,val)
set the PWM fraction:
– val = 0: always off
– val = 255: always on
• Remember to designate pin
for digital output:
pinMode(pin,OUTPUT);
(usually in setup)
• Default PWM frequency:
– 16 MHz / 215 = 488.28125 Hz
Note: the PWM frequency and
resolution can be changed by
re-configuring the timers
53
PulseWidth Modulation (PWM)

 Try the following sketch

 Try changing the values


of the PWM and
observe the LED.

 How would you describe


the LED’s brightness?

54
Activity 11 : PWM LED Dimmer

• Use PWM to control the brightness of an LED


– connect LED to pin 3, 5, 6, 9, 10 or 11
– remember to use 220 Ω current-limiting resistor
• Set the brightness from the potentiometer.

Useful:
• newValue = map(oldValue, a, b, c, d)
Converts/maps a number in the range (a:b) to a new number in the range (c:d)
Example:
– newValue = map(oldValue,0,1023,0,255);

55
Servomotors

http://www.parallax.com/

• Standard servo:
– PWM duty cycle controls direction:
– 0% duty cycle  0 degrees
– 100% duty cycle  180 degrees
• Continuous-rotation servo:
– duty cycle sets speed and/or direction
56
Activity 12 : Servomotor Control

• Build a program that turns a servomotor from


0 to 180 degrees, based on potentiometer
reading
• Report setting to the serial monitor

57
Controlling Relays and Solenoids

• Electromechanically
-actuated switch
• Provides electrical
isolation
• Typically few ms
response time

Note: Arduino cannot supply


enough current to drive relay coil
58
Relay Driver Circuit

• NPN transistor: acts like a current-controlled switch


• MOSFET will also work
• Diode prevents back-EMF (associated with inductive
loads)
• Coil voltage supply and Arduino share common GND
59
60

You might also like