Csed Lab

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 83

PROGRAMMING WITH

ARDUINO
Arduino
• An open-source hardware platform based
on an Atmel AVR 8-bit microcontroller and
a C++ based IDE
• Over 300000 boards have been
manufactured
• Arduino Due is based on a 32-bit ARM
Cortex
Typical Arduino Board
Arduino IDE
Arduino Programming Basics
Comments

• Comments can be anywhere


• Comments created with // or /* and
*/
• Comments do not affect code
• You may not need comments, but
think about the community!
Variables
Declaring Variables

Boolean: boolean variableName;

Integer: int variableName;

Character: char variableName;


String: stringName [ ];
Assigning Variables

Boolean: variableName = true;


or variableName = false;
Integer: variableName = 32767;
or variableName = -32768;
Character: variableName = ‘A’;
or stringName = “SparkFun”;
Variable Scope
Where you declare your variables matters
Setup
void setup ( ) { }

The setup function comes before


the loop function and is necessary
for all Arduino sketches
Setup
void setup ( ) { }

The setup header will never change,


everything else that occurs in setup
happens inside the curly brackets
Setup
void setup ( ) {
pinMode (13, OUTPUT); }

Outputs are declare in setup, this is done


by using the pinMode function
This particular example declares digital pin # 13 as an output,
remember to use CAPS
Setup
void setup ( ) { Serial.begin;}

Serial communication also begins in


setup
This particular example declares Serial communication at a
baud rate of 9600.
Setup, Internal Pullup Resistors
void setup ( ) {
digitalWrite (12, HIGH); }

You can also create internal pullup resistors in setup, to do so


digitalWrite the pin HIGH
This takes the place of the pullup resistors currently on your
circuit 7 buttons
Arduino Code Basics
Arduino programs run on two basic sections:

void setup() {

//setup motors, sensors etc

}
void loop() {

// get information from sensors


// send commands to motors

}
If Statements
if ( this is true ) { do this; }
If
if ( this is true ) { do this; }
Conditional
if ( this is true ) { do this; }
Action
if ( this is true ) { do this; }
Else
else { do this; }
Basic Repetition

•loop

•For

•while
Basic Repetition

void loop ( ) { }
Basic Repetition

void loop ( ) { }
Basic Repetition

void loop ( ) { }

The “void” in the header is what


the function will return (or spit out)
when it happens, in this case it
returns nothing so it is void
Basic Repetition

void loop ( ) { }

The “loop” in the header is what the


function is called, sometimes you make
the name up, sometimes (like loop) the
function already has a name
Basic Repetition

void loop ( ) { }

The “( )” in the header is where you


declare any variables that you are
“passing” (or sending) the function, the
loop function is never “passed” any
variables
Basic Repetition

void loop ( ) { }
Basic Repetition

for (int count = 0; count<10; count++)


{
//for action code goes here
//this could be anything
}
Basic Repetition

for (int count = 0; count<10; count++)


{
//for action code goes here
}
Basic Repetition

for (int count = 0; count<10; count++)


{
//for action code goes here
}
Basic Repetition

for (int count = 0; count<10; count++)


{
//for action code goes here
}
Basic Repetition

for (int count = 0; count<10; count++)


{
//for action code goes here
}
Basic Repetition

for (int count = 0; count<10; count++)


{
//for action code goes here
}
Basic Repetition

for (int count = 0; count<10; count++)


{
//for action code goes here
}
Basic Repetition

while ( count<10 )
{
//while action code goes here
}
Basic Repetition

while ( count<10 )
{
//while action code goes here
//should include a way to change count
//variable so the computer is not stuck
//inside the while loop forever
}
Basic Repetition

while ( count<10 )
{
//looks basically like a “for” loop
//except the variable is declared before
//and incremented inside the while
//loop
}
Basic Repetition
Or maybe:

