Level 1: Basic Electronics & Arduino
Introduction to Arduino
Arduino is an open-source electronics platform based on easy-to-use hardware and software. Arduino boards are able to read inputs - light on a sensor, a finger on a button, or a Twitter message - and turn it into an output - activating a motor, turning on an LED, publishing something online. You can tell your board what to do by sending a set of instructions to the microcontroller on the board. To do so you use the Arduino programming language (based on Wiring), and the Arduino Software (IDE), based on Processing.

Experiments
- Hello World LED Blinking
- Traffic Light
- LED Chasing Effect
- Button Controlled LED
- Buzzer
- RGB LED
- LDR Light Sensor
- Flame Sensor
- LM35 Temperature Sensor
- IR Remote Control Using TSOP
- Potentiometer Analog Value Reading
- 7-Segment Display
- Assignments
1. Hello World LED Blinking
Circuit

Code
void setup()
{pinMode(13, OUTPUT);} // Define LED pin
void loop()
{
digitalWrite(13, HIGH);
delay(1000); // Wait for 1000 millisecond(s)
digitalWrite(13, LOW);
delay(1000); // Wait for 1000 millisecond(s)
}
Working video
Virtual Simulation
Actual Simulation
2. Traffic Light
Circuit

Code
int red =13;
int yellow =11;
int green =9;
void setup()
{
pinMode(red, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(green, OUTPUT);
}
void loop()
{
digitalWrite(green, HIGH);// turn on green LED
delay(2500);
digitalWrite(green, LOW);// turn off green LED
digitalWrite(yellow, HIGH);// turn on yellow LED
delay(2500);
digitalWrite(yellow, LOW);// turn off yellow LED
digitalWrite(red, HIGH);// turn on red LED
delay(2500);
digitalWrite(red, LOW);// turn off red LED
delay(500);
//turn on all LEDs
digitalWrite(green, HIGH);
digitalWrite(yellow, HIGH);
digitalWrite(red, HIGH);
delay(500);
//turn off all LEDs
digitalWrite(green, LOW);
digitalWrite(yellow, LOW);
digitalWrite(red, LOW);
delay(500);
}
Working Video
Virtual Simulation
Actual Simulation
3. LED Chasing Effect
Circuit

Code
int num=12; //No. of LEDs
void setup()
{
for (int i=2;i<num+2;i++)
{pinMode(i, OUTPUT);}
}
void loop()
{
for (int i=2;i<num+2;i++)
{
digitalWrite(i,HIGH);
delay(50); //wait for 50 milliseconds
}
for (int i=2;i<num+2;i++)
{
digitalWrite(i,LOW);
delay(50); //wait for 50 milliseconds
}
}
Working Video
Virtual Simulation
Actual Simulation
4. Button Controlled LED
Circuit

Code
int led=8; //LED pin
int button=4; //button pin
void setup()
{
pinMode(led,OUTPUT);
pinMode(button,INPUT);
}
void loop()
{
if(digitalRead(button)==HIGH) //read the digital value in button
{digitalWrite(led,HIGH);} //LED on
else
{digitalWrite(led,LOW);} //LED off
}
Working Video
Virtual Simulation
Actual Simulation
5. Buzzer
Circuit

Code
void setup()
{
pinMode(10,OUTPUT);
}
void loop()
{
digitalWrite(10,HIGH);
}
Working Video
Virtual Simulation
Actual Simulation
6. RGB LED
Circuit

Code
int val;
void setup()
{
pinMode(11,OUTPUT); //red pin
pinMode(10,OUTPUT); //blue pin
pinMode(9,OUTPUT); //green pin
Serial.begin(9600);
}
void loop()
{
val= random(0,255);
analogWrite(11,val);
analogWrite(10,255-val);
analogWrite(9,128-val);
Serial.println(val); //print value in serial monitor
}
Working Video
Virtual Simulation
Actual Simulation
7. LDR Light Sensor
Circuit

Code
int ldr=A0; //analog pin for LDR
int led=11; //LED pin
int light;
void setup()
{
pinMode(led,OUTPUT);
pinMode(ldr,INPUT);
Serial.begin(9600);
}
void loop()
{
light=analogRead(ldr); //read analog value from LDR
Serial.println(light); //print value on serial monitor
analogWrite(led,light/100); //intensity of LED depends on analog value
delay(500);
}
Working Video
Virtual Simulation
Actual Simulation
8. Flame Sensor
Circuit

Code
int buzz=12; //buzzer pin
int sense=A0; //Flame sensor pin
int flame;
void setup()
{
pinMode(buzz, OUTPUT);
pinMode(sense, INPUT);
Serial.begin(9600);
}
void loop()
{
flame=analogRead(sense); //analog value from sensor
Serial.println(flame); //print value on serial monitor
if (flame>=115)
{
digitalWrite(buzz, HIGH); //buzzer turns on
}
else
{
digitalWrite(buzz, LOW); //buzzer turns off
}
delay(200);
}
Working Video
Virtual Simulation
Actual Simulation
9. LM35 Temperature Sensor
Circuit

Code
int val;
float degree; //degree in decimal
void setup()
{
pinMode(A0,INPUT);
Serial.begin(9600);
}
void loop()
{
val=analogRead(A0); //read value from sensor
degree= ((val-20.0)*165.0/338.0)-40.0; //temperature calculation
Serial.print("Temp ");
Serial.print(degree);
Serial.println(" C");
}
Working Video
Virtual Simulation
Actual Simulation
10. IR Remote Control Using TSOP

Circuit

Code
Version 2
#include <IRremote.h>
int IRpin=11; //initialising IR pin
IRrecv Sensor(IRpin); //IR reciever as "Sensor"
decode_results rslt; //decode results into "rslt"
void setup()
{
Sensor.enableIRIn();
Serial.begin(9600);
pinMode(7,OUTPUT);
pinMode(6,OUTPUT);
pinMode(5,OUTPUT);
pinMode(4,OUTPUT);
pinMode(3,OUTPUT);
pinMode(2,OUTPUT);
pinMode(8,INPUT);
}
void loop()
{
if(Sensor.decode(&rslt)) //without this condition, the serial monitor will print '0' continously
{
Serial.println(rslt.value, HEX); //to print the value in HEX code
LED(); //all LEDs off and all LEDs ON
Sensor.resume();
}
}
void LED()
{
if (rslt.value==0xFD00FF) //The hex code could be different in actual simulation (depends on the remote)
{
if(digitalRead(8)==0)
{
for(int i=8;i--;i>=2)
{digitalWrite(i,1);} //LEDs ON
}
else
{
for(int i=8;i--;i>=2)
{digitalWrite(i,0);} //LEDs OFF
}
}
}
Version 3
#include <IRremote.h>
int IRpin=11; //initialising IR pin
void setup()
{
IrReceiver.begin(IRpin, ENABLE_LED_FEEDBACK);
Serial.begin(9600);
pinMode(7,OUTPUT);
pinMode(6,OUTPUT);
pinMode(5,OUTPUT);
pinMode(4,OUTPUT);
pinMode(3,OUTPUT);
pinMode(2,OUTPUT);
pinMode(8,INPUT);
}
void loop()
{
if(IrReceiver.decode()) //without this condition, the serial monitor will print '0' continously
{
Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX); //to print value in HEX code
LED(); //all LEDs off and all LEDs ON
IrReceiver.resume();
}
}
void LED()
{
if (IrReceiver.decodedIRData.decodedRawData==0xFD00FF) //The hex code could be different in actual simulation (depends on the remote)
{
if(digitalRead(8)==0)
{
for(int i=8;i--;i>=2)
{digitalWrite(i,1);} //LEDs ON
}
else
{
for(int i=8;i--;i>=2)
{digitalWrite(i,0);} //LEDs OFF
}
}
}
Working Video
Virtual Simulation
Actual Simulation
11. Potentiometer Analog Value Reading

