Sunteți pe pagina 1din 4

#include <LiquidCrystal.

h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12); //RS E D4 D5 D6 D7
#define m11 3 // MOTOR1
#define m12 4
#define m21 5 // MOTOR2
#define m22 6
const int trigPin = A4; // ULTRASONIC TRIG PIN
const int echoPin = A5; // ULTRASONIC ECHO PIN
#define sensor1 A4 // left sensor
#define sensor2 A5 // right sensor
#define sensor3 A6 // left sensor
#define sensor4 A7 // right sensor

char str[2],i;

void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
lcd.print("******KINU******");
lcd.setCursor(0, 1);
lcd.print("* PROG ** ROBO *");
delay(500);
pinMode(m11, OUTPUT);
pinMode(m12, OUTPUT);
pinMode(m21, OUTPUT);
pinMode(m22, OUTPUT);
}

void loop()
{
forward(); delay(2000);
backward(); delay(2000);
right(); delay(2000);
left(); delay(2000);
Stop(); delay(2000);
ultrasoniccode(); delay(2000);

while(Serial.available())
{
char ch=Serial.read();
str[i++]=ch;

if(str[i-1]=='F')
{
Serial.println("Forward");
forward();
i=0;
}

else if(str[i-1]=='L')
{
Serial.println("Left");
right();
i=0;
}

else if(str[i-1]=='R')
{
Serial.println("Right");
left();
i=0;
}

else if(str[i-1]=='B')
{
Serial.println("Backward");
backward();
i=0;
}

else if(str[i-1]=='S')
{
Serial.println("Stop");
Stop();
i=0;
}
delay(100);
}
}

void forward()
{
lcd.setCursor(0, 0);
lcd.print("ROBOT MOVING....");
lcd.setCursor(0, 1);
lcd.print("FORWARD.........");
delay(100);
digitalWrite(m11, HIGH);
digitalWrite(m12, LOW);
digitalWrite(m21, HIGH);
digitalWrite(m22, LOW);
delay(100);
}

void backward()
{
lcd.setCursor(0, 0);
lcd.print("ROBOT MOVING....");
lcd.setCursor(0, 1);
lcd.print("BACKWARD........");
delay(100);
digitalWrite(m11, LOW);
digitalWrite(m12, HIGH);
digitalWrite(m21, LOW);
digitalWrite(m22, HIGH);
delay(100);
}

void left()
{
lcd.setCursor(0, 0);
lcd.print("ROBOT MOVING....");
lcd.setCursor(0, 1);
lcd.print("LEFT............");
delay(100);
digitalWrite(m11, LOW);
digitalWrite(m12, LOW);
delay(100);
digitalWrite(m21, HIGH);
digitalWrite(m22, LOW);
}

void right()
{
lcd.setCursor(0, 0);
lcd.print("ROBOT MOVING....");
lcd.setCursor(0, 1);
lcd.print("RIGHT...........");
delay(100);
digitalWrite(m11, HIGH);
digitalWrite(m12, LOW);
delay(100);
digitalWrite(m21, LOW);
digitalWrite(m22, LOW);

void Stop()
{
digitalWrite(m11, LOW);
digitalWrite(m12, LOW);
digitalWrite(m21, LOW);
digitalWrite(m22, LOW);
lcd.setCursor(0, 0);
lcd.print("******KINU******");
lcd.setCursor(0, 1);
lcd.print("* PROG ** ROBO *");
}

void ultrasoniccode()
{
long duration, inches, cm, mm;
// The sensor is triggered by a HIGH pulse of 10 or more microseconds.
// Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
pinMode(trigPin, OUTPUT);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Read the signal from the sensor: a HIGH pulse whose
// duration is the time (in microseconds) from the sending
// of the ping to the reception of its echo off of an object.
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
// convert the time into a distance
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
mm = microsecondsTomm(duration);
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm, ");
Serial.print(mm);
Serial.print("mm");
Serial.println();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ULTRASONIC");
//Serial.println(mm);
lcd.setCursor(0, 1);
lcd.print(cm);
lcd.print(" cm");
delay(1000);
}

long microsecondsToInches(long microseconds)


{
return microseconds / 74 / 2;
}

long microsecondsToCentimeters(long microseconds)


{
return microseconds / 29 / 2;
}

long microsecondsTomm(long microseconds)


{
return microseconds / 2.9 / 2;
}

S-ar putea să vă placă și