Professional Documents
Culture Documents
• Arduino Uno
• Arduino Leonardo
• Arduino LilyPad
• Arduino Mega
• Arduino Nano
• Arduino Mini
• Arduino Mini Pro
• Arduino BT
Arduino-like Systems
• Cortino (ARM)
• Xduino (ARM)
• LeafLabs Maple
(ARM)
• BeagleBoard (Linux)
• Wiring Board
(Arduino
predecessor)
Arduino Add-ons (Shields)
• TFT Touch Screen
• Data logger
• Motor/Servo shield
• Ethernet shield
• Audio wave shield
• Cellular/GSM shield
• WiFi shield
• ...many more
Where to Get an Arduino Board
Boarduino Kit
DIY Arduino
Arduino Uno
Arduino LilyPad
Arduino Mega 2560
Arduino Duemilanove (2009)
Arduino Uno
Arduino Mega 2560
Original Arduino with RS-232
Arduino on breadboard
Arduino Nano
Ardweeny
Other Hardware Choices-Sheilds
Xbee Shield
The Xbee shield allows an Arduino board to communicate wirelessly using Zigbee.
The module can communicate up to 100 feet indoors or 300 feet outdoors (with line-of-
sight). It can be used as a serial/usb replacement or you can put it into a command
mode and configure it for a variety of broadcast and mesh networking options.
The Xbee shield was created in collaboration with Libelium, who developed it for
use in their SquidBee motes (used for creating sensor networks).
Adafruit Servo/Stepper/DC Motor shield
A shield that can control 2 hobby servos and up to 2 unipolar/bipolar stepper motors
or 4 bi-directional DC motors.
Battery Shield
A shield from Liquidware that connects to the back of the Arduino, with a USB-
rechargable lithium ion battery that can power an Arduino for 14-28 hours depending on
the circuit
Liquidware TouchShield
OLED touch screen shield.
Continue
Adafruit Wave shield
Plays any size 22KHz audio files from an SD memory card
for music, effects and interactive sound art
Adafruit GPS & Datalogging shield
Connects up a GPS module and can log location, time/date
as well as sensor data to an SD memory flash card.
Adafruit XPort/Ethernet shield
Allows use of an XPort module for connecting to the Internet
as a client or server.
Continue…
Continue…
Liquidware TouchShield
OLED touch screen shield.
Adafruit Servo/Stepper/DC Motor shield
A shield that can control 2 hobby servos and up to 2
unipolar/bipolar stepper motors or 4 bi-directional DC
motors.
Bluetooth to TTL 5V module
USB to TTL module
RS-232 to TTL module
Pin Diagram and functions
Pins on Arduino
Starting clockwise from the top center:
Analog Reference pin (orange)
Digital Ground (light green)
Digital Pins 2-13 (green)
Digital Pins 0-1/Serial In/Out - TX/RX (dark green) - These pins cannot be used for digital i/o
(digitalRead and digitalWrite) if you are also using serial communication (e.g.
Serial.begin).
Reset Button - S1 (dark blue)
In-circuit Serial Programmer (blue-green)
Analog In Pins 0-5 (light blue)
Power and Ground Pins (power: orange, grounds: light orange)
External Power Supply In (9-12VDC) - X1 (pink)
Toggles External Power and USB Power (place jumper on two pins closest to desired supply) -
SV1 (purple)
USB (used for uploading sketches to the board and for serial communication between the
board and the computer; can be used to power the board) (yellow)
Digital Pins
In addition to the specific functions listed below, the
digital pins on an Arduino board can be used for
general purpose input and output via the pinMode(),
digitalRead(), and digitalWrite() commands. Each pin
has an internal pull-up resistor which can be turned on
and off using digitalWrite() (w/ a value of HIGH or
LOW, respectively) when the pin is configured as an
input. The maximum current per pin is 40 mA.
Serial: 0 (RX) and 1 (TX). Used to receive (RX) and transmit (TX) TTL serial
data. On the Arduino Diecimila, these pins are connected to the corresponding
pins of the FTDI USB-to-TTL Serial chip. On the Arduino BT, they are
connected to the corresponding pins of the WT11 Bluetooth module. On the
Arduino Mini and LilyPad Arduino, they are intended for use with an external
TTL serial module (e.g. the Mini-USB Adapter).
External Interrupts: 2 and 3. These pins can be configured to trigger an
interrupt on a low value, a rising or falling edge, or a change in value. See the
attachInterrupt() function for details.
PWM: 3, 5, 6, 9, 10, and 11. Provide 8-bit PWM output with the analogWrite()
function. On boards with an ATmega8, PWM output is available only on pins
9, 10, and 11.
Reset: 7. (Arduino BT-only) Connected to the reset line of the bluetooth
module.
SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). These pins support SPI
communication, which, although provided by the underlying hardware. It
allow serial communication with another interface by connecting it serially.
LED: 13. On the Diecimila and LilyPad, there is a built-in LED connected to
digital pin 13. When the pin is HIGH value, the LED is on, when the pin is
LOW, it's off.
Analog Pins
In addition to the specific functions listed below,
the analog input pins support 10-bit analog-to-digital
conversion (ADC) using the analogRead() function.
Most of the analog inputs can also be used as digital
pins: analog input 0 as digital pin 14 through analog
input 5 as digital pin 19. Analog inputs 6 and 7
(present on the Mini and BT) cannot be used as digital
pins.
I2C: 4 (SDA) and 5 (SCL). Support I2C (TWI)
communication using the Wire library
Power Pins
VIN (sometimes labelled "9V"). The input voltage to the Arduino board
when it's using an external power source (as opposed to 5 volts from the
USB connection or other regulated power source). You can supply voltage
through this pin, or, if supplying voltage via the power jack, access it
through this pin. Note that different boards accept different input voltages
ranges, please see the documentation for your board . Also note that the
LilyPad has no VIN pin and accepts only a regulated input.
5V. The regulated power supply used to power the microcontroller and
other components on the board. This can come either from VIN via an on-
board regulator, or be supplied by USB or another regulated 5V supply.
3V3. (Diecimila-only) A 3.3 volt supply generated by the on-board FTDI
chip.
GND. Ground pins.
Other Pins
AREF. Reference voltage for the analog inputs. It
provide the analog reference voltage for analog to
digital conversion
Reset. (Diecimila-only) Bring this line LOW to reset
the microcontroller. Typically used to add a reset
button to shields which block the one on the board.
Block Diagram of arduino
Function of Each block
USB Plug: By using this plug we can download hex file of our
program by connecting it with PC. It also provide supply to
arduino board. This USB plug is connected with FTDI Chip
internally
FTDI Chip: This chip is nothing but voltage level converter
chip. This chip is used to convert USB voltage level to TTL level
and vice versa.
Digital I/O and PWM section: This section is used as for
general purpose input output usage. By using this section we
can perform digital input and output functions. In this section
some pins are also used as PWM output pins. It is used for
PWM based application like servo motors.
Continue…
Serial Tx and Rx Section: These two pins are used for serial
communication in arduino. It is internally connected with USB plug
through FTDI chip.
Power Supply: Power supply section provide different voltage level to
different part of arduino board. This part contain bridge rectifier and
voltage regulator.
AVR Atmega CPU: This block is the heart of the controller. Generally
Atmega 8, Atmega 16, Atmega 32, Atmega 328 controller are used in
arduino board. This block execute all the fuctions that written in arduino
program.
SPI Interface section: This section is used for serial peripheral
interfacing.
Power Pins section: This section include various voltage level pins
including ground pins.
Analog input section: We know that Atmega 8 CPU has inbuilt 6
channel 10 – bit ADC. This ADC can convert analog data from analog pin
into digital. So, for taking analog value for digital conversion we have to
use this section.
Circuit Diagram of Arduino
The Arduino Environment
Board Type
Serial Port / COM Port
The Environment
Parts of the Sketch
Comments
• Comments can be anywhere
• Comments created with // or /* and */
• // is used for single line comment.
• /* */ is used for multiline comments
• Comments do not affect code
• You may not need comments, but think
about the community!
Programming Symbols
// - Single line comment
/* */ - Multiline comment
{ } – used to define a block of code that starts and ends.
; - used to define the end of a line of code.
Math Operators
= (assignment) makes something equal to something else. For example,
x = 10*2, thus x = 20.
+ (addition)
- (subtraction)
* (multiplication)
/ (division)
Comparison Operators
These are used to make logical comparisons.
if(condition) { }
else if (condition) { }
else(condition) { }
This will execute the code between the curly braces if the condition
is true, and if not test the condition of the “else if”. If that is false ,
the “else” code will execute.
for (int i =0; i < #repeats; i ++) { }
Used when you would like to repeat a line of code a specific # of times. Often
called a FOR LOOP.
Activity 1: LED Blink
• Load the “Blink” example
(FileExamplesBasicsBlink)
void setup() {
Use pin 13 as digital // initialize the digital pin as an output.
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 delay(1000); // wait for a
milliseconds second digitalWrite(13, LOW); // set the
LED off delay(1000); // wait for
Set output low (0V) a second
}
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
Aside: Using a Solderless
Breadboard
Connected together
300 mils
Connected together
Example: Using a Solderless
Breadboard
Experimenting
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
Activity 2: Seven-Segment
Display
• Write a that program that to
counts from 0
9 and displays the result on a seven-
segment LED display• Consider writing a function:
void writeDigit(int n)
Useful:
• bitRead(x,n)
Get the value of the nth bit of an integer x
Example:
– bitRead(0x7E,7); // returns 1 (see table above)
Serial Communication - Writing
IMPORTANT: • Serial.begin(baud)
USB serial
communication Initialize serial port for communication (and sets baud
is shared with rate) Note: Serial.end()
Arduino pins 0 Example: command is usually
and 1 (RX/TX)
– Serial.begin(9600); // 9600 baud unnecessary, unless you need
to use pins 0 & 1
• Serial.println(val)
Same as Serial.print(), but with line-feed
Activity 3: Hello World!
Serial Monitor:
• Write an Arduino
program that prints the
message “Hello world”
to the serial port
• ...whenever you press
a switch/button
• Use the Serial Monitor
to see the output
(Ctrl-Shift-M)
• Try increasing baud
rate
Make sure this agrees with your
program, i.e.,
Serial.begin(9600);
Serial Communication - Reading
• Serial.available()
Returns the number of bytes available to be read, if any
Example:
if (Serial.available() > 0) {
data = Serial.read();
}
print() read()
Arduino Bootloader
What's a bootloader?
Microcontrollers are usually programmed through a programmer
unless you have a piece of firmware in your microcontroller that allows
installing new firmware using an external programmer. This is called a
bootloader.
Not using a bootloader
If you want to use the full program space (flash) of the chip or avoid
the bootloader delay, you can burn your sketches using an external
programmer.
To burn the bootloader, The programmer should be connected to
the ICSP pins (the 2 by 3 pin header) - make sure you plug it in
the right way. The board must be powered by an external power
supply or the USB port.
Make sure you have the right item selected in the Tools |
Board menu. Then, just launch the appropriate command from
the Tools > Burn Bootloader menu of the Arduino environment.
Burning the bootloader may take 15 seconds or more, so be
patient.
Looping Techniques & Decision Making Techniques
For loop:-
https://www.arduino.cc/en/Reference/For
If Conditions :-
https://www.arduino.cc/en/Reference/If
Write a program to on/off the led based on the
addition of two numbers.(on the led when addition is
greater than 90)
Write a program on/off the led as per counter’s
value.(counter value is 1 blink the led ones, if 2 than
blink 2 times till 10 times)