Level-1-IoT

Basic electronics and Arduino

View on GitHub

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.

Photo by Harrison Broadbent on Unsplash

Experiments

  1. Hello World LED Blinking
  2. Traffic Light
  3. LED Chasing Effect
  4. Button Controlled LED
  5. Buzzer
  6. RGB LED
  7. LDR Light Sensor
  8. Flame Sensor
  9. LM35 Temperature Sensor
  10. IR Remote Control Using TSOP
  11. Potentiometer Analog Value Reading
  12. 7-Segment Display
  13. Assignments

1. Hello World LED Blinking

Circuit

Blink

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

Hello World LED Blinking

Actual Simulation

LED Blink

2. Traffic Light

Circuit

Traffic

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

Traffic Light

Actual Simulation

Traffic light

3. LED Chasing Effect

Circuit

LED Chasing Effect

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

LED Chasing Effect

Actual Simulation

LED chase

4. Button Controlled LED

Circuit

Button Controlled LED

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

Button Controlled LED

Actual Simulation

Push button LED

5. Buzzer

Circuit

Buzzer

Code

void setup()
{
 pinMode(10,OUTPUT);
}
void loop()
{
  digitalWrite(10,HIGH);
}

Working Video

Virtual Simulation

Buzzer

Actual Simulation

Buzzer

6. RGB LED

Circuit

RGB LED

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

RGB LED

Actual Simulation

RGB light

7. LDR Light Sensor

Circuit

LDR Light Sensor

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

LDR Light Sensor

Actual Simulation

LDR light sensor

8. Flame Sensor

Circuit

Flame Sensor

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

Flame Sensor

Actual Simulation

Flame sensor

9. LM35 Temperature Sensor

Circuit

LM35 Temperature Sensor

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

LM35 Temperature Sensor

Actual Simulation

Temp sensor

10. IR Remote Control Using TSOP

TSOP1738

Circuit

IR Remote Control Using TSOP

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

IR Remote Control Using TSOP

Actual Simulation

TSOP Remote

11. Potentiometer Analog Value Reading

Potentiometer Potentiometer

Circuit

Potentiometer Analog Value Reading

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

Potentiometer Analog Value Reading

Actual Simulation

Potentiometer

12. 7-Segment Display

7-Segment Display Configuration

Circuit

7-Segment Display

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

7-Segment Display

Actual Simulation

7 segment counter

Assignment 1

Create an automatic night lamp model using LDR and LED

Circuit

LED & LDR

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

LED_LDR

Actual Simulation

LED & LDR

Assignment 2

Create a Digital Dice using 7 Segment Display and Push Button

Circuit

Digital dice

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);
}

Working Video

Virtual Simulation

Digital dice

Actual Simulation

Digital dice