Thursday, April 4, 2019

7th weeks 1 days

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4);
 
const int tleft1 = 2;
const int eleft1 = 3;
const int tleft2 = 4;
const int eleft2 = 5;
const int tright1 = 6;
const int eright1 = 7;
const int tright2 = 8;
const int eright2 = 9;

int buz=10;
int m1=14;
int m2=15;
int m3=16;
int m4=17;

// defines variables
long durl1;
int disl1;
long durl2;
int disl2;
long durr1;
int disr1;
long durr2;
int disr2;
long duration;
int distance;

String pos="";
void setup() {
  lcd.init();                      // initialize the lcd
  lcd.init();
  // Print a message to the LCD.
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("    Smart ");
  lcd.setCursor(0,1);
  lcd.print("   Movable");
   lcd.setCursor(0,2);
  lcd.print(" Road Divider");
   lcd.setCursor(0,3);
  lcd.print(" Project");

pinMode(tleft1, OUTPUT); // Sets the trigPin as an Output
pinMode(eleft1, INPUT); // Sets the echoPin as an Input
pinMode(tleft2, OUTPUT); // Sets the trigPin as an Output
pinMode(eleft2, INPUT); // Sets the echoPin as an Input
pinMode(tright1, OUTPUT); // Sets the trigPin as an Output
pinMode(eright1, INPUT); // Sets the echoPin as an Input
pinMode(tright2, OUTPUT); // Sets the trigPin as an Output
pinMode(eright2, INPUT); // Sets the echoPin as an Input
pinMode(m1, OUTPUT);
pinMode(m2, OUTPUT);
pinMode(m3, OUTPUT);
pinMode(m4, OUTPUT);
pinMode(buz, OUTPUT);
digitalWrite(m1,HIGH);
digitalWrite(m2,HIGH);
digitalWrite(m3,HIGH);
digitalWrite(m4,HIGH);
delay(2000);
lcd.clear();
Serial.begin(9600); // Starts the serial communication
}
void loop() {
// Clears the trigPin
lcd.setCursor(0,0);
lcd.print("Traffic Density:");
int disl1=ultrasonic(tleft1,eleft1);
int disl2=ultrasonic(tleft2,eleft2);
int disr1=ultrasonic(tright1,eright1);
int disr2=ultrasonic(tright2,eright2);
lcd.setCursor(0,1);
lcd.print("L1"+String(disl1)+" || R1"+String(disr1));
lcd.setCursor(0,2);
lcd.print("L2"+String(disl2)+" || R2"+String(disr2));
Serial.print("Left Side 1:");
Serial.println(disl1);
Serial.print("Left Side 2:");
Serial.println(disl2);
Serial.print("Right Side 1:");
Serial.println(disr1);
Serial.print("Right Side 2:");
Serial.println(disr2);
if(disl1<10&&disl2<10)
{
  if(pos!="RIGHT")
    {
  Serial.println("Traffic detected on left side");
    digitalWrite(buz,HIGH);
    delay(300);
    digitalWrite(buz,LOW);
    lcd.setCursor(0,3);
    lcd.print("Waiting..");
  if(disr1>10&& disr2>10)
  {
   
    digitalWrite(buz,HIGH);
    delay(1000);
    digitalWrite(buz,LOW);
    Serial.println("Right Side is Free");
    Serial.println("Moving Right");
    lcd.setCursor(0,3);
    lcd.print("Moving Right");
    digitalWrite(m1,LOW);
    digitalWrite(m2,LOW);
    digitalWrite(m3,LOW);
    digitalWrite(m4,LOW);
   
    pos="RIGHT";
    delay(1000);
    }
  }
  else
  {
    Serial.println("Already in Right!!!");
  }
 
}
if(disr1<10&&disr2<10)
{
  if(pos!="LEFT")
    {
  Serial.println("Traffic detected on right side");
    digitalWrite(buz,HIGH);
    delay(300);
    digitalWrite(buz,LOW);
    lcd.setCursor(0,3);
    lcd.print("Waiting..");
  if(disl1>10&& disl2>10)
  {
   
    digitalWrite(buz,HIGH);
    lcd.setCursor(0,3);
    lcd.print("Waiting..");
  delay(1000);
  digitalWrite(buz,LOW);
    Serial.println("Left Side is Free");
    Serial.println("Moving Left");
    lcd.setCursor(0,3);
    lcd.print("Moving Left");
    digitalWrite(m1,HIGH);
    digitalWrite(m2,HIGH);
    digitalWrite(m3,HIGH);
    digitalWrite(m4,HIGH);
   
    pos="LEFT";
    delay(1000);
    }
    }
    else
  {
    Serial.println("Already in Left!!!");
  }
 
}
if(disr1<10&&disl2<10)
{
  if(pos!="LEFT TILT")
    {
  Serial.println("Traffic detected on right side");

    digitalWrite(buz,HIGH);
    delay(300);
    digitalWrite(buz,LOW);
    lcd.setCursor(0,3);
    lcd.print("Waiting..");
  if(disl1>10&& disr2>10)
  {
   
    digitalWrite(buz,HIGH);
  delay(1000);
  digitalWrite(buz,LOW);
    Serial.println("Left Side is Free");
    Serial.println("tilting Left");
    lcd.setCursor(0,3);
    lcd.print("Tilting Left");
    digitalWrite(m1,HIGH);
    digitalWrite(m2,HIGH);
    digitalWrite(m3,LOW);
    digitalWrite(m4,LOW);
    pos="LEFT TILT";
    delay(1000);
    }
    }
    else
  {
    Serial.println("Already in Left Tilted!!!");
  }
 
}
if(disl1<10&&disr2<10)
{
  if(pos!="RIGHT TILT")
    {
  Serial.println("Traffic detected on right side");
    digitalWrite(buz,HIGH);
    delay(300);
    digitalWrite(buz,LOW);
    lcd.setCursor(0,3);
    lcd.print("Waiting..");
  if(disr1>10&& disl2>10)
  {
   
    digitalWrite(buz,HIGH);
  delay(1000);
  digitalWrite(buz,LOW);
    Serial.println("Right Side is Free");
    Serial.println("Tilting Right");
    lcd.setCursor(0,3);
    lcd.print("Tilting Right");
    digitalWrite(m1,LOW);
    digitalWrite(m2,LOW);
    digitalWrite(m3,HIGH);
    digitalWrite(m4,HIGH);
pos="RIGHT TILT";
    delay(1000);
    }
    }
    else
  {
    Serial.println("Already tilted right!!!");
  }
 
}
lcd.setCursor(0,3);
lcd.print("           ");
lcd.setCursor(7,3);
lcd.print(pos);
delay(1000);
Serial.println(pos);
Serial.println("<=================>");
lcd.clear();
}

int ultrasonic(int trigPin,int echoPin)
{
  digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculating the distance
distance= duration*0.034/2;
// Prints the distance on the Serial Monitor
//Serial.print("Distance: ");

No comments:

Post a Comment