Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define left 11
- #define leftC 9
- #define right 12
- #define rightC 10
- //motor one
- #define ENA 5
- #define IN1 4
- #define IN2 7
- //motor two
- #define ENB 6
- #define IN3 2
- #define IN4 3
- #define echoPin A0 // Echo Pin
- #define trigPin A1 // Trigger Pin
- int maximumRange = 20; // Maximum range to start attacking
- long duration, distance; // Variables to calculate distance
- int stopFlag = 0;
- int Speed = 50; // speed of this robot
- int buzzer = 8;
- bool leftV ;
- bool leftCV ;
- bool centerV ;
- bool rightV ;
- bool rightCV ;
- int Speed1 = A5;
- int Speed2 = A3;
- int Move = A4;
- int Stop = A2;
- int Speed1Sta ;
- int Speed2Sta ;
- int MoveSta ;
- int StopSta ;
- void setup()
- {
- Serial.begin(9600);
- pinMode(left, INPUT);
- pinMode(leftC, INPUT);
- pinMode(right, INPUT);
- pinMode(rightC, INPUT);
- pinMode(Speed1, INPUT);
- pinMode(Speed2, INPUT);
- pinMode(Move, INPUT);
- pinMode(Stop, INPUT);
- pinMode(ENA, OUTPUT);
- pinMode(IN1, OUTPUT);
- pinMode(IN2, OUTPUT);
- pinMode(IN3, OUTPUT);
- pinMode(IN4, OUTPUT);
- pinMode(ENB, OUTPUT);
- pinMode(trigPin, OUTPUT);
- pinMode(echoPin, INPUT);
- pinMode(buzzer, OUTPUT);
- }
- void loop() {
- Speed1Sta = digitalRead(Speed1);
- Speed2Sta = digitalRead(Speed2);
- MoveSta = digitalRead(Move);
- StopSta = digitalRead(Stop);
- Serial.print(Speed1Sta);
- Serial.print(" ");
- Serial.print(Speed2Sta);
- Serial.print(" ");
- Serial.print(MoveSta);
- Serial.print(" ");
- Serial.println(StopSta);
- leftV = digitalRead(left);
- leftCV = digitalRead(leftC);
- rightV = digitalRead(rightC);
- rightCV = digitalRead(right);
- /*Serial.print(leftV);
- Serial.print(" ");
- Serial.print(leftCV);
- Serial.print(" ");
- Serial.print(rightCV);
- Serial.print(" ");
- Serial.println(rightV);
- */
- // Triggering the Ultrasonic Wave :
- digitalWrite(trigPin, LOW);// |
- delayMicroseconds(2);// |
- digitalWrite(trigPin, HIGH);// |
- delayMicroseconds(10);// |
- digitalWrite(trigPin, LOW);// |
- //---------------------------------
- //Sensing Ultrasonic Wave on echo Pin and callculating the duration
- duration = pulseIn(echoPin, HIGH);
- //Calculate the distance (in cm) based on the speed of sound.
- distance = duration / 58.2;
- //Serial.println(distance);
- // If object in range of attack start Attacking:
- // Conrolling car direction based on Infra-Red Sensors:
- //Serial.println(rightV);
- if (distance <= maximumRange) {
- carStop();
- digitalWrite(buzzer, HIGH);
- }
- // If object is not in range of attack start Searching:
- else {
- if (MoveSta == 1 && Speed1Sta == 0 && Speed2Sta == 0) {
- Serial.println("MoveSta = 1");
- LineFollowing(Speed);
- }
- else if (MoveSta == 1 && Speed1Sta == 1 && Speed2Sta == 0) {
- Serial.println("MoveSta = 1 + Speed1Sta = 1");
- LineFollowing(Speed + 30);
- }
- else if (MoveSta == 1 && Speed1Sta == 0 && Speed2Sta == 1) {
- Serial.println("MoveSta = 1 + Speed2Sta = 1");
- LineFollowing(Speed + 40);
- }
- //if (MoveSta == 0 ) {
- // Serial.println("MoveSta = 0");
- // carStop();
- //}
- if (StopSta == 1) {
- Serial.println("StopSta = 1");
- carStop();
- delay(5000);
- LineFollowing(Speed);
- }
- digitalWrite(buzzer, LOW);
- }
- }
- void LineFollowing(int sp) {
- if (leftV == 0 && leftCV == 1 && rightCV == 1 && rightV == 0) {
- carforward(sp);
- Serial.println("forward");
- }
- else if (leftV == 1 && leftCV == 1 && rightCV == 1 && rightV == 1) {
- carforwardFast(sp);
- }
- else if (leftV == 1 && leftCV == 0 && rightCV == 0 && rightV == 0) {
- carturnright(sp);
- //
- delay(200);
- }
- else if (leftV == 1 && leftCV == 1 && rightCV == 0 && rightV == 0) {
- carturnright(sp);
- } else if (leftV == 1 && leftCV == 1 && rightCV == 1 && rightV == 0) {
- carturnright(sp);
- } else if (leftV == 0 && leftCV == 0 && rightCV == 0 && rightV == 0) {
- carturnright(sp);
- } else if (leftV == 0 && leftCV == 1 && rightCV == 1 && rightV == 1) {
- carturnleft(sp);
- }
- else if (leftV == 0 && leftCV == 0 && rightCV == 1 && rightV == 1) {
- carturnleft(sp);
- }
- else if (leftV == 0 && leftCV == 0 && rightCV == 0 && rightV == 1) {
- carturnleft(sp);
- // delay(200);
- }
- }
- void carforward(int j) {
- analogWrite(ENA, j);
- analogWrite(ENB, j);
- digitalWrite(IN1, HIGH);
- digitalWrite(IN2, LOW);
- digitalWrite(IN3, HIGH);
- digitalWrite(IN4, LOW);
- }
- void carturnleft(int j) {
- analogWrite(ENA, j + 40 );
- analogWrite(ENB, j + 40 );
- digitalWrite(IN1, LOW);
- digitalWrite(IN2, HIGH);
- digitalWrite(IN3, HIGH);
- digitalWrite(IN4, LOW);
- }
- void carturnright(int j) {
- analogWrite(ENA, j + 40);
- analogWrite(ENB, j + 40);
- digitalWrite(IN1, HIGH);
- digitalWrite(IN2, LOW);
- digitalWrite(IN3, LOW);
- digitalWrite(IN4, HIGH);
- }
- void carStop() {
- digitalWrite(IN1, LOW);
- digitalWrite(IN2, LOW);
- digitalWrite(IN3, LOW);
- digitalWrite(IN4, LOW);
- }
- void carforwardFast(int j) {
- analogWrite(ENA, j + 40);
- analogWrite(ENB, j + 40);
- digitalWrite(IN1, HIGH);
- digitalWrite(IN2, LOW);
- digitalWrite(IN3, HIGH);
- digitalWrite(IN4, LOW);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement