가까이 가면 도망가는 자동차 코드

모터 테스트

#include <SoftwareSerial.h>
#include <AFMotor.h>

AF_DCMotor motor_1(1);              

void setup() {
  motor_1.setSpeed(200);              
  motor_1.run(RELEASE);
}
void loop() {
 motor_1.run(FORWARD); 
 delay(2000);
 
 motor_1.run(RELEASE);
 delay(1000);

 motor_1.run(BACKWARD);
 delay(2000);
 
 motor_1.run(RELEASE);
 delay(1000);
}

초음파센서 테스트

int trigPin = A0;
int echoPin = A1;

void setup() {
  Serial.begin(9600);                 // 시리얼 속도 설정
  pinMode(echoPin, INPUT);            // echoPin 입력
  pinMode(trigPin, OUTPUT);           // trigPin 출력
}

void loop() {
  long duration, distance;
  digitalWrite(trigPin, HIGH);       // trigPin에서 초음파 발생(echoPin도 HIGH)
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH); // echoPin 이 HIGH를 유지한 시간을 저장 한다.
  distance = ((float)(340 * duration) / 10000) / 2; 
  Serial.print("distance:");         // 물체와 초음파 센서간 거리를 표시
  Serial.print(distance);
  Serial.println("cm");
  delay(500);
}

모터 정회전 역회전 테스트

#include <SoftwareSerial.h>
#include <AFMotor.h>

AF_DCMotor motor_L(1);              
AF_DCMotor motor_R(4); 

void setup() {
  motor_L.setSpeed(175);              
  motor_L.run(RELEASE);
  motor_R.setSpeed(200);                 
  motor_R.run(RELEASE);
}

void loop() {
 motor_L.run(FORWARD); 
 motor_R.run(FORWARD); 
 delay(2000);
 motor_L.run(RELEASE);
 motor_R.run(RELEASE);
 delay(1000);
 motor_L.run(BACKWARD);
 motor_R.run(BACKWARD);
 delay(2000);
 motor_L.run(RELEASE); 
 motor_R.run(RELEASE); 
 delay(1000);
}

초음파센서 결합한 최종 코드

#include <SoftwareSerial.h>
#include <AFMotor.h>
AF_DCMotor motor_L(1);              
AF_DCMotor motor_R(4); 
int trigPin = A1;
int echoPin = A0;
void setup() {
  Serial.begin(9600);                 // 시리얼 속도 설정
  pinMode(echoPin, INPUT);            // echoPin 입력
  pinMode(trigPin, OUTPUT);           // trigPin 출력
  motor_L.setSpeed(150);              
  motor_L.run(RELEASE);
  motor_R.setSpeed(175);                 
  motor_R.run(RELEASE);
}
void loop() {
  long duration, distance;
  digitalWrite(trigPin, HIGH);       // trigPin에서 초음파 발생(echoPin도 HIGH)
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH); // echoPin 이 HIGH를 유지한 시간을 저장 한다.
  distance = ((float)(340 * duration) / 10000) / 2; 
  Serial.print("distance:");         // 물체와 초음파 센서간 거리를 표시
  Serial.print(distance);
  Serial.println("cm");
  
  if (distance < 15 )
  {
    motor_L.run(BACKWARD);
    motor_R.run(BACKWARD);
    delay(1000);
    // motor_L.run(RELEASE);
    // motor_R.run(RELEASE);
  }
  motor_L.run(RELEASE);
  motor_R.run(RELEASE);
}