본문 바로가기

유수봉 교수의 AI

유수봉 교수의 AI-7주차

# 앱 실행화면

 

 

 

# MyCar

 

 

 

사용된 코드

 

#include <SoftwareSerial.h>

const int TxPin = 2;                    // Bluetooth 전송핀(Tx)
const int RxPin = 3;                    // 블루투스 수신핀(rx)
SoftwareSerial BTSerial(TxPin, RxPin);  // RX, TX

const int TrigPin = 4;  // 초음파 센서 TrigPin(거리 측정용 신호 발생)
const int EchoPin = 5;  // 초음파 센서 EchoPin(반사된 신호 감지)

int read_distance(void) {
  long duration;
  int distance;
  digitalWrite(TrigPin, LOW);
  delayMicroseconds(5);
  // TrigPin을 10 마이크로초 동안 HIGH 로 설정하여 센서가 트리거된다.
  digitalWrite(TrigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(TrigPin, LOW);

  // pulseIn()는 trigPin 신호 발생 후, 반사된 신호, 즉, EchoPin 을 읽어서
  // 반사된 소리가 돌아온 시간, 즉, 지속 시간(펄스의 길이)을 마이크로초(1/1,000,000) 단위로 반환한다.
  duration = pulseIn(EchoPin, HIGH);
  // 거리 계산(소리는 초당 340m(34,000) 를 이동)
  // 즉, 34,000cm /1,000,000 = 0.034 는 마이크로 초에 이동 거리,
  // 거기에 시간을 곱하면 이것이 장애물과의 거리임.
  // 그런데 왕복이므로 2 로 나누어 준다.
  distance = duration * 0.034 / 2;
  return distance;
}

void setup() {
  Serial.begin(9600);
  BTSerial.begin(9600);

  Serial.println("START");

  pinMode(8, OUTPUT);  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT); pinMode(11, OUTPUT);

    digitalWrite(8, LOW); digitalWrite(9, LOW);
    digitalWrite(10, LOW); digitalWrite(11, LOW);


  pinMode(EchoPin, INPUT);
  pinMode(TrigPin, OUTPUT);
}

void loop() {
  char X;
  int distance;

  if (BTSerial.available()) {  // BT 로 부터 수신한 데이터 확인
    X = BTSerial.read();       // BT 로 부터 수신된 데이터를 X 에 저장
    Serial.print(X);           // 시리얼 모니터로 수신한 데이터 출력
  }
  // if (Serial.available()) {
  //   BTSerial.write(Serial.read());
  //   X = Serial.read();
  // }

  if (X == 'f') {
    distance = read_distance();
    //Serial.println(distance);
    if (distance > 10) {  // 장애물과의 거리가 10cm 이상이면 전진
      digitalWrite(8, LOW);
      digitalWrite(9, HIGH);
      digitalWrite(10, HIGH);
      digitalWrite(11, LOW);
    } else {  // 장애물과의 거리가 10cm 이상이 아니면 정지
      digitalWrite(8, LOW);
      digitalWrite(9, LOW);
      digitalWrite(10, LOW);
      digitalWrite(11, LOW);
    }
  }

  if (X == 'b') {  // 후진
    digitalWrite(8, HIGH);
    digitalWrite(9, LOW);
    digitalWrite(10, LOW);
    digitalWrite(11, HIGH);
  }

  if (X == 'l') {  // 좌회전
    digitalWrite(8, LOW);
    digitalWrite(9, LOW);
    digitalWrite(10, HIGH);
    digitalWrite(11, LOW);
  }
  if (X == 'r') {  // 우회전
    digitalWrite(8, LOW);
    digitalWrite(9, HIGH);
    digitalWrite(10, HIGH);
    digitalWrite(11, HIGH);
  }

  if (X == 's') {  // 정지
    digitalWrite(8, LOW);
    digitalWrite(9, LOW);
    digitalWrite(10, LOW);
    digitalWrite(11, LOW);
  }
}


 

 

# MyCar 작동영상

 

'유수봉 교수의 AI' 카테고리의 다른 글

유수봉 교수의 AI-9주차  (0) 2024.05.03
유수봉 교수의 AI-8주차  (0) 2024.04.26
유수봉 교수의 AI-6주차  (0) 2024.04.12
유수봉 교수의 AI-5주차  (0) 2024.04.12
유수봉 교수의 AI - 04 - 졸업작품(3)  (0) 2024.04.04