Density Based Traffic control system
Density Based Traffic control system with Priority to Emergency Vehicles using Arduino Mega 2560
Components and supplies
Jumper wires (generic)
9V battery (generic)
5 mm LED: Red
Electrolytic Capacitor, 0.1 µF
Arduino Mega 2560
Female/Female Jumper Wires
Ceramic Disc Capacitor, 0.1 µF
5 mm LED: Green
Thermopile IR Sensor, TS105-10L5.5mm
Linear Regulator (7805)
Circular Connector Cable Seal, Heat Shrinkable Sealing Boot
Resistor 220 ohm
Antenna, RFID
5 mm LED: Yellow
Male/Female Jumper Wires
7 Segment LED Display, Red
Resistor 1M ohm
Through Hole Resistor, 47 kohm
9V Battery Clip
Tools and machines
Wire Stripper & Cutter, 18-10 AWG / 0.75-4mm² Capacity Wires
Soldering iron (generic)
Solder Flux, Soldering
Solder Wire, Lead Free
Apps and platforms
Arduino IDE
Project description
Code
Source code
c_cpp
use Arduino ide software
1#define R1 13 2#define Y1 12 3#define G1 11 4#define R2 10 5#define Y2 9 6#define G2 8 7#define R3 7 8#define Y3 6 9#define G3 5 10#define R4 4 11#define Y4 3 12#define G4 2 13 14 15 16 17 18 19 20 //Prepare binary array for all 7 segment to turn on 7 segment at position of a,b,c,d,e,f,g 21int digit[10] = {0b0111111, 0b0000110, 0b1011011, 0b1001111, 0b1100110, 0b1101101, 0b1111101, 0b0000111, 0b1111111, 0b1101111}; 22 23int digit1, digit2; // initialize individual digit to controll each segment 24 25 26void dis(int num) 27{ 28 for (int i = 22; i< 29; i++) 29 { 30digitalWrite(i, bitRead(digit[num], i - 22)); 31 } 32} 33 34void dis2(int num) 35{ 36 for (int i = 40; i< 47; i++) 37 { 38digitalWrite(i, bitRead(digit[num], i - 40)); 39 } 40} 41 42void dis3(int num) 43{ 44 for (int i = 49; i< 54; i++) 45 { 46digitalWrite(i, bitRead(digit[num], i - 49)); 47 } 48 int i=54; 49digitalWrite(A8,bitRead(digit[num],i-49)); 50i++; 51digitalWrite(A9,bitRead(digit[num],i-49)); 52} 53 54 55void dis1(int num) 56{ 57 for (int i = 31; i< 38; i++) 58 { 59digitalWrite(i, bitRead(digit[num], i - 31)); 60 } 61} 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76void setup() 77{ 78 79pinMode(R1,OUTPUT); 80pinMode(Y1,OUTPUT); 81pinMode(G1,OUTPUT); 82 83pinMode(R2,OUTPUT); 84pinMode(Y2,OUTPUT); 85pinMode(G2,OUTPUT); 86 87pinMode(R3,OUTPUT); 88pinMode(Y3,OUTPUT); 89pinMode(G3,OUTPUT); 90 91pinMode(R4,OUTPUT); 92pinMode(Y4,OUTPUT); 93pinMode(G4,OUTPUT); 94 95 96pinMode(A0,INPUT); 97pinMode(A1,INPUT); 98pinMode(A2,INPUT); 99pinMode(A3,INPUT); 100pinMode(A4,INPUT); 101pinMode(A5,INPUT); 102pinMode(A6,INPUT); 103pinMode(A7,INPUT); 104 105 106 107 108 for (int i = 22; i< 29; i++) 109 { 110pinMode(i, OUTPUT); // declare 0-9 th pin as output 111 } 112pinMode(29, OUTPUT); //declare 7 seg Digit1 pin as output 113pinMode(30, OUTPUT);//declare 7 seg Digit2 pin as output 114 115 for (int i = 40; i< 47; i++) 116 { 117pinMode(i, OUTPUT); // declare 0-9 th pin as output 118 } 119pinMode(48, OUTPUT); //declare 7 seg Digit1 pin as output 120pinMode(47, OUTPUT);//declare 7 seg Digit2 pin as output 121 122 for (int i = 49; i< 54; i++) 123 { 124pinMode(i, OUTPUT); // declare 0-9 th pin as output 125 } 126pinMode(A8, OUTPUT); 127pinMode(A9, OUTPUT); 128pinMode(A10, OUTPUT); 129pinMode(A11, OUTPUT); 130 131 for (int i = 31; i< 38; i++) 132 { 133pinMode(i, OUTPUT); // declare 0-9 th pin as output 134 } 135pinMode(39, OUTPUT); //declare 7 seg Digit1 pin as output 136pinMode(38, OUTPUT);//declare 7 seg Digit2 pin as output 137 138pinMode(19,INPUT_PULLUP); 139attachInterrupt(digitalPinToInterrupt(19),ambulance,LOW); 140 141 142 143 144 145 146 147} 148void loop() { 149 int IR1=analogRead(A6); 150 int IR2=analogRead(A7); 151if(IR1<=60 && IR2<=60) 152 { 153 154 155digitalWrite(G1,HIGH); 156digitalWrite(R1,LOW); 157digitalWrite(Y1,LOW); 158delay(20); 159 160digitalWrite(R2,HIGH); 161digitalWrite(Y2,LOW); 162digitalWrite(G2,LOW); 163delay(20); 164digitalWrite(R3,HIGH); 165digitalWrite(Y3,LOW); 166digitalWrite(G3,LOW); 167delay(20); 168digitalWrite(R4,HIGH); 169digitalWrite(Y4,LOW); 170digitalWrite(G4,LOW); 171delay(20); 172 173 174 for (int j = 90; j>=0; j--)// for lopp to pass value from 00-99 175 { 176 if(j==10) 177 { 178digitalWrite(Y2,HIGH); 179digitalWrite(R2, LOW); 180 } 181 digit2 = j / 10; 182 digit1 = j % 10; 183 for ( int k = 0; k < 35; k++)// For loop to control the digit control to print 00-99 184 { 185digitalWrite(30, HIGH); 186digitalWrite(29, LOW); 187 dis(digit2); 188delay(10); 189 190 191 192 193digitalWrite(29, HIGH); 194digitalWrite(30, LOW); 195 dis(digit1); 196delay(15); 197 } 198 } 199} 200 201else if (IR1<=60 && IR2>60) 202 { 203 204 205digitalWrite(G1,HIGH); 206digitalWrite(R1,LOW); 207digitalWrite(Y1,LOW); 208delay(20); 209 210digitalWrite(R2,HIGH); 211digitalWrite(Y2,LOW); 212digitalWrite(G2,LOW); 213delay(20); 214digitalWrite(R3,HIGH); 215digitalWrite(Y3,LOW); 216digitalWrite(G3,LOW); 217delay(20); 218digitalWrite(R4,HIGH); 219digitalWrite(Y4,LOW); 220digitalWrite(G4,LOW); 221delay(20); 222 223 224 225 226 for (int j = 60; j>=0; j--)// for lopp to pass value from 00-99 227 { 228 if(j==10) 229 { 230digitalWrite(Y2,HIGH); 231digitalWrite(R2, LOW); 232 } 233 digit2 = j / 10; 234 digit1 = j % 10; 235 236 237 for ( int k = 0; k < 35; k++)// For loop to control the digit control to print 00-99 238 { 239digitalWrite(30, HIGH); 240digitalWrite(29, LOW); 241 dis(digit2); 242delay(10); 243 244 245 246 247digitalWrite(29, HIGH); 248digitalWrite(30, LOW); 249 dis(digit1); 250delay(15); 251 } 252 } 253} 254 255 256 else if (IR1>60 && IR2>60) 257 { 258 259 260digitalWrite(G1,HIGH); 261digitalWrite(R1,LOW); 262digitalWrite(Y1,LOW); 263delay(20); 264 265digitalWrite(R2,HIGH); 266digitalWrite(Y2,LOW); 267digitalWrite(G2,LOW); 268delay(20); 269digitalWrite(R3,HIGH); 270digitalWrite(Y3,LOW); 271digitalWrite(G3,LOW); 272delay(20); 273digitalWrite(R4,HIGH); 274digitalWrite(Y4,LOW); 275digitalWrite(G4,LOW); 276delay(20); 277 278 279 280 281 for (int j = 30; j>=0; j--)// for lopp to pass value from 00-99 282 { 283 if(j==10) 284 { 285digitalWrite(Y2,HIGH); 286digitalWrite(R2, LOW); 287 } 288 digit2 = j / 10; 289 digit1 = j % 10; 290 291 292 for ( int k = 0; k < 35; k++)// For loop to control the digit control to print 00-99 293 { 294digitalWrite(30, HIGH); 295digitalWrite(29, LOW); 296 dis(digit2); 297delay(10); 298 299 300 301 302digitalWrite(29, HIGH); 303digitalWrite(30, LOW); 304 dis(digit1); 305delay(15); 306 } 307 } 308} 309 310int IR3=analogRead(A0); 311int IR4=analogRead(A1); 312 313if(IR3<=60 && IR4<=60) 314 { 315 316 317digitalWrite(G1,LOW); 318digitalWrite(R1,HIGH); 319digitalWrite(Y1,LOW); 320delay(20); 321 322digitalWrite(R2,LOW); 323digitalWrite(Y2,LOW); 324digitalWrite(G2,HIGH); 325delay(20); 326digitalWrite(R3,HIGH); 327digitalWrite(Y3,LOW); 328digitalWrite(G3,LOW); 329delay(20); 330digitalWrite(R4,HIGH); 331digitalWrite(Y4,LOW); 332digitalWrite(G4,LOW); 333delay(20); 334 335 for (int j = 90; j>=0; j--)// for lopp to pass value from 00-99 336 { 337 if(j==10) 338 { 339digitalWrite(Y3,HIGH); 340digitalWrite(R3, LOW); 341 } 342 digit2 = j / 10; 343 digit1 = j % 10; 344 345 346 for ( int k = 0; k < 35; k++)// For loop to control the digit control to print 00-99 347 { 348digitalWrite(39, HIGH); 349digitalWrite(38, LOW); 350 dis1(digit2); 351delay(10); 352 353 354 355 356digitalWrite(38, HIGH); 357digitalWrite(39, LOW); 358 dis1(digit1); 359delay(15); 360 } 361 } 362} 363 364 365else if(IR3<=60 && IR4>60) 366 { 367 368 369digitalWrite(G1,LOW); 370digitalWrite(R1,HIGH); 371digitalWrite(Y1,LOW); 372delay(20); 373 374digitalWrite(R2,LOW); 375digitalWrite(Y2,LOW); 376digitalWrite(G2,HIGH); 377delay(20); 378digitalWrite(R3,HIGH); 379digitalWrite(Y3,LOW); 380digitalWrite(G3,LOW); 381delay(20); 382digitalWrite(R4,HIGH); 383digitalWrite(Y4,LOW); 384digitalWrite(G4,LOW); 385delay(20); 386 387 for (int j = 60; j>=0; j--)// for lopp to pass value from 00-99 388 { 389 if(j==10) 390 { 391digitalWrite(Y3,HIGH); 392digitalWrite(R3, LOW); 393 } 394 digit2 = j / 10; 395 digit1 = j % 10; 396 397 398 for ( int k = 0; k < 35; k++)// For loop to control the digit control to print 00-99 399 { 400digitalWrite(39, HIGH); 401digitalWrite(38, LOW); 402 dis1(digit2); 403delay(10); 404 405 406 407 408digitalWrite(38, HIGH); 409digitalWrite(39, LOW); 410 dis1(digit1); 411delay(15); 412 } 413 } 414} 415 416 417else if(IR3>60 && IR4>60) 418 { 419 420 421digitalWrite(G1,LOW); 422digitalWrite(R1,HIGH); 423digitalWrite(Y1,LOW); 424delay(20); 425 426digitalWrite(R2,LOW); 427digitalWrite(Y2,LOW); 428digitalWrite(G2,HIGH); 429delay(20); 430digitalWrite(R3,HIGH); 431digitalWrite(Y3,LOW); 432digitalWrite(G3,LOW); 433delay(20); 434digitalWrite(R4,HIGH); 435digitalWrite(Y4,LOW); 436digitalWrite(G4,LOW); 437delay(20); 438 439 for (int j = 30; j>=0; j--)// for lopp to pass value from 00-99 440 { 441 if(j==10) 442 { 443digitalWrite(Y3,HIGH); 444digitalWrite(R3, LOW); 445 } 446 digit2 = j / 10; 447 digit1 = j % 10; 448 449 450 for ( int k = 0; k < 35; k++)// For loop to control the digit control to print 00-99 451 { 452digitalWrite(39, HIGH); 453digitalWrite(38, LOW); 454 dis1(digit2); 455delay(10); 456 457 458 459 460digitalWrite(38, HIGH); 461digitalWrite(39, LOW); 462 dis1(digit1); 463delay(15); 464 } 465 } 466} 467 468 469 470int IR5=analogRead(A2); 471int IR6=analogRead(A3); 472 473 if (IR5<=60 && IR6<=60) 474 { 475 476 477digitalWrite(G1,LOW); 478digitalWrite(R1,HIGH); 479digitalWrite(Y1,LOW); 480delay(20); 481 482digitalWrite(R2,HIGH); 483digitalWrite(Y2,LOW); 484digitalWrite(G2,LOW); 485delay(20); 486digitalWrite(R3,LOW); 487digitalWrite(Y3,LOW); 488digitalWrite(G3,HIGH); 489delay(20); 490digitalWrite(R4,HIGH); 491digitalWrite(Y4,LOW); 492digitalWrite(G4,LOW); 493delay(20); 494 495 496 497 498 for (int j = 90; j>=0; j--)// for lopp to pass value from 00-99 499 { 500 if(j==10) 501 { 502digitalWrite(Y4,HIGH); 503digitalWrite(R4, LOW); 504 } 505 digit2 = j / 10; 506 digit1 = j % 10; 507 508 509 for ( int k = 0; k < 35; k++)// For loop to control the digit control to print 00-99 510 { 511digitalWrite(47, HIGH); 512digitalWrite(48, LOW); 513 dis2(digit2); 514delay(10); 515 516 517 518 519digitalWrite(48, HIGH); 520digitalWrite(47, LOW); 521 dis2(digit1); 522delay(15); 523 } 524 } 525} 526 527 528 else if (IR5<=60 && IR6>60) 529 { 530 531 532digitalWrite(G1,LOW); 533digitalWrite(R1,HIGH); 534digitalWrite(Y1,LOW); 535delay(20); 536 537digitalWrite(R2,HIGH); 538digitalWrite(Y2,LOW); 539digitalWrite(G2,LOW); 540delay(20); 541digitalWrite(R3,LOW); 542digitalWrite(Y3,LOW); 543digitalWrite(G3,HIGH); 544delay(20); 545digitalWrite(R4,HIGH); 546digitalWrite(Y4,LOW); 547digitalWrite(G4,LOW); 548delay(20); 549 550 551 for (int j = 60; j>=0; j--)// for lopp to pass value from 00-99 552 { 553 if(j==10) 554 { 555digitalWrite(Y4,HIGH); 556digitalWrite(R4, LOW); 557 } 558 digit2 = j / 10; 559 digit1 = j % 10; 560 561 562 for ( int k = 0; k < 35; k++)// For loop to control the digit control to print 00-99 563 { 564digitalWrite(47, HIGH); 565digitalWrite(48, LOW); 566 dis2(digit2); 567delay(10); 568 569 570 571 572digitalWrite(48, HIGH); 573digitalWrite(47, LOW); 574 dis2(digit1); 575delay(15); 576 } 577 } 578} 579 580 581 else if(IR5>60 && IR6>60) 582 { 583 584 585digitalWrite(G1,LOW); 586digitalWrite(R1,HIGH); 587digitalWrite(Y1,LOW); 588delay(20); 589 590digitalWrite(R2,HIGH); 591digitalWrite(Y2,LOW); 592digitalWrite(G2,LOW); 593delay(20); 594digitalWrite(R3,LOW); 595digitalWrite(Y3,LOW); 596digitalWrite(G3,HIGH); 597delay(20); 598digitalWrite(R4,HIGH); 599digitalWrite(Y4,LOW); 600digitalWrite(G4,LOW); 601delay(20); 602 603 604 for (int j = 30; j>=0; j--)// for lopp to pass value from 00-99 605 { 606 if(j==10) 607 { 608digitalWrite(Y4,HIGH); 609digitalWrite(R4, LOW); 610 } 611 digit2 = j / 10; 612 digit1 = j % 10; 613 614 615 for ( int k = 0; k < 35; k++)// For loop to control the digit control to print 00-99 616 { 617digitalWrite(47, HIGH); 618digitalWrite(48, LOW); 619 dis2(digit2); 620delay(10); 621 622 623 624 625digitalWrite(48, HIGH); 626digitalWrite(47, LOW); 627 dis2(digit1); 628delay(15); 629 } 630 } 631} 632 633 634int IR7=analogRead(A4); 635int IR8=analogRead(A5); 636 637if(IR7<=60 && IR8<=60) 638 { 639 640 641digitalWrite(G1,LOW); 642digitalWrite(R1,HIGH); 643digitalWrite(Y1,LOW); 644delay(20); 645 646digitalWrite(R2,HIGH); 647digitalWrite(Y2,LOW); 648digitalWrite(G2,LOW); 649delay(20); 650digitalWrite(R3,HIGH); 651digitalWrite(Y3,LOW); 652digitalWrite(G3,LOW); 653delay(20); 654digitalWrite(R4,LOW); 655digitalWrite(Y4,LOW); 656digitalWrite(G4,HIGH); 657delay(20); 658 659 for (int j = 90; j>=0; j--)// for lopp to pass value from 00-99 660 { 661 if(j==10) 662 { 663digitalWrite(Y1,HIGH); 664digitalWrite(R1, LOW); 665 } 666 digit2 = j / 10; 667 digit1 = j % 10; 668 669 670 for ( int k = 0; k < 35; k++)// For loop to control the digit control to print 00-99 671 { 672digitalWrite(A10, HIGH); 673digitalWrite(A11, LOW); 674 dis3(digit2); 675delay(10); 676 677 678 679 680digitalWrite(A11, HIGH); 681digitalWrite(A10, LOW); 682 dis3(digit1); 683delay(15); 684 } 685 } 686} 687 688 689 else if(IR7<=60 && IR8>60) 690 { 691 692 693digitalWrite(G1,LOW); 694digitalWrite(R1,HIGH); 695digitalWrite(Y1,LOW); 696delay(20); 697 698digitalWrite(R2,HIGH); 699digitalWrite(Y2,LOW); 700digitalWrite(G2,LOW); 701delay(20); 702digitalWrite(R3,HIGH); 703digitalWrite(Y3,LOW); 704digitalWrite(G3,LOW); 705delay(20); 706digitalWrite(R4,LOW); 707digitalWrite(Y4,LOW); 708digitalWrite(G4,HIGH); 709delay(20); 710 711 for (int j = 60; j>=0; j--)// for lopp to pass value from 00-99 712 { 713 if(j==10) 714 { 715digitalWrite(Y1,HIGH); 716digitalWrite(R1, LOW); 717 } 718 digit2 = j / 10; 719 digit1 = j % 10; 720 721 722 for ( int k = 0; k < 35; k++)// For loop to control the digit control to print 00-99 723 { 724digitalWrite(A10, HIGH); 725digitalWrite(A11, LOW); 726 dis3(digit2); 727delay(10); 728 729 730 731 732digitalWrite(A11, HIGH); 733digitalWrite(A10, LOW); 734 dis3(digit1); 735delay(15); 736 } 737 } 738} 739 740 741 else if(IR7>60 && IR8>60) 742 { 743 744 745digitalWrite(G1,LOW); 746digitalWrite(R1,HIGH); 747digitalWrite(Y1,LOW); 748delay(20); 749 750digitalWrite(R2,HIGH); 751digitalWrite(Y2,LOW); 752digitalWrite(G2,LOW); 753delay(20); 754digitalWrite(R3,HIGH); 755digitalWrite(Y3,LOW); 756digitalWrite(G3,LOW); 757delay(20); 758digitalWrite(R4,LOW); 759digitalWrite(Y4,LOW); 760digitalWrite(G4,HIGH); 761delay(20); 762 763 for (int j = 30; j>=0; j--)// for lopp to pass value from 00-99 764 { 765 if(j==10) 766 { 767digitalWrite(Y1,HIGH); 768digitalWrite(R1, LOW); 769 } 770 digit2 = j / 10; 771 digit1 = j % 10; 772 773 774 for ( int k = 0; k < 35; k++)// For loop to control the digit control to print 00-99 775 { 776digitalWrite(A10, HIGH); 777digitalWrite(A11, LOW); 778 dis3(digit2); 779delay(10); 780 781 782 783 784digitalWrite(A11, HIGH); 785digitalWrite(A10, LOW); 786 dis3(digit1); 787delay(15); 788 } 789 } 790} 791 792} 793 794 795 796void ambulance() 797{ 798 799run(); 800 801} 802 803void run() 804{ 805int s=analogRead(A13); 806 807 while(s<=500) 808 { 809 810digitalWrite(G1,HIGH); 811digitalWrite(R1,LOW); 812digitalWrite(Y1,LOW); 813delay(20); 814 815digitalWrite(R2,HIGH); 816digitalWrite(Y2,LOW); 817digitalWrite(G2,LOW); 818delay(20); 819digitalWrite(R3,HIGH); 820digitalWrite(Y3,LOW); 821digitalWrite(G3,LOW); 822delay(20); 823digitalWrite(R4,HIGH); 824digitalWrite(Y4,LOW); 825digitalWrite(G4,LOW); 826delay(20); 827 s=analogRead(A13); 828delay(20); 829 830 } 831 832 833digitalWrite(G1,LOW); 834digitalWrite(R1,HIGH); 835digitalWrite(Y1,LOW); 836delay(20); 837 838digitalWrite(G2,HIGH); 839digitalWrite(R2,LOW); 840digitalWrite(Y2,LOW); 841delay(20); 842 843 844 845 846} 847
Documentation
circuit using protues
preferably use proteus 8.12 version
circuit using protues
circuit using protues
preferably use proteus 8.12 version
circuit using protues
Comments
Only logged in users can leave comments