Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
8 views

IoT PPT05 Intro Arduino Programming

The document provides an introduction to Arduino programming, detailing the structure of sketches, which consist of setup and loop functions. It covers essential programming concepts, built-in functions, and examples such as controlling LEDs and reading analog voltages. Additionally, it emphasizes the use of Arduino libraries for simplifying connections to various sensors and modules.

Uploaded by

pankaj rangaree
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views

IoT PPT05 Intro Arduino Programming

The document provides an introduction to Arduino programming, detailing the structure of sketches, which consist of setup and loop functions. It covers essential programming concepts, built-in functions, and examples such as controlling LEDs and reading analog voltages. Additionally, it emphasizes the use of Arduino libraries for simplifying connections to various sensors and modules.

Uploaded by

pankaj rangaree
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 20

CS578: Internet of Things

Introduction to
Arduino Programming

Dr. Manas Khatua


Assistant Professor, Dept. of CSE, IIT Guwahati
E-mail: manaskhatua@iitg.ac.in

“If you want peace of mind, do not find fault with others. Rather learn to see your own faults.” – Ma Sarada Devi
Introduction
• The Arduino Software (IDE) allows you to write programs (i.e. sketches)
and upload them to your board.

• A sketch is consists of two mandatory functions:


 Setup( ) -- it is executed once
 Loop( ) -- it is executed repeatedly

• Setup( ) is used for


 initialization of serial communication
 defining pinMode
 declaring variables

• Loop( ) is used for


 writing the main code which has to execute continuously.
 e.g. reading inputs from the sensors, triggering outputs to the external
device, etc.

08-08-2024 Dr. Manas Khatua 2


Cont…
• Sketches are compiled by
avr-gcc / avr-g++
– It is based on C/C++
programming language

• So, the program syntax is


almost similar to C/C++
– Supported data types
– Variables
– Constants
– Control structure
– Looping structure
– Arrays
– Strings
– Function

• One important extension is : Arduino Libraries


– Libraries are a collection of code that makes it easy for you to
connect to a sensor, display, module, etc.

08-08-2024 Dr. Manas Khatua 3


Variables

08-08-2024 Dr. Manas Khatua 4


Operators & Structures

08-08-2024 Dr. Manas Khatua 5


Few Built-in Functions
https://www.arduino.cc/reference/en/

• pinMode (pin, mode)


– It configures the specified pin to behave either as input or as output pinMode(9,OUTPUT);
– By default the digital pins in Arduino function as input.

– pin: is the number of the pin whose mode needs to be set


– mode: can be INPUT, OUTPUT, INPUT_PULLUP.

• digitalReadPin(pin) val = digitalRead(inPin);


– Reads the value from a specified digital pin, either HIGH or LOW.

• digitalWrite(pin, value)
– Used for output by using the LOW/HIGH logic level (i.e. 0V / 5V) digitalWrite(10,HIGH);
– value: LOW / HIGH

• analogRead(pin)
– Access and gets value from a particular Analog pin having 10-bit resolution (i.e. 10- val = analogRead(A3);
bit ADC)
– Returns: 0-1023 (integer)
– Arduino UNO yields a resolution between readings of: 5 volts / 1024 units. It will
map input voltages between 0 and the operating voltage(5V or 3.3V) into integer
values between 0 and 1023.
– The input range can be changed using analogReference()

• analogWrite(pin, value)
– Write the analog value (PWM wave) to a pin analogWrite(9, val / 4);
– value: it is the duty cycle value between 0 and 255 (as 6 pins).
– Note: analogRead values go from 0 to 1023, analogWrite values from 0 to 255

08-08-2024 Dr. Manas Khatua 6


Cont…
• delay(ms)
– Pause the program for the amount of time (in millisecond) delay(1000); // wait for a second
specified by ms

• Serial.begin( speed )
– It sets the speed in bps (baud rate) for serial data transmission Serial.begin(9600);
from computer to Arduino board

• Serial.available ()
– Returns: the number of bytes (characters) available to read
if (Serial.available() > 0) { }

• Serial.print( value )
– Print data to the serial port as human-readable ASCII text
Serial.print("I received: ");
– Numbers are printed using ASCII character for each digit
– Floats are printed as ASCII digits (upto 2 decimal places)
– Bytes are send as a single character
– Characters and Strings are sent as is.

• Serial.print( value, format)


Serial.print(i,DEC);
– The optional 2nd argument specifies the base (format) to use
– format: BIN / OCT / DEC / HEX // Print Decimal value of number i

• Serial.println( value) , Serial.println( value, format)


– Additionally it returns the number of bytes written

08-08-2024 Dr. Manas Khatua 7


Cont…
• Serial.read() incomingByte = Serial.read();
– Reads incoming serial data.
Serial.write(45); // send a byte with the value 45
• Serial.write(val) or .write(str) or .write(buf, len)
– Writes binary data to the serial port.
– This data is sent as a byte or series of bytes; to send the int bytesSent = Serial.write("hello"); //send the
characters representing the digits of a number use string "hello" and return the length of the string.
the print() function instead.

