Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Servo.h> //Servo motor library. This is standard library
- #include <NewPing.h> //Ultrasonic sensor function library. You must install this library
- //our L298N control pins
- const int LeftMotorForward = 3;//5
- const int LeftMotorBackward = 2;//4
- const int RightMotorForward = 7;//3
- const int RightMotorBackward = 4;//2
- int speedd = 180;
- #define ENA 9
- #define ENB 10
- //sensor pins
- #define trig_pin A3 //analog input 1
- #define echo_pin A2 //analog input 2
- #define maximum_distance 200
- boolean goesForward = false;
- int distance = 100;
- NewPing sonar(trig_pin, echo_pin, maximum_distance); //sensor function
- Servo servo_motor; //our servo name
- void setup() {
- pinMode(RightMotorForward, OUTPUT);
- pinMode(LeftMotorForward, OUTPUT);
- pinMode(LeftMotorBackward, OUTPUT);
- pinMode(RightMotorBackward, OUTPUT);
- pinMode(ENA, OUTPUT);
- pinMode(ENB, OUTPUT);
- analogWrite(ENA, speedd);
- analogWrite(ENB, speedd);
- servo_motor.attach(11); //our servo pin
- servo_motor.write(90);
- delay(2000);
- distance = readPing();
- delay(100);
- distance = readPing();
- delay(100);
- distance = readPing();
- delay(100);
- distance = readPing();
- delay(100);
- }
- /*
- void loop() {
- moveForward();
- delay(1000);
- moveBackward();
- delay(1000);
- turnLeft();
- delay(1000);
- turnRight();
- delay(1000);
- }
- */
- void loop() {
- analogWrite(ENA, speedd);
- analogWrite(ENB, speedd);
- int distanceRight = 0;
- int distanceLeft = 0;
- delay(50);
- if (distance <= 40) {
- moveStop();
- delay(300);
- moveBackward();
- delay(400);
- moveStop();
- delay(300);
- distanceRight = lookRight();
- delay(300);
- distanceLeft = lookLeft();
- delay(300);
- if (distance >= distanceLeft) {
- turnRight();
- moveStop();
- }
- else {
- turnLeft();
- moveStop();
- }
- }
- else {
- moveForward();
- }
- distance = readPing();
- }
- int lookRight() {
- servo_motor.write(10);
- delay(500);
- int distance = readPing();
- delay(100);
- servo_motor.write(90);
- return distance;
- }
- int lookLeft() {
- servo_motor.write(170);
- delay(500);
- int distance = readPing();
- delay(100);
- servo_motor.write(90);
- return distance;
- delay(100);
- }
- int readPing() {
- delay(70);
- int cm = sonar.ping_cm();
- if (cm == 0) {
- cm = 250;
- }
- return cm;
- }
- void moveStop() {
- digitalWrite(RightMotorForward, LOW);
- digitalWrite(LeftMotorForward, LOW);
- digitalWrite(RightMotorBackward, LOW);
- digitalWrite(LeftMotorBackward, LOW);
- }
- void moveForward() {
- if (!goesForward) {
- goesForward = true;
- digitalWrite(LeftMotorForward, HIGH);
- digitalWrite(RightMotorForward, HIGH);
- digitalWrite(LeftMotorBackward, LOW);
- digitalWrite(RightMotorBackward, LOW);
- }
- }
- void moveBackward() {
- goesForward = false;
- digitalWrite(LeftMotorBackward, HIGH);
- digitalWrite(RightMotorBackward, HIGH);
- digitalWrite(LeftMotorForward, LOW);
- digitalWrite(RightMotorForward, LOW);
- }
- void turnLeft() {
- digitalWrite(LeftMotorForward, HIGH);
- digitalWrite(RightMotorBackward, HIGH);
- digitalWrite(LeftMotorBackward, LOW);
- digitalWrite(RightMotorForward, LOW);
- delay(500);
- digitalWrite(LeftMotorForward, HIGH);
- digitalWrite(RightMotorForward, HIGH);
- digitalWrite(LeftMotorBackward, LOW);
- digitalWrite(RightMotorBackward, LOW);
- }
- void turnRight() {
- digitalWrite(LeftMotorBackward, HIGH);
- digitalWrite(RightMotorForward, HIGH);
- digitalWrite(LeftMotorForward, LOW);
- digitalWrite(RightMotorBackward, LOW);
- delay(500);
- digitalWrite(LeftMotorForward, HIGH);
- digitalWrite(RightMotorForward, HIGH);
- digitalWrite(LeftMotorBackward, LOW);
- digitalWrite(RightMotorBackward, LOW);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement