2024.03.19(am): 가까이가면 도망가는 자동차 만들기

이 자료는 로봇만들기 재능봉사단 활동에 사용되는 자료입니다.

부품구매 링크 : https://www.eduino.kr/product/detail.html?product_no=190

초음파센서와 2휠 RC카를 이용한 가까이 가면 도망가는 자동차를 만들어보겠습니다. 자동차를 조립하기 위한 부품은 아래와 같습니다.

바퀴를 아래와 같이 지지대와 함께 볼트와 너트로 조립해주세요.

모터를 다 조립했으면 바퀴까지 조립해주세요.

다음은 7mm 둥근머리 볼트와 서포터를 이용해서 아두이노 지지대를 조립합니다.

아래쪽에서 손가락으로 둥근머리볼트를 받친상태에서 조립해주면 편합니다.

다음은 아랫면에 서포터가 튀어나오도록 보조바퀴 지지대를 4개 조립합니다.

배터리 홀더를 아래부분 양쪽 나사홈을 통해 조립해줍니다.

윗면에서 아두이노의 아랫부분과 고정부분을 볼트로 고정시켜줍니다.

아두이노 위에 모터드라이버를 결합해줍니다.

미니 브레드보드를 윗면 맨 앞에 부착해주고 초음파센서를 아래와 같이 꽂아줍니다.

이제 조립이 완료되었고, 초음파센서와 모터 각각 제대로 작동하는지 테스트를 해봅시다.

초음파 센서와 관련된 내용은 아래 링크를 확인하세요.

초음파센서 테스트 코드입니다.

trig는 A1, echo는 A0에 연결해주세요.

int trigPin = A1;
int echoPin = A0;

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);
}

모터 테스트 코드입니다.

모터는 1번, 4번에 연결해주세요.

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

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

void setup() {
  motor_L.setSpeed(150);              
  motor_L.run(RELEASE);
  motor_R.setSpeed(150);                 
  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(3000);
 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);

}

Leave a Reply

Your email address will not be published. Required fields are marked *