#include <SoftwareSerial.h>
int motor1Pin1 = 11; // pin 7 on L293D IC
int motor1Pin2 = 10; // pin 8 on L293D IC
int motor2Pin1 = 9; // pin 12 on L293D IC
int motor2Pin2 = 8; // pin 13 on L293D IC
int EnPinL = 2; // pin 12 on L293D IC
int EnPinR = 3; // pin 13 on L293D IC
int Sensor_1 = 0;
int Sensor_2 = 0;
int pirPin = 13;
int ledPir = 4;
SoftwareSerial mySerial(6, 7);
char mode = -1;
int timeflag = 0;
int starttime = 0;
void setup() {
// sets the pins as outputs:
Serial.begin(9600);
mySerial.begin(9600);
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(motor2Pin1, OUTPUT);
pinMode(motor2Pin2, OUTPUT);
pinMode(EnPinL, OUTPUT);
pinMode(EnPinR, OUTPUT);
pinMode(pirPin, INPUT);
pinMode(ledPir, OUTPUT);
digitalWrite(ledPir, LOW);
}
void motorback() {
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
}
void motorfront() {
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
}
void motorleft()
{
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
}
void motorright() {
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, LOW);
}
void motorstop() {
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, LOW);
}
void readsensor() {
}
char getChar() {
while (mySerial.available() == 0);
return ((char) mySerial.read());
}
int getSerial() {
if (mySerial.available()) {
return getChar();
}
return -1;
}
void loop() {
delay(100);
char cmd = getSerial();
//char cmd = getChar();
Serial.print(cmd);
if (cmd == 'M' || cmd == 'P' || cmd == 'Z') {
mode = cmd;
}
if (mode == 'M') {
//remote();
Serial.println("Remote|");
//remote();
}
if (mode == 'P') {
//patrol();
Serial.println("Patrol|");
delay(200);
patrol();
}
if (mode == 'Z') {
//siram();
Serial.println("Siram|");
//siram();
}
}
void patrol() {
if(timeflag == 0){
starttime = millis();
Serial.print(starttime);
timeflag = 1;
}
readsurface();
Serial.print(millis());
Serial.print("/n");
if(millis() >= (starttime + 10000)){
scanPIR();
timeflag = 0;
}
}
void scanPIR() {
motorstop();
delay(2000);
if (digitalRead(pirPin) == HIGH) {
Serial.println("Motion Detected");
digitalWrite(ledPir, HIGH);
delay(1000);
} else {
Serial.println("No Motion");
digitalWrite(ledPir, LOW);
}
}
void readsurface() {
Sensor_2 = analogRead(A0);
Sensor_1 = analogRead(A1);
if (Sensor_1 < 300 && Sensor_2 > 300) {
Serial.println("Moving Backward");
motorback();
delay(1000);
Serial.println("Right Turn");
motorright();
delay(1000);
} else if (Sensor_2 < 300 && Sensor_1 > 300) {
Serial.println("Moving Backward");
motorback();
delay(1000);
Serial.println("Left Turn");
motorleft();
delay(1000);
} else {
Serial.println("Moving Forward");
motorfront();
}
}
Comments