while ( digitalRead(buttonPin)==1 )
{
//instead of changing a variable
//you just read a pin so the computer
//exits when you press a button
//or a sensor is tripped
}
Important functions
• Serial.println(value);
– Prints the value to the Serial Monitor on your
computer
• pinMode(pin, mode);
– Configures a digital pin to read (input) or write (output)
a digital value
• digitalRead(pin);
– Reads a digital value (HIGH or LOW) on a pin set for
input
• digitalWrite(pin, value);
– Writes the digital value (HIGH or LOW) to a pin set for
output
Using LEDs
void setup()
{
pinMode(13, OUTPUT); //configure pin 13 as
output
}
// blink an LED once
void blink1()
{
digitalWrite(13,HIGH); // turn the LED on
delay(500); // wait 500 milliseconds
digitalWrite(13,LOW); // turn the LED off
delay(500); // wait 500 milliseconds
}
Switch Case
Setup, Interrupts
void setup ( ) {
attachInterrupt (interrupt, function,
mode) }
You can designate an interrupt
function to Arduino pins # 2 and 3

This is a way around the linear


processing of Arduino
Setup, Interrupts
void setup ( ) {
attachInterrupt (interrupt, function,
mode) }
Interrupt: the number of the interrupt, 0 or 1,
corresponding to Arduino pins # 2 and 3
respectively

Function: the function to call when the interrupt


occurs

Mode: defines when the interrupt should be


triggered
Setup, Interrupts
void setup ( ) {
attachInterrupt (interrupt, function,
mode) }
•LOW whenever pin state is low
•CHANGE whenever pin changes value
•RISING whenever pin goes from low to high
•FALLING whenever pin goes from low to
high

Don’t forget to CAPITALIZE


Input & Output
• Transferring data from the computer to an Arduino is
done using Serial Transmission
• To setup Serial communication we use the following

void setup() {

Serial.begin(9600);

}
50
Writing to the Console

