You are on page 1of 28

MI

A
sn
ea
k
pe
ek
int
o
th
e
Ar
du
ino
W
orl
d

Contents
What is Arduino microcontroller?................................................................................3
Components in an Arduino UNO................................................................................. 4
Power (USB / Barrel Jack)......................................................................................... 4
Pins (5V, 3.3V, GND, Analog, Digital, PWM, AREF)...................................................4
GND (3):.................................................................................................................. 4
5V (4) & 3.3V (5):.................................................................................................... 4
Analog (6):............................................................................................................... 4
Digital (7):............................................................................................................... 4
PWM (8):.................................................................................................................. 4
AREF (9):................................................................................................................. 4
Reset Button............................................................................................................ 4
Power LED Indicator................................................................................................ 5
TX RX LEDs.............................................................................................................. 5
Main IC.................................................................................................................... 5
Voltage Regulator.................................................................................................... 5
Clock....................................................................................................................... 5
Random access memory (RAM)............................................................................... 5
EEPROM................................................................................................................... 5
Arduino microcontrollers Vs. Microprocessors............................................................6
A Microcontroller..................................................................................................... 6
A Microprocessor..................................................................................................... 6
How does Arduino microcontrollers processors work? (instruction cycle)..................7
More Details:........................................................................................................... 7
Registers Used:.................................................................................................... 7
Steps:...................................................................................................................... 8
Fetch Cycle........................................................................................................... 8
Decode the Instruction......................................................................................... 8
Read the effective address...................................................................................8
Execute the Instruction:(Step 4 of the Instruction Cycle is the Execute Cycle).. . .8
Coding language and software................................................................................... 9
Machine Code could probably be considered the lowest level programming
language.................................................................................................................... 9

1 | Page

