Welcome to Hackster!
Hackster is a community dedicated to learning hardware, from beginner to pro. Join us, it's free!
yashvanthnagnarduinolikithasbvinuthavbharatangadi
Published © GPL3+

Density Based Traffic control system

Density Based Traffic control system with Priority to Emergency Vehicles using Arduino Mega 2560

IntermediateWork in progress1,186
Density Based Traffic control system

Things used in this project

Hardware components

Resistor 220 ohm
Resistor 220 ohm
×12
Through Hole Resistor, 47 kohm
Through Hole Resistor, 47 kohm
×1
Resistor 1M ohm
Resistor 1M ohm
×1
5 mm LED: Red
5 mm LED: Red
×4
5 mm LED: Green
5 mm LED: Green
×4
5 mm LED: Yellow
5 mm LED: Yellow
×4
7 Segment LED Display, Red
7 Segment LED Display, Red
×4
Antenna, RFID
Antenna, RFID
×2
Jumper wires (generic)
Jumper wires (generic)
×10
Female/Female Jumper Wires
Female/Female Jumper Wires
×10
Male/Female Jumper Wires
Male/Female Jumper Wires
×10
Circular Connector Cable Seal, Heat Shrinkable Sealing Boot
Circular Connector Cable Seal, Heat Shrinkable Sealing Boot
×5
Electrolytic Capacitor, 0.1 µF
Electrolytic Capacitor, 0.1 µF
×2
Ceramic Disc Capacitor, 0.1 µF
Ceramic Disc Capacitor, 0.1 µF
×2
9V battery (generic)
9V battery (generic)
×2
9V Battery Clip
9V Battery Clip
×2
Thermopile IR Sensor, TS105-10L5.5mm
Thermopile IR Sensor, TS105-10L5.5mm
×8
Arduino Mega 2560
Arduino Mega 2560
×1
Linear Regulator (7805)
Linear Regulator (7805)
×2

Software apps and online services

Arduino IDE
Arduino IDE

Hand tools and fabrication machines

Soldering iron (generic)
Soldering iron (generic)
Solder Wire, Lead Free
Solder Wire, Lead Free
Solder Flux, Soldering
Solder Flux, Soldering
Wire Stripper & Cutter, 18-10 AWG / 0.75-4mm² Capacity Wires
Wire Stripper & Cutter, 18-10 AWG / 0.75-4mm² Capacity Wires

Story

Read more

Custom parts and enclosures

circuit using protues

preferably use proteus 8.12 version

Code

Source code

C/C++
use Arduino ide software
#define R1 13
#define Y1 12
#define G1 11
#define R2 10
#define Y2 9
#define G2 8
#define R3 7
#define Y3 6
#define G3 5
#define R4 4
#define Y4 3
#define G4 2







 //Prepare binary array for all 7 segment to turn on 7 segment at position of a,b,c,d,e,f,g
int digit[10] = {0b0111111, 0b0000110, 0b1011011, 0b1001111, 0b1100110, 0b1101101, 0b1111101, 0b0000111, 0b1111111, 0b1101111};

int digit1, digit2; // initialize individual digit to controll each segment


void dis(int num)
{
  for (int i = 22; i< 29; i++)
  {
digitalWrite(i, bitRead(digit[num], i - 22));
  }
}

void dis2(int num)
{
  for (int i = 40; i< 47; i++)
  {
digitalWrite(i, bitRead(digit[num], i - 40));
  }
}

void dis3(int num)
{
  for (int i = 49; i< 54; i++)
  {
digitalWrite(i, bitRead(digit[num], i - 49));
  }
  int i=54;
digitalWrite(A8,bitRead(digit[num],i-49));
i++;
digitalWrite(A9,bitRead(digit[num],i-49));
}


void dis1(int num)
{
  for (int i = 31; i< 38; i++)
  {
digitalWrite(i, bitRead(digit[num], i - 31));
  }
}














