KRITSADA icon

SumoRobot-Fast-Motors-Code

KRITSADA | PRO | 02/24/21 11:48:03 PM UTC | 0 ⭐ | 1977 👁️ | Never ⏰ | []
Arduino |

2.97 KB

|

None

|

0 👍

/

0 👎

#define sensorPin 4//3     // the number of the sensor pin
int sensorState = 0;         // variable for reading the sensor status
 
#define echoPin 11//7 // Echo Pin
#define trigPin 12//8 // Trigger Pin
int maximumRange = 20; // Maximum range needed
long duration, distance; // Duration used to calculate distance
 
 
#define LEDPin 13 // Onboard LED
 
int IN1 = 5;
int IN2 = 6;
int IN3 = 7;
int IN4 = 8;
int ENA = 9;
int ENB = 10;
 
void setup() {
  //Serial.begin (9600);
  delay(5000);
  for (int i = 5; i < 11; i ++)
  {
    pinMode(i, OUTPUT);
  }
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(sensorPin, INPUT);
  pinMode(LEDPin, OUTPUT); // Use LED indicator (if required)
 
  front();
  delay(300);
}
 
void loop() {
 
  sensorState = digitalRead(sensorPin);
  // if the sensorState is HIGH:
  if (sensorState == HIGH) {
    digitalWrite(LEDPin, HIGH);
    fight();
  }
  else {
    digitalWrite(LEDPin, LOW);
    back();
    delay(200);
    left();
    delay(500);
    //stopM();
    //delay(250);
  }
  /*
    if (black() == 0) {
    //digitalWrite(LEDPin, HIGH);
    right();
    delay(250);
    front();
    delay(250);
    fight();
    } else if (black() == 1) {
    digitalWrite(LEDPin, LOW);
    back();
    delay(250);
    left();
    delay(250);
    stopM();
    delay(250);
    }*/
 
}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
void stopM() {
  analogWrite(ENA, 0);
  analogWrite(ENB, 0);
}
 
void front() { //left
  digitalWrite(IN1, 0);
  digitalWrite(IN2, 1);
  digitalWrite(IN3, 0);
  digitalWrite(IN4, 1);
  analogWrite(ENA, 255);
  analogWrite(ENB, 255);
}
 
void back() { //right
  digitalWrite(IN1, 1);
  digitalWrite(IN2, 0);
  digitalWrite(IN3, 1);
  digitalWrite(IN4, 0);
  analogWrite(ENA, 255);
  analogWrite(ENB, 255);
}
 
void right() { //back
  digitalWrite(IN1, 1);
  digitalWrite(IN2, 0);
  digitalWrite(IN3, 0);
  digitalWrite(IN4, 1);
  analogWrite(ENA, 150);
  analogWrite(ENB, 150);
}
 
void left() { //front
  digitalWrite(IN1, 0);
  digitalWrite(IN2, 1);
  digitalWrite(IN3, 1);
  digitalWrite(IN4, 0);
  analogWrite(ENA, 150);
  analogWrite(ENB, 150);
}
 
 
 
 
 
 
void fight() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
 
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
 
  //Calculate the distance (in cm) based on the speed of sound.
  distance = duration / 58.2;
 
  if (distance <= maximumRange) {
    /* Send a negative number to computer and Turn LED ON
      to indicate "out of range" */
    //Serial.println(distance);
    digitalWrite(LEDPin, HIGH);
    front();
    delay(200);
  }
  else {
    /* Send the distance to the computer using Serial protocol, and
      turn LED OFF to indicate successful reading. */
    //Serial.println(distance);
    digitalWrite(LEDPin, LOW);
    left();
    delay(500);
  }
  //Delay 50ms before next reading.
  //delay(5);
}

Comments