Assembly language is at the level of telling the processor what to do. There is
still a conversion step towards machine code............................................................9
C is a step up from assembler, because you get to specify what you want to do
in slightly more abstract terms, but you're still fairly close to the metal....................9
C++ does everything that C can do but adds the capability to abstract things
away into classes....................................................................................................... 9
Java/C# do similar things to C++ in a way, but without the opportunity to do
everything you can do in C (like pointer manipulation in Java's case [thanks Joe!]).
They have garbage collection though, which you have to do manually in C++.........9
Python/Ruby are even higher level, and let you forget about a lot of the details
that you would need to specify in something like Java or C#.....................................9
Integrated development environment.....................................................................9
IDEs for Arduino:(Most common two)....................................................................10
Embedded Code Life Cycle:................................................................................... 10
Embedded Code Main Parts:..................................................................................11
What is an embedded System?................................................................................12
Definition and Example............................................................................................ 12
Features of Arduino.................................................................................................. 13
Digital input and output............................................................................................ 14
ADC (analogue to digital conversions)......................................................................15
Timers and interrupts............................................................................................... 16
Bit logic operations................................................................................................... 17
Pointers.................................................................................................................... 18
PWM......................................................................................................................... 19
Communication........................................................................................................ 20
Open source libraries................................................................................................ 21
How to simulate projects.......................................................................................... 22
Using Portus............................................................................................................. 23
Example................................................................................................................... 24
References Used:...................................................................................................... 25

2 | Page

What is Arduino microcontroller?


Arduino is a software company, project, and user
community that designs and manufactures
computer open-source hardware, open-source
software, and microcontroller-based kits for
building digital devices and interactive objects that
can sense and control physical devices.
The project is based on microcontroller board
designs, produced by several vendors, using
Figure 1 LOGO
various microcontrollers. These systems provide
sets of digital and analog I/O pins that can interface to various expansion boards
(termed shields) and other circuits. The boards feature serial communication
interfaces, including Universal Serial Bus (USB) on some models, for loading
programs from personal computers. For programming the microcontrollers, the
Arduino project provides an integrated development environment (IDE) based on a
programming language named Processing, which also supports the languages C and
C++.
The first Arduino was introduced in 2005, aiming to provide a low cost, easy way for
novices and professionals to create devices that interact with their environment
using sensors and actuators. Common examples of such devices intended for
beginner hobbyists include simple robots, thermostats, and motion detectors.
Arduino boards are available commercially in preassembled form, or as do-ityourself kits. The hardware design specifications are openly available, allowing the
Arduino boards to be produced by anyone. Adafruit Industries estimated in mid2011 that over 300,000 official Arduinos had been commercially produced, and in
2013 that 700,000 official boards were in users' hands.

3 | Page

An Arduino board historically consists of an Atmel 8-,


16- or 32-bit AVR microcontroller (although since 2015
other makers' microcontrollers have been used) with
complementary components that facilitate
programming and incorporation into other circuits. An
important aspect of the Arduino is its standard
connectors, which let users connect the CPU board to a
variety of interchangeable add-on modules termed
shields. Some shields communicate with the Arduino
Figure 2 Arduino Microcontroller
board directly over various pins, but many shields are
Example
individually addressable via an IC serial busso many
shields can be stacked and used in parallel. Before 2015, Official Arduinos had used
the Atmel megaAVR series of chips, specifically the ATmega8, ATmega168,
ATmega328, ATmega1280, and ATmega2560. In 2015, units by other producers
were added. A handful of other processors have also been used by Arduino
compatible devices.

Components in an Arduino UNO


Some boards look a bit different from the one
below, but most Arduinos have the majority of
these components in common:

Power (USB / Barrel Jack)


Every Arduino board needs a way to be connected
to a power source. The Arduino UNO can be
powered from a USB cable coming from your
computer or a wall power supply (like this) that is
terminated in a barrel jack. In the picture above the
USB connection is labeled (1) and the barrel jack is
labeled (2).

Pins (5V, 3.3V, GND, Analog, Digital, PWM,


AREF)
The pins on your Arduino are the places where you connect wires to construct a
circuit that allow you to just plug a wire right into the board. The Arduino has
several different kinds of pins, each of which is labeled on the board and used for
Figure 3 UNO board
different functions.

GND (3): Short for Ground. There are several GND pins on the Arduino, any of
which can be used to ground your circuit.

5V (4) & 3.3V (5):


-

the 5V pin supplies 5 volts of power


4 | Page

the 3.3V pin supplies 3.3 volts of power.

Analog (6): (A0 through A5 on the UNO) are Analog in pins.


These pins can read the signal from an analog sensor (like a temperature sensor)
and convert it into a digital value that we can read.

Digital (7): Across from the analog pins are the digital pins (0 through 13 on the
UNO). These pins can be used for both digital input and digital output.

PWM (8): You may have noticed the tilde (~).


These pins act as normal digital pins, but can also be used for something called
Pulse-Width Modulation (PWM).

AREF (9): Stands for Analog Reference. Most of the time you can leave this pin
alone. It is sometimes used to set an external reference voltage (between 0 and 5
Volts) as the upper limit for the analog input pins.

Reset Button
the Arduino has a reset button (10). Pushing it will temporarily connect the reset pin
to ground and restart any code that is loaded on the Arduino.

Power LED Indicator


Just beneath and to the right of the word UNO on your circuit board, theres a tiny
LED next to the word ON (11).

TX RX LEDs
TX is short for transmit, RX is short for receive. These markings appear quite a bit in
electronics to indicate the pins responsible for serial communication. In our case,
there are two places on the Arduino UNO where TX and RX appear once by digital
pins 0 and 1, and a second time next to the TX and RX indicator LEDs (12). These
LEDs will give us some nice visual indications whenever our Arduino is receiving or
transmitting data (like when were loading a new program onto the board).

Main IC
Integrated Circuit (13). Think of it as the brains of our Arduino. The main IC is
usually from the ATmega line of ICs from the ATMEL company. This can be
important, as you may need to know the IC type (along with your board type) before
loading up a new program from the Arduino software. This information can usually
be found in writing on the top side of the IC. If you want to know more about the
difference between various ICs, reading the datasheets is often a good idea.

Voltage Regulator
The voltage regulator (14) does exactly what it says it controls the amount of
voltage that is let into the Arduino board. Think of it as a kind of gatekeeper; it will
turn away an extra voltage that might harm the circuit. Of course, it has its limits,
so dont hook up your Arduino to anything greater than 20 volts.

5 | Page

Clock
A clock that provides timing pulses that control the pacing of program instructions
as they are executed one at a time by the CPU.

Random access memory (RAM)


Provides a scratchpad area where the computer can store the data it's working on.
For example, if you want the computer to determine the result of a calculation (such
as two plus two), you need to provide a location in RAM where the computer can
store the result.

EEPROM
A special type of memory that holds the program that runs on a microcontroller.
EEPROM stands for Electrically Erasable Programmable Read-Only Memory, but that
wont be on the test.

6 | Page

Arduino microcontrollers Vs.


Microprocessors.
A Microcontroller
-

A computer on a chip.
It differs from normal desktop or laptop
computers in that a microcontroller is an
application specific computer that usually
runs a single program performing dedicated
task(s) while the latter two are general
purpose computers that can run numerous
programs depending on a users needs. A
microcontroller contains on chip CPU,
input/output interface, memory, clock,
timer, and an assortment of other
peripherals.

A Microprocessor
-

Figure 4 Micro-Controllers Vs. Microprocessors

On the other hand, is just a CPU one has to


add externally memory, clock, input/output interfaces, timer and all other
needed peripheral. This is the reason a microprocessor has so many pins.

7 | Page

Table 1 Comparison between Microcontrollers and Microprocessors

8 | Page

How does Arduino microcontrollers processors work?


(instruction cycle)
-

An instruction cycle (sometimes called fetch-decodeexecute cycle) is the basic operation cycle of a
computer.

It is the process by which a computer retrieves a


program instruction from its memory, determines what
actions the instruction requires, and carries out those
actions. This cycle is repeated continuously by the
central processing unit (CPU), from boot up to when the
computer is shut down.

More Details:
Registers Used:
1- Program counter (PC) - an incrementing counter that
keeps track of the memory address of the instruction
that is to be executed next or in other words, holds the
address of the instruction to be executed next.
2- Memory address register (MAR) - holds the address of a
memory block to be read from or written to.
3- Memory data register (MDR) - a two-way register that
holds data fetched from memory (and ready for the
CPU to process) or data waiting to be stored in
memory. (This is also known as the memory buffer
register (MBR).)
4- Instruction register (IR) - a temporary holding ground
Figure 5 detailed instructions cycle
for the instruction that has just been fetched from
memory.
5- Control unit (CU) - decodes the program instruction in the IR,
selecting machine resources such as a data source register and a particular
arithmetic operation, and coordinates activation of those resources.
6- Arithmetic logic unit (ALU) - performs mathematical and logical operations.

9 | Page

Steps:
Fetch Cycle. This step is the same for each instruction.
1- The CPU sends PC to the MAR and sends a READ command on the control bus
2- In response to the read command (with address equal to PC), the memory
returns the data stored at the memory location indicated by PC on the data
bus.
3- The CPU copies the data from the data bus into its MDR.
4- A fraction of a second later, the CPU copies the data from the MDR to the
Instruction Register (IR)
5- The PC is incremented so that it points to the following instruction in memory.
This step prepares the CPU for the next cycle.
The Control Unit fetches the instruction's address from the Memory Unit

Decode the Instruction


Step 2 of the instruction Cycle is called the Decode Cycle. The decoding process
allows the CPU to determine what instruction is to be performed, so that the CPU
can tell how many operands it needs to fetch in order to perform the instruction.
The opcode fetched from the memory is decoded for the next steps and moved to
the appropriate registers. The decoding is done by the CPU's Control Unit.

Read the effective address


Step 3 is deciding which operation it is. If this is a Memory operation - in this step
the computer checks if it's a direct or indirect memory operation:
-

Direct memory instruction:


Indirect memory instruction:
memory.

Nothing is being done.


The effective address is being read from the

Execute the Instruction:(Step 4 of the Instruction Cycle is the Execute Cycle).


the function of the instruction is performed. If the instruction involves arithmetic or
logic, the Arithmetic Logic Unit is utilized. This is the only stage of the instruction
cycle that is useful from the perspective of the end user. Everything else is
overhead required to make the execute stage happen.

10 | P a g e

Coding language and software.


-

Machine Code could probably be


considered the lowest level
programming language.

Assembly language is at the level


of telling the processor what to do.
There is still a conversion step
towards machine code.

C is a step up from assembler,


because you get to specify what
you want to do in slightly more
abstract terms, but you're still
fairly close to the metal.

C++ does everything that C can do but adds the capability to abstract things
away into classes.

Java/C# do similar things to C++


in a way, but without the opportunity to do everything you can do in C (like
pointer manipulation in Java's case [thanks Joe!]). They have garbage
collection though, which you have to do manually in C++.

Python/Ruby are even higher level, and let you forget about a lot of the
details that you would need to specify in something like Java or C#.

SQL is even higher level (it's declarative). Just say "Give me all the items in
the table sorted by age" and it will work out the most efficient way to carry
this out for you.

Figure 6 Programing language Levels

Integrated development environment


An integrated development environment (IDE) is a programming environment that
has been packaged as an application program, typically consisting of a code editor,
a compiler, a debugger, and a graphical user interface (GUI) builder. The IDE may
be a standalone application or may be included as part of one or more existing and
compatible applications.

11 | P a g e

IDEs for Arduino:(Most common two)

ARDUINO

Atmel Studio

The open-source Arduino Software


(IDE) makes it easy to write code
and upload it to the board. It runs
on Windows, Mac OS X, and Linux.
The environment is written in Java
and based on Processing and other
open-source software.

The Atmel Studio 7 IDP gives you a


seamless and easy-to-use
environment to write, build and
debug your applications written in
C/C++ or assembly code.

Figure 7 Arduino IDM

Figure 8 Atmel Studio

Embedded Code Life Cycle:

Coding

PreProces
sing

Compiling

Assemblin
g

Linking

Binary
Conversti
on

Figure 9 Code Life Cycle Sequence

12 | P a g e

Embedded Code Main Parts:

Figure 10 Code main parts

1- Include libraries to the code which makes compliers understand equivalent


operations to be done by the processors in its machine code.

2- Define Constants to their numerical values or arithmetic operation.


3- The main function where:
i. The main function where all other functions are called inside it.
ii. Declare local variables
iii. Enable Some features such as Timers, and Interrupts.
iv. Declare the inputs and outputs.
v. Call all functions.
4- The Infinite loop that the program executes in order as long as the
microcontroller is on, When it finishes all the code line in order it repeat the
whole code again in same lines orders.

a- Setting inputs and outputs.


b- Writing and declaring function (set of actions to be done by the program
when the function is called)
c-

13 | P a g e

What is an embedded System?


-

An embedded system is a computer system with a dedicated function within


a larger mechanical or electrical system, often with real-time computing
constraints.

It is embedded as part of a complete device often


including hardware and mechanical parts.
Embedded systems control many devices in
common

Ninety-eight percent of all microprocessors are


manufactured as
components of embedded systems.
Figure 11 A car is a good Embedded Systems

Modern embedded systems are often based


on microcontrollers (i.e. CPUs with integrated memory or peripheral
interfaces), but ordinary microprocessors (using external chips for memory
and peripheral interface circuits) are also common, especially in morecomplex systems.

Since the embedded system is dedicated to specific tasks, design engineers


can optimize it to reduce the size and cost of the product and increase the
reliability and performance. Some embedded systems are massproduced, benefiting from economies of scale.

Example

Embedded System Example:


-

Rain sensing whippers in cars


Air bag.
Television
Mobile.

Figure 12 More Examples for embedded


Systems in a Car

14 | P a g e

Features of Arduino.
Arduino Microcontrollers can do
we are going to discuss some
explanation in which a real time
might be combination of some
mentioned.

a lot of things
basics only for
application
features

Digital input and output:

(Its a 1 or 0)

Digital Input: A digital input

detects if a
specific
higher than
detect the
voltage is lower
will detect the

voltage is above/below a
threshold. If the voltage is
some value, the computer will
digital input as high/set/1. If the
than some value, the computer
digital input as low/clear/0.

Digital Output: A digital output


control a voltage with a
computer instructs the output
output will produce a voltage
about 5 or 3.3 volts). If the
instructs the output to be low, it
ground and produces no

allows you to
computer. If the
to be high, the
(generally
computer
is connected to
voltage.

Digital Example:
const int buttonPin = 2;
pushbutton pin
const int ledPin = 13;
LED pin

// the
// the

number of the
number of the

// variables will change:


int buttonState = 0;
void setup() {

// variable for reading the pushbutton status

// initialize the LED pin as an output:

pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);}
void loop() {
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed.
Figure 13 Digital Example

15 | P a g e

// if it is, the buttonState is HIGH:


if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
} else {
// turn LED off:
digitalWrite(ledPin, LOW); }}

ADC (analogue to digital conversions):


An Analog to Digital Converter (ADC) is a very useful feature that converts an
analog voltage on a pin to a digital number. By converting from the analog world to
the digital world, we can begin to use electronics to interface to the analog world
around us.

Relating ADC Value to Voltage


The ADC reports a radiometric value. This means that the ADC assumes 5V is 1023 and anything
less than 5V will be a ratio between 5V and 1023.

Analog to digital conversions are dependent on the system voltage. Because we predominantly use
the 10-bit ADC of the Arduino on a 5V system, we can simplify this equation slightly:

If your system is 3.3V, you simply change 5V out with 3.3V in the equation. If your system is 3.3V
and your ADC is reporting 512, what is the voltage measured? It is approximately 1.65V.
If the analog voltage is 2.12V what will the ADC report as a value?

16 | P a g e

Analogue Code for Arduino:


int sensorPin = A0;
int ledPin = 13;
the LED

// select the input pin for the potentiometer


// select the pin for

int sensorValue = 0; // variable to store


the value coming from the sensor
void setup() {
// declare the ledPin as an OUTPUT:
pinMode(ledPin, OUTPUT);
}
void loop() {
// read the value from the sensor:
sensorValue = analogRead(sensorPin);

Figure 14 Analogue example

// turn the ledPin on


digitalWrite(ledPin, HIGH);
// stop the program for <sensorValue> milliseconds:
delay(sensorValue);
// turn the ledPin off:
digitalWrite(ledPin, LOW);
// stop the program for for <sensorValue> milliseconds:
delay(sensorValue);
}

17 | P a g e

Timers and interrupts.


What is Interrupts:
-

Notification by a hardware or a software.


When interrupts are enabled and triggered the program apply current action
undergoing then skip the next line in code to do a specific action triggered by
the interrupt
Action or function done due to interrupt is called ISR (interrupt service
routine) then return to the next line of code.

Types of interrupt:

Reset
Timer
Hardware
external
Interrupts

Serial

Software

Edge
triggered
Level
triggered

Figure 15 Types of interrupts

18 | P a g e

Interrupt example:
#include < avr/io.h > // Definition of interrupt names
#include < avr/interrupt.h > // ISR interrupt service

routine

int ledPin = 13; // LED connected to digital pin 13


int sensePin = 2; // This is the INT0 Pin of the ATMega8
// We need to declare the data exchange
// variable to be volatile - the value is
// read from memory.
volatile int value = 0;
ISR(INT0_vect) {// Install the interrupt routine.
// activate the interrupt routine, we get a clear signal.

Figure 16 Interrupt Example

value = digitalRead(sensePin);}
void setup() {
Serial.begin(9600);
Serial.println("Initializing ihandler"); // sets the digital pin as output
pinMode(ledPin, OUTPUT); // read from the sense pin
pinMode(sensePin, INPUT);
Serial.println("Processing initialization"); // Global Enable INT0 interrupt
GICR |= ( 1 < < INT0); // Signal change triggers interrupt
MCUCR |= ( 1 << ISC00);
MCUCR |= ( 0 << ISC01);
Serial.println("Finished initialization");}
void loop() {if (value) { Serial.println("Value high!");digitalWrite(ledPin, HIGH);
} else { Serial.println("Value low!"); digitalWrite(ledPin, LOW); }
delay(100);}

19 | P a g e

Timers:
The Arduino 'delay' function is both a blessing and a curse. Its great for showing
beginners how to make an LED flash. But as soon as you get more complex and
start slowing down your 'loop' function you will run into problems.
The disadvantage of the delay approach is that nothing else can go on while the
'delay' is happening. You cannot update a display, or check for key presses for
example.
-

Timers can be used as interrupts or flags or PWM.

Bit logic operations.


The bitwise operators perform their calculations at the bit level of variables. They
help solve a wide range of common programming problems.

Bitwise AND (&)


The bitwise AND operator in C++ is a single ampersand, &, used between two other
integer expressions. Bitwise AND operates on each bit position of the surrounding
expressions independently, according to this rule: if both input bits are 1, the
resulting output is 1, otherwise the output is 0. Another way of expressing this is:
0 0 1 1

operand1

0 1 0 1

operand2

---------0 0 0 1

(operand1 & operand2) - returned result

In Arduino, the type int is a 16-bit value, so using & between two int expressions
causes 16 simultaneous AND operations to occur. In a code fragment like:
int a = 92;

// in binary: 0000000001011100

int b = 101;

// in binary: 0000000001100101

int c = a & b; // result:

0000000001000100, or 68 in decimal.

Each of the 16 bits in a and b are processed by using the bitwise AND, and all 16
resulting bits are stored in c, resulting in the value 01000100 in binary, which is 68
in decimal.
One of the most common uses of bitwise AND is to select a particular bit (or bits)
from an integer value, often called masking. See below for an example

Bitwise OR (|)
The bitwise OR operator in C++ is the vertical bar symbol, |. Like the & operator, |
operates independently each bit in its two surrounding integer expressions, but
what it does is different (of course). The bitwise OR of two bits is 1 if either or both
of the input bits is 1, otherwise it is 0. In other words:
0 0 1 1

operand1
20 | P a g e

0 1 0 1

operand2

---------0 1 1 1

(operand1 | operand2) - returned result

Bitwise XOR (^)


There is a somewhat unusual operator in C++ called bitwise EXCLUSIVE OR, also
known as bitwise XOR. (In English this is usually pronounced "eks-or".) The bitwise
XOR operator is written using the caret symbol ^. This operator is very similar to the
bitwise OR operator |, only it evaluates to 0 for a given bit position when both of the
input bits for that position are 1:
0 0 1 1

operand1

0 1 0 1

operand2

---------0 1 1 0

(operand1 ^ operand2) - returned result

Very common in Embedded Systems.

Here is a simple code example:


int x = 12;

// binary: 1100

int y = 10;

// binary: 1010

int z = x ^ y; // binary: 0110, or decimal 6

Communication.
-

Arduino Supports:
o Serial
o Bluetooth
o GSM/GPRS
o KNX/EIB
o Wi-Fi

21 | P a g e

PWM.
Pulse Width Modulation, or PWM, is a technique for getting analog results with
digital means.
Digital control is used to create a square wave, a signal switched between on and
off. This on-off pattern can simulate voltages in between full on
and off
by changing the portion of the time the signal
spends on versus the time that the signal spends
off.
The duration of "on time" is called the pulse width.
To get varying analog values, you change, or
modulate, that pulse width. If you repeat this onoff pattern fast enough with an LED for example,
the result is as if the signal is a steady voltage
between 0 and 5v controlling the brightness of the
LED.

PWM Example:
int led = 9;
attached to

// the PWM pin the LED is

int brightness = 0;
int fadeAmount = 5;
LED by

// how bright the LED is


// how many points to fade

the

// the setup routine runs once when you press reset:


void setup() {
// declare pin 9 to be an output:
pinMode(led, OUTPUT);
}// the loop routine runs over and over again forever:
void loop() { // set the brightness of pin 9:
analogWrite(led, brightness); // change the brightness for next time through the
loop:
brightness = brightness + fadeAmount;// reverse the direction of the fading at the
ends of the fade:
if (brightness == 0 || brightness == 255) { fadeAmount = -fadeAmount ; }
Figure 17 PWM output
example
22 | P a g e

// wait for 30 milliseconds to see the dimming effect


delay(30);

23 | P a g e

Open source libraries:


What are Libraries?
-

Libraries are a collection of code that makes it easy for you to connect to a
sensor, display, module, etc. For example, the built-in Liquid Crystal library
makes it easy to talk to character LCD displays. There are hundreds of
additional libraries available on the Internet for download. The built-in
libraries and some of these additional libraries are listed in the reference. To
use the additional libraries, you will need to install them.

How to Install a Library?

Figure 18 Importing a lib. in .zip format

Figure 19 Adding Libraries (1)

24 | P a g e

Example of importing a PID Library to Arduino:

Advantage of being an open source is that its always updating where coding
becomes easier as functions are everywhere when you have internet.

25 | P a g e

How to simulate projects.


There are a lot of simulation programs that can be used to simulate a projects
performance before applying to hardware
A popular program is ISIS
professional
its sequence of action is as the
following:
-

Loading a new project.


Choose to create a PCB layer
or not
Choose required components
from the library
Wiring components.
If using a microcontroller, we
need to load the. Hex file
saved by the IDE.
Run the simulation and notice
the action made by the
simulation to diagnosis
performance.
Figure 20 A screenshot from ISIS

26 | P a g e

References Used:
-

https://en.wikipedia.org/wiki/Arduino
https://learn.sparkfun.com/tutorials/what-is-an-arduino
https://en.wikipedia.org/wiki/Instruction_cycle
http://www.dummies.com/how-to/content/electronics-componentsintroducing-microcontroller.html
http://stackoverflow.com/questions/3468068/low-mid-high-level-languagewhats-the-difference
http://www.arduino.cc/en/Main/FAQ
https://en.wikipedia.org/wiki/Embedded_system
http://www.slideshare.net/abhisheksutrave/embedded-systems-in-automobile
https://labjack.com/support/faq/what-are-digital-io
https://learn.sparkfun.com/tutorials/analog-to-digital-conversion
https://www.arduino.cc/en/Tutorial/AnalogInput
https://www.arduino.cc/en/Tutorial/Button
https://gonium.net/md/2006/12/20/handling-external-interrupts-with-arduino/
https://www.arduino.cc/en/Reference/BitwiseAnd
http://www.labcenter.com/products/vsm/arduino.cfm
http://playground.arduino.cc/Code/PIDAutotuneLibrary

27 | P a g e

You might also like