void setup()
{

pinMode(R1,OUTPUT);
pinMode(Y1,OUTPUT);
pinMode(G1,OUTPUT);

pinMode(R2,OUTPUT);
pinMode(Y2,OUTPUT);
pinMode(G2,OUTPUT);

pinMode(R3,OUTPUT);
pinMode(Y3,OUTPUT);
pinMode(G3,OUTPUT);

pinMode(R4,OUTPUT);
pinMode(Y4,OUTPUT);
pinMode(G4,OUTPUT);


pinMode(A0,INPUT);
pinMode(A1,INPUT);
pinMode(A2,INPUT);
pinMode(A3,INPUT);
pinMode(A4,INPUT);
pinMode(A5,INPUT);
pinMode(A6,INPUT);
pinMode(A7,INPUT);




  for (int i = 22; i< 29; i++)
  {
pinMode(i, OUTPUT); // declare 0-9 th pin as output
  }
pinMode(29, OUTPUT); //declare 7 seg Digit1 pin as output
pinMode(30, OUTPUT);//declare 7 seg Digit2 pin as output

  for (int i = 40; i< 47; i++)
  {
pinMode(i, OUTPUT); // declare 0-9 th pin as output
  }
pinMode(48, OUTPUT); //declare 7 seg Digit1 pin as output
pinMode(47, OUTPUT);//declare 7 seg Digit2 pin as output

 for (int i = 49; i< 54; i++)
  {
pinMode(i, OUTPUT); // declare 0-9 th pin as output
  }
pinMode(A8, OUTPUT); 
pinMode(A9, OUTPUT);
pinMode(A10, OUTPUT); 
pinMode(A11, OUTPUT);

 for (int i = 31; i< 38; i++)
  {
pinMode(i, OUTPUT); // declare 0-9 th pin as output
  }
pinMode(39, OUTPUT); //declare 7 seg Digit1 pin as output
pinMode(38, OUTPUT);//declare 7 seg Digit2 pin as output

pinMode(19,INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(19),ambulance,LOW);







}
void loop() {
  int IR1=analogRead(A6);
  int IR2=analogRead(A7);
if(IR1<=60 && IR2<=60)
  {


digitalWrite(G1,HIGH);
digitalWrite(R1,LOW);
digitalWrite(Y1,LOW);
delay(20);

digitalWrite(R2,HIGH);
digitalWrite(Y2,LOW);
digitalWrite(G2,LOW);
delay(20);
digitalWrite(R3,HIGH);
digitalWrite(Y3,LOW);
digitalWrite(G3,LOW);
delay(20);
digitalWrite(R4,HIGH);
digitalWrite(Y4,LOW);
digitalWrite(G4,LOW);
delay(20);


  for (int j = 90; j>=0; j--)// for lopp to pass value from 00-99
  {
    if(j==10)
    {
digitalWrite(Y2,HIGH);
digitalWrite(R2, LOW);
    }
    digit2 = j / 10;
    digit1 = j % 10;
    for ( int k = 0; k < 35; k++)// For loop to control the digit control to print 00-99
    {
digitalWrite(30, HIGH);
digitalWrite(29, LOW);
      dis(digit2);
delay(10);




digitalWrite(29, HIGH);
digitalWrite(30, LOW);
      dis(digit1);
delay(15);
    }
  }
}

else if (IR1<=60 && IR2>60)
  {


digitalWrite(G1,HIGH);
digitalWrite(R1,LOW);
digitalWrite(Y1,LOW);
delay(20);

digitalWrite(R2,HIGH);
digitalWrite(Y2,LOW);
digitalWrite(G2,LOW);
delay(20);
digitalWrite(R3,HIGH);
digitalWrite(Y3,LOW);
digitalWrite(G3,LOW);
delay(20);
digitalWrite(R4,HIGH);
digitalWrite(Y4,LOW);
digitalWrite(G4,LOW);
delay(20);




 for (int j = 60; j>=0; j--)// for lopp to pass value from 00-99
  {
    if(j==10)
    {
digitalWrite(Y2,HIGH);
digitalWrite(R2, LOW);
    }
    digit2 = j / 10;
    digit1 = j % 10;


        for ( int k = 0; k < 35; k++)// For loop to control the digit control to print 00-99
    {
digitalWrite(30, HIGH);
digitalWrite(29, LOW);
      dis(digit2);
delay(10);




digitalWrite(29, HIGH);
digitalWrite(30, LOW);
      dis(digit1);
delay(15);
    }
  }
}


    else if (IR1>60 && IR2>60)
  {


digitalWrite(G1,HIGH);
digitalWrite(R1,LOW);
digitalWrite(Y1,LOW);
delay(20);

digitalWrite(R2,HIGH);
digitalWrite(Y2,LOW);
digitalWrite(G2,LOW);
delay(20);
digitalWrite(R3,HIGH);
digitalWrite(Y3,LOW);
digitalWrite(G3,LOW);
delay(20);
digitalWrite(R4,HIGH);
digitalWrite(Y4,LOW);
digitalWrite(G4,LOW);
delay(20);




 for (int j = 30; j>=0; j--)// for lopp to pass value from 00-99
  {
    if(j==10)
    {
digitalWrite(Y2,HIGH);
digitalWrite(R2, LOW);
    }
    digit2 = j / 10;
    digit1 = j % 10;


        for ( int k = 0; k < 35; k++)// For loop to control the digit control to print 00-99
    {
digitalWrite(30, HIGH);
digitalWrite(29, LOW);
      dis(digit2);
delay(10);




digitalWrite(29, HIGH);
digitalWrite(30, LOW);
      dis(digit1);
delay(15);
    }
  }
}

int IR3=analogRead(A0);
int IR4=analogRead(A1);

if(IR3<=60 && IR4<=60)
   {


digitalWrite(G1,LOW);
digitalWrite(R1,HIGH);
digitalWrite(Y1,LOW);
delay(20);

digitalWrite(R2,LOW);
digitalWrite(Y2,LOW);
digitalWrite(G2,HIGH);
delay(20);
digitalWrite(R3,HIGH);
digitalWrite(Y3,LOW);
digitalWrite(G3,LOW);
delay(20);
digitalWrite(R4,HIGH);
digitalWrite(Y4,LOW);
digitalWrite(G4,LOW);
delay(20);

  for (int j = 90; j>=0; j--)// for lopp to pass value from 00-99
  {
    if(j==10)
    {
digitalWrite(Y3,HIGH);
digitalWrite(R3, LOW);
    }
    digit2 = j / 10;
    digit1 = j % 10;


        for ( int k = 0; k < 35; k++)// For loop to control the digit control to print 00-99
    {
digitalWrite(39, HIGH);
digitalWrite(38, LOW);
      dis1(digit2);
delay(10);




digitalWrite(38, HIGH);
digitalWrite(39, LOW);
      dis1(digit1);
delay(15);
    }
  }
}


else if(IR3<=60 && IR4>60)
   {


digitalWrite(G1,LOW);
digitalWrite(R1,HIGH);
digitalWrite(Y1,LOW);
delay(20);

digitalWrite(R2,LOW);
digitalWrite(Y2,LOW);
digitalWrite(G2,HIGH);
delay(20);
digitalWrite(R3,HIGH);
digitalWrite(Y3,LOW);
digitalWrite(G3,LOW);
delay(20);
digitalWrite(R4,HIGH);
digitalWrite(Y4,LOW);
digitalWrite(G4,LOW);
delay(20);

  for (int j = 60; j>=0; j--)// for lopp to pass value from 00-99
  {
    if(j==10)
    {
digitalWrite(Y3,HIGH);
digitalWrite(R3, LOW);
    }
    digit2 = j / 10;
    digit1 = j % 10;


        for ( int k = 0; k < 35; k++)// For loop to control the digit control to print 00-99
    {
digitalWrite(39, HIGH);
digitalWrite(38, LOW);
      dis1(digit2);
delay(10);




digitalWrite(38, HIGH);
digitalWrite(39, LOW);
      dis1(digit1);
delay(15);
    }
  }
}


else if(IR3>60 && IR4>60)
   {


digitalWrite(G1,LOW);
digitalWrite(R1,HIGH);
digitalWrite(Y1,LOW);
delay(20);

digitalWrite(R2,LOW);
digitalWrite(Y2,LOW);
digitalWrite(G2,HIGH);
delay(20);
digitalWrite(R3,HIGH);
digitalWrite(Y3,LOW);
digitalWrite(G3,LOW);
delay(20);
digitalWrite(R4,HIGH);
digitalWrite(Y4,LOW);
digitalWrite(G4,LOW);
delay(20);

  for (int j = 30; j>=0; j--)// for lopp to pass value from 00-99
  {
    if(j==10)
    {
digitalWrite(Y3,HIGH);
digitalWrite(R3, LOW);
    }
    digit2 = j / 10;
    digit1 = j % 10;


        for ( int k = 0; k < 35; k++)// For loop to control the digit control to print 00-99
    {
digitalWrite(39, HIGH);
digitalWrite(38, LOW);
      dis1(digit2);
delay(10);




digitalWrite(38, HIGH);
digitalWrite(39, LOW);
      dis1(digit1);
delay(15);
    }
  }
}



int IR5=analogRead(A2);
int IR6=analogRead(A3);

 if (IR5<=60 && IR6<=60)
  {


digitalWrite(G1,LOW);
digitalWrite(R1,HIGH);
digitalWrite(Y1,LOW);
delay(20);

digitalWrite(R2,HIGH);
digitalWrite(Y2,LOW);
digitalWrite(G2,LOW);
delay(20);
digitalWrite(R3,LOW);
digitalWrite(Y3,LOW);
digitalWrite(G3,HIGH);
delay(20);
digitalWrite(R4,HIGH);
digitalWrite(Y4,LOW);
digitalWrite(G4,LOW);
delay(20);




 for (int j = 90; j>=0; j--)// for lopp to pass value from 00-99
  {
    if(j==10)
    {
digitalWrite(Y4,HIGH);
digitalWrite(R4, LOW);
    }
    digit2 = j / 10;
    digit1 = j % 10;


        for ( int k = 0; k < 35; k++)// For loop to control the digit control to print 00-99
    {
digitalWrite(47, HIGH);
digitalWrite(48, LOW);
      dis2(digit2);
delay(10);




digitalWrite(48, HIGH);
digitalWrite(47, LOW);
      dis2(digit1);
delay(15);
    }
  }
}


  else if (IR5<=60 && IR6>60)
  {


digitalWrite(G1,LOW);
digitalWrite(R1,HIGH);
digitalWrite(Y1,LOW);
delay(20);

digitalWrite(R2,HIGH);
digitalWrite(Y2,LOW);
digitalWrite(G2,LOW);
delay(20);
digitalWrite(R3,LOW);
digitalWrite(Y3,LOW);
digitalWrite(G3,HIGH);
delay(20);
digitalWrite(R4,HIGH);
digitalWrite(Y4,LOW);
digitalWrite(G4,LOW);
delay(20);


     for (int j = 60; j>=0; j--)// for lopp to pass value from 00-99
  {
    if(j==10)
    {
digitalWrite(Y4,HIGH);
digitalWrite(R4, LOW);
    }
    digit2 = j / 10;
    digit1 = j % 10;


        for ( int k = 0; k < 35; k++)// For loop to control the digit control to print 00-99
    {
digitalWrite(47, HIGH);
digitalWrite(48, LOW);
      dis2(digit2);
delay(10);




digitalWrite(48, HIGH);
digitalWrite(47, LOW);
      dis2(digit1);
delay(15);
    }
  }
}


 else if(IR5>60 && IR6>60)
   {


digitalWrite(G1,LOW);
digitalWrite(R1,HIGH);
digitalWrite(Y1,LOW);
delay(20);

digitalWrite(R2,HIGH);
digitalWrite(Y2,LOW);
digitalWrite(G2,LOW);
delay(20);
digitalWrite(R3,LOW);
digitalWrite(Y3,LOW);
digitalWrite(G3,HIGH);
delay(20);
digitalWrite(R4,HIGH);
digitalWrite(Y4,LOW);
digitalWrite(G4,LOW);
delay(20);


     for (int j = 30; j>=0; j--)// for lopp to pass value from 00-99
  {
    if(j==10)
    {
digitalWrite(Y4,HIGH);
digitalWrite(R4, LOW);
    }
    digit2 = j / 10;
    digit1 = j % 10;


        for ( int k = 0; k < 35; k++)// For loop to control the digit control to print 00-99
    {
digitalWrite(47, HIGH);
digitalWrite(48, LOW);
      dis2(digit2);
delay(10);




digitalWrite(48, HIGH);
digitalWrite(47, LOW);
      dis2(digit1);
delay(15);
    }
  }
}     


int IR7=analogRead(A4);
int IR8=analogRead(A5);

if(IR7<=60 && IR8<=60)
   {


digitalWrite(G1,LOW);
digitalWrite(R1,HIGH);
digitalWrite(Y1,LOW);
delay(20);

digitalWrite(R2,HIGH);
digitalWrite(Y2,LOW);
digitalWrite(G2,LOW);
delay(20);
digitalWrite(R3,HIGH);
digitalWrite(Y3,LOW);
digitalWrite(G3,LOW);
delay(20);
digitalWrite(R4,LOW);
digitalWrite(Y4,LOW);
digitalWrite(G4,HIGH);
delay(20);

  for (int j = 90; j>=0; j--)// for lopp to pass value from 00-99
  {
    if(j==10)
    {
digitalWrite(Y1,HIGH);
digitalWrite(R1, LOW);
    }
    digit2 = j / 10;
    digit1 = j % 10;


        for ( int k = 0; k < 35; k++)// For loop to control the digit control to print 00-99
    {
digitalWrite(A10, HIGH);
digitalWrite(A11, LOW);
      dis3(digit2);
delay(10);




digitalWrite(A11, HIGH);
digitalWrite(A10, LOW);
      dis3(digit1);
delay(15);
    }
  }
}     


 else if(IR7<=60 && IR8>60)
   {


digitalWrite(G1,LOW);
digitalWrite(R1,HIGH);
digitalWrite(Y1,LOW);
delay(20);

digitalWrite(R2,HIGH);
digitalWrite(Y2,LOW);
digitalWrite(G2,LOW);
delay(20);
digitalWrite(R3,HIGH);
digitalWrite(Y3,LOW);
digitalWrite(G3,LOW);
delay(20);
digitalWrite(R4,LOW);
digitalWrite(Y4,LOW);
digitalWrite(G4,HIGH);
delay(20);

  for (int j = 60; j>=0; j--)// for lopp to pass value from 00-99
  {
    if(j==10)
    {
digitalWrite(Y1,HIGH);
digitalWrite(R1, LOW);
    }
    digit2 = j / 10;
    digit1 = j % 10;


        for ( int k = 0; k < 35; k++)// For loop to control the digit control to print 00-99
    {
digitalWrite(A10, HIGH);
digitalWrite(A11, LOW);
      dis3(digit2);
delay(10);




digitalWrite(A11, HIGH);
digitalWrite(A10, LOW);
      dis3(digit1);
delay(15);
    }
  }
}     


  else if(IR7>60 && IR8>60)
   {


digitalWrite(G1,LOW);
digitalWrite(R1,HIGH);
digitalWrite(Y1,LOW);
delay(20);

digitalWrite(R2,HIGH);
digitalWrite(Y2,LOW);
digitalWrite(G2,LOW);
delay(20);
digitalWrite(R3,HIGH);
digitalWrite(Y3,LOW);
digitalWrite(G3,LOW);
delay(20);
digitalWrite(R4,LOW);
digitalWrite(Y4,LOW);
digitalWrite(G4,HIGH);
delay(20);

  for (int j = 30; j>=0; j--)// for lopp to pass value from 00-99
  {
    if(j==10)
    {
digitalWrite(Y1,HIGH);
digitalWrite(R1, LOW);
    }
    digit2 = j / 10;
    digit1 = j % 10;


        for ( int k = 0; k < 35; k++)// For loop to control the digit control to print 00-99
    {
digitalWrite(A10, HIGH);
digitalWrite(A11, LOW);
      dis3(digit2);
delay(10);




digitalWrite(A11, HIGH);
digitalWrite(A10, LOW);
      dis3(digit1);
delay(15);
    }
  }
}

}



void ambulance()
{

run();

}

void run()
{
int  s=analogRead(A13);

  while(s<=500)
    {

digitalWrite(G1,HIGH);
digitalWrite(R1,LOW);
digitalWrite(Y1,LOW);
delay(20);

digitalWrite(R2,HIGH);
digitalWrite(Y2,LOW);
digitalWrite(G2,LOW);
delay(20);
digitalWrite(R3,HIGH);
digitalWrite(Y3,LOW);
digitalWrite(G3,LOW);
delay(20);
digitalWrite(R4,HIGH);
digitalWrite(Y4,LOW);
digitalWrite(G4,LOW);
delay(20);
 s=analogRead(A13);
delay(20);

    }


digitalWrite(G1,LOW);
digitalWrite(R1,HIGH);
digitalWrite(Y1,LOW);
delay(20);

digitalWrite(G2,HIGH);
digitalWrite(R2,LOW);
digitalWrite(Y2,LOW);
delay(20);




}

Credits

yashvanthnagnarduino
3 projects • 0 followers
Contact
likithasb
2 projects • 1 follower
Contact
vinuthav
0 projects • 0 followers
Contact
bharatangadi
0 projects • 0 followers
Contact

Comments

Please log in or sign up to comment.