void setup() {

Serial.begin(9600);
Serial.println(“Hello World!”);

void loop() {}

51
Reading data from Arduino
void setup()
{
Serial.begin(9600);
}
void serialtest()
{
int i;
for(i=0; i<10; i++)
Serial.println(i);
}
DC MOTORS AND
ACTUATORS
Actuators
• An electric motor is an electrical machine that
converts electrical energy into mechanical energy.
• Actuator: Device that turns energy (typically
electrical) to motion
• Features
– Force
– Speed
– Torque
– Efficiency
DC motor
• Force is produced
(F=ILB) due to the
electric current in a
wire inside a magnetic
field.
• Proportional to the
current, therefore can
be controlled by
potentiometer
• Hard to control
precisely
Buggy Motor Code

void setup() void Backward()


{
{
pinMode(5, OUTPUT); // Right +ve)
digitalWrite(5,LOW);
pinMode(6, OUTPUT); // Right -ve
pinMode(7, OUTPUT); // Left -ve
digitalWrite(6,HIGH);
pinMode(8, OUTPUT); // Left +ve digitalWrite(7,HIGH);
} digitalWrite(8,LOW);
void forward() }
{ void loop()
digitalWrite(5,HIGH); {
digitalWrite(6,LOW); forward();
digitalWrite(7,LOW); delay(3000); // wait for 3 second
digitalWrite(8,HIGH); Backward();
}
delay(3000); // wait for 3 second
}
INTRODUCTION TO SENSORS
What is a sensor?
• A device that receives a stimulus and
responds with an electrical signal.
• A special type of transducer (device that
converts one type of energy into another
Common Sensors
• Mechanical
– Accelerometers: measure acceleration forces
– Gyroscopes:  useful for measuring or maintaining orientation .
• Optical
– Photodetectors: Detect light
– Infrared: emitting and/or detecting infrared radiation
• Semiconductor
– Gas
– Temperature
– Magnetic
Sensors to be used in Buggy
• Infra Red (IR) Sensor
• Ultrasonic Sensor
• Pulse Receiver
• ZigBee module (For inter buggy and
Command centre communication)
• IR-LED – Tx
• PD – Rx
• IR-LED work similar to normal LED
• IR-LED transmit infrared light
• IR light is not visible to our necked
eye
• IR light is detected by Photodiode

How PD work ?
• PD generate the voltage depending
on the intensity of light
• Digital – In digital sensor output is
digital (High or Low).

• Analog – In analog sensor detection


depend on intensity of light received.
In some module output is middle pin while in other its sideline pin. Extra caution
is required to attach these pins to Arduino.
int r1; void loop() {
int r2; r1=analogRead(A1);
r2=analogRead(A3);
int r3; r3=digitalRead(A1);
int r4; r4=digitalRead(A3);
void setup() { Serial.println(r1);
Serial.begin(9600); Serial.print("\t");
Serial.println(r2);
pinMode(A1,INPUT);
Serial.print("\t");
pinMode(A3,INPUT); Serial.println(r3);
} Serial.print("\t");
Serial.println(r4);
}
ULTRASONIC SENSOR
 
It is essential to give your robot eyes for preventing crashes. Ultrasonic
sensors, also known as transducers, have a similar working system as a
radar or sonar by interpreting the echoes of radio or sound waves generated
by the sensor. In this way, a robot can detect obstacles and the distance to
obstacles. In this article, we make an overview of most popular ultrasonic
sensors used in robotic applications and tutorials to learn how to interface
and programming these sensors in order to build robots.
Hcsr04 ultrasonic sensor
Pin description:
VCC – 5V, +ve of the power supply
TRIG – Trigger Pin
ECHO – Echo Pin
GND – -ve of the power supply
HC-SR04 provides measurement function between 2 and 400 centimetres at range
accuracy of 3 millimetres. The HC-SR04 module hosts the ultrasonic transmitter,
the receiver and control circuit.
The HR-SR04 has four pins namely Vcc, Trigger, Echo, GND and they are
explained in detail below.
 
1) VCC: 5V DC supply voltage is connected to this pin.
 
2) Trigger: The trigger signal for starting the transmission is given to this pin. The
trigger signal must be a pulse with 10uS high time. When the module receives a
valid trigger signal it issues 8 pulses of 40 KHz ultrasonic sound from the
transmitter. The echo of this sound is picked by the receiver.
 
3) Echo: At this pin, the module outputs a waveform with high time proportional to
the distance.
 
4) GND: Ground is connected to this pin.
 
 
Working principle
firstly, transmit at least 10us high level pulse to the Trig pin
(module automatically sends eight 40K square wave) .

then wait to capture the rising edge output by echo port, at the
same time, open the timer to start timing.

Next, once again capture the falling edge output by echo


port, at the same time, read the time of the counter, which
is the ultrasonic running time in the air.
Working principle
Working principle
Calculate Distance to Obstacle

 
PIC18F26K80 DEVELOPMENT BOARD
Ultrasonic Sensor Example (1/2)

const int trigPin = 13;


const int echoPin = 12;
long duration;
int distanceCm, distanceInch;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
// initialize digital pin motor as an output
pinMode(5, OUTPUT); // Right +ve)
pinMode(6, OUTPUT); // Right -ve
pinMode(7, OUTPUT); // Left -ve
pinMode(8, OUTPUT); // Left +ve
}
Ultrasonic Sensor Example (2/2)

void loop() {
int s=0;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distanceCm= (duration*0.034)/2;
distanceInch = (duration*0.0133)/2;
Serial.println(distanceCm);
if(distanceCm<30) //here we set the object range 15cm.
{
Put your code here
}
ZigBee Technology
The explosion in wireless technology has seen the emergence of many standards,
especially in the industrial, scientific and medical (ISM) radio band. There have been
a multitude of proprietary protocols for control applications, which bottlenecked
interfacing. Need for a widely accepted standard for communication between sensors
in low data rate wireless networks was felt.
Comparision Between Zigbee and Bluetooth

You might also like