Circuit

Code
void setup()
{
pinMode(A0, INPUT);
Serial.begin(9600);
}
void loop()
{
int pot=analogRead(A0); //Read value from potentiometer
Serial.println(pot); //Print on Serial monitor
delay(100); // Wait for 100 milliseconds
}
Working Video
Virtual Simulation
Actual Simulation
12. 7-Segment Display

Circuit

Code
//Program to repeatedly count from 0 to 9 using 7-segment
//NOTE: In this program, DP terminal is grounded
int a=2;
int b=3;
int c=4;
int d=5;
int e=6;
int f=7;
int g=8;
void setup()
{
for(int i=2;i<=8;i++)
{pinMode(i, OUTPUT);}
}
void loop()
{
zero();
delay(1000);
one();
delay(1000);
two();
delay(1000);
three();
delay(1000);
four();
delay(1000);
five();
delay(1000);
six();
delay(1000);
seven();
delay(1000);
eight();
delay(1000);
nine();
delay(1000);
}
//Individual number functions:
void zero()
{
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,LOW);
}
void one()
{
digitalWrite(a,LOW);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
}
void two()
{
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,LOW);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,HIGH);
}
void three()
{
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,HIGH);
}
void four()
{
digitalWrite(a,LOW);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
}
void five()
{
digitalWrite(a,HIGH);
digitalWrite(b,LOW);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,LOW);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
}
void six()
{
digitalWrite(a,HIGH);
digitalWrite(b,LOW);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
}
void seven()
{
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
}
void eight()
{
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
}
void nine()
{
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,LOW);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
}
Working Video
Virtual Simulation
Actual Simulation
Assignment 1
Create an automatic night lamp model using LDR and LED
Circuit

Code
void setup()
{
pinMode(12,OUTPUT);
pinMode(A0,INPUT);
Serial.begin(9600);
}
void loop()
{
int ldr= analogRead(A0); //light value of LDR
Serial.println(ldr);
if (ldr<490) //This condition can change in practical application
{digitalWrite(12,1);}
else
{digitalWrite(12,0);}
delay(100);
}
Working Video
Virtual Simulation
Actual Simulation
Assignment 2
Create a Digital Dice using 7 Segment Display and Push Button
Circuit

Code
int a=2;
int b=3;
int c=4;
int d=5;
int e=6;
int f=7;
int g=8;
void setup()
{
for(int i=2;i<=8;i++)
{pinMode(i, OUTPUT);}
pinMode(9,INPUT);
Serial.begin(9600);
}
void loop()
{
if (pulseIn(9,HIGH)) //to detect input from button
{
roll(); //Function to roll the dice
int no=random(1,7); //random no. from 1 to 6
Serial.println(no);
switch (no)
{case 1:one();break;
case 2:two();break;
case 3:three();break;
case 4:four();break;
case 5:five();break;
case 6:six();break;}
}
}
//Individual number functions:
void roll()
{
one();delay(100);
two();delay(100);
three();delay(100);
four();delay(100);
five();delay(100);
six();delay(100);
}
void zero()
{
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,LOW);
}
void one()
{
digitalWrite(a,LOW);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
}
void two()
{
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,LOW);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,HIGH);
}
void three()
{
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,HIGH);
}
void four()
{
digitalWrite(a,LOW);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
}
void five()
{
digitalWrite(a,HIGH);
digitalWrite(b,LOW);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,LOW);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
}
void six()
{
digitalWrite(a,HIGH);
digitalWrite(b,LOW);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
}
void seven()
{
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
}
void eight()
{
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
}
void nine()
{
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,LOW);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
}