• Trigonometry:
– cos()
– sin()
– tan()

• Math:
– abs()
– max()
– min()
– pow()
– sq()
– sqrt()
– random()
– randomSeed()

08-08-2024 Dr. Manas Khatua 8


Example 1: Digital Read-Write
• Objective:
– Turns on and off a LED connected to digital pin 13, when pressing a
pushbutton attached to pin 2.

• The circuit:
– LED attached from pin 13 to ground through 220 ohm resistor
– One leg of the Pushbutton attached to pin 2
– That same leg of the button connects through a pull-down resistor (here
10K ohm) to ground.
– The other leg of the button connects to the 5 volt supply.
08-08-2024 Dr. Manas Khatua 9
Cont…

• When the pushbutton is


open (unpressed)
– there is no connection
between the two legs of the
pushbutton, so the pin is
connected to ground
(through the pull-down
resistor) and we read a LOW.

• When the button is closed


(pressed)
– it makes a connection
between its two legs,
connecting the pin to 5 volts,
so that we read a HIGH.

08-08-2024 Dr. Manas Khatua 10


Example 2: Binary Counter in LED
• Requirements:
– Arduino UNO
– USB connector
– Breadboard
– 4 piece LEDs
– 4 piece 1K ohm resistor
– Arduino IDE

• Connection:
– Place the LED and resistor on breadboard
– Connect the bradboard power with Arduino
– Connect the LED with Arduino
– Connect the Arduino board with PC/Laptop

• Arduino Programming
– Install IDE in PC/Laptop
– Run the IDE
– Select the Arduino board in IDE
– Select the connected COM port
– Start writing new sketch

08-08-2024 Dr. Manas Khatua 11


Sketch of Binary Counter

08-08-2024 Dr. Manas Khatua 12


Demo on Binary Counter in LED

08-08-2024 Dr. Manas Khatua 13


Read Analog Voltage
• ADC provide digital output which is proportional to analog value.

• To know what is input analog value, we need to convert the received digital value
back to analog value through program.

Aout = digital value * (Vref/2^n – 1)

• Example:
 digital value = 512 and ADC is 10-bit with 5V Vref.
 What analog voltage is giving the respective digital value?

Aout = 512 * (5 V / 1023) = 2.5 V

digitalValue = analogRead (pin)

pin - number of analog pin which we want to read


digitalValue: 0 – 1023

08-08-2024 Dr. Manas Khatua 14


Example: Read Analog Voltage
// select the input pin for the potentiometer
int sensorPin = A0;
// variable to store the value coming from the sensor
int digitalValue = 0;
float analogVoltage = 0.00;
void setup() {
Serial.begin(9600);
}
void loop() {
// read the value from the analog channel
digitalValue = analogRead(sensorPin); Pin 1 & 3 of Potentiometer:
Serial.print("digital value = "); connect them to Vcc and GND of
//print digital value on serial monitor Arduino
Serial.print(digitalValue);
//convert digital value to analog voltage Pin 2 of Potentiometer: Connect
analogVoltage = (digitalValue * 5.00)/1023.00; with A0 pin of Arduino
Serial.print(" analog voltage = ");
Serial.println(analogVoltage);
delay(1000);
}

08-08-2024 Dr. Manas Khatua 15


Example: Read Analog Voltage
// select the input pin for the potentiometer
int sensorPin = A0;
// variable to store the value coming from the sensor
int digitalValue = 0;
float analogVoltage = 0.00;
void setup() {
Serial.begin(9600);
}
void loop() {
// read the value from the analog channel
digitalValue = analogRead(sensorPin);
Serial.print("digital value = ");
//print digital value on serial monitor
Serial.print(digitalValue);
//convert digital value to analog voltage
analogVoltage = (digitalValue * 5.00)/1023.00;
Serial.print(" analog voltage = ");
Serial.println(analogVoltage);
delay(1000);
}

08-08-2024 Dr. Manas Khatua 16


Write Analog Value
• 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 Vcc and GND.
 by changing the portion of the time
the signal spends ON versus the
time that the signal spends OFF

• The analogWrite(value) is on a scale


of 0 – 255.
 Zero value means 0% duty cycle,
255 value means 100% duty cycle.

08-08-2024 Dr. Manas Khatua 17


Example: Write Analog Value

Pin 1 & 3 of Potentiometer:


connect them to Vcc and GND of
Arduino

Pin 2 of Potentiometer: Connect


with A0 pin of Arduino
OUTPUT: LED Dimming by Potentiometer
One LED connected with digital
pin 9 and grounded through 220
ohm or 1 Kohm resistor
08-08-2024 Dr. Manas Khatua 18
Lessons Learned

 What is Arduino Programming

 Syntax of Arduino Programming

 Supporting variable, structures, operators

 In-Built Arduino Function Library

 Programming example - LED blink

 Program and Demo on binary counter in LED

 Analog Read and Write

08-08-2024 Dr. Manas Khatua 19


08-08-2024 Dr. Manas Khatua 20

You might also like