RC카를 dabble를사용하여 ...

프로필

아잉쟈기야
아잉쟈기야
대덕구 오정동
매너온도
37.1°C
아두이노 잘하시는 붐

RC카를 dabble를사용하여 만드려고 하는데

#include
#include

// 모터 제어 핀 정의
#define A_1A 6
#define A_1B 11
#define B_1A 3
#define B_1B 5

// 초음파 센서 핀 정의
#define trigPin 8
#define echoPin 9

SoftwareSerial Bluetooth(1, 2); // RX, TX

unsigned long previousMillis = 0; // 이전 시간 값을 저장하는 변수
const long interval = 100; // 초음파 센서를 검사할 시간 간격 (밀리초 단위)
const int stopDistance = 25; // 장애물을 감지할 거리 (cm 단위)

void setup() {
Bluetooth.begin(9600);

pinMode(A_1A, OUTPUT);
pinMode(A_1B, OUTPUT);
pinMode(B_1A, OUTPUT);
pinMode(B_1B, OUTPUT);
digitalWrite(A_1A, LOW);
digitalWrite(A_1B, LOW);
digitalWrite(B_1A, LOW);
digitalWrite(B_1B, LOW);

pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);

Serial.begin(9600); // 디버깅을 위한 시리얼 모니터 시작
}

void loop() {
// 현재 시간 값을 가져옵니다.
unsigned long currentMillis = millis();

// 일정 시간 간격이 지났는지 확인합니다.
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;

int distance = getDistanceCM();
Serial.println(distance); // 거리 값을 시리얼 모니터에 출력

// 장애물이 일정 거리 이내에 있을 경우 정지
if (distance < stopDistance) {
stop();
}
}

// 블루투스 명령을 우선적으로 처리합니다.
if (Bluetooth.available() > 0) {
char command = Bluetooth.read();
executeCommand(command);
}
}

int getDistanceCM() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

long duration = pulseIn(echoPin, HIGH);
int distance = duration * 0.034 / 2; // 시간(duration)을 거리(cm)로 변환

return distance;
}

void executeCommand(char command) {
switch (command) {
case 'F':
forward();
break;
case 'B':
back();
break;
case 'L':
left();
break;
case 'R':
right();
break;
case 'S':
stop();
break;
default:
// 알 수 없는 명령을 수신했을 때 실행할 코드
break;
}
}

void forward() {
digitalWrite(A_1A, HIGH);
digitalWrite(A_1B, LOW);
digitalWrite(B_1A, HIGH);
digitalWrite(B_1B, LOW);
}

void back() {
digitalWrite(A_1A, LOW);
digitalWrite(A_1B, HIGH);
digitalWrite(B_1A, LOW);
digitalWrite(B_1B, HIGH);
}

void left() {
digitalWrite(A_1A, HIGH);
digitalWrite(A_1B, LOW);
digitalWrite(B_1A, LOW);
digitalWrite(B_1B, HIGH);
}

void right() {
digitalWrite(A_1A, LOW);
digitalWrite(A_1B, HIGH);
digitalWrite(B_1A, HIGH);
digitalWrite(B_1B, LOW);
}

void stop() {
digitalWrite(A_1A, LOW);
digitalWrite(A_1B, LOW);
digitalWrite(B_1A, LOW);
digitalWrite(B_1B, LOW);
}
이거 뭐가 잘못된건지 아시나요?

∙ 조회 58

댓글 1

아잉쟈기야
mediteranean
대덕구 대화동

SoftwareSerial Bluetooth(1, 2);

위 파라미터값을 3, 4번으로 바꿔보심이?
아두이노 우노에서는 보통 디지털 핀번호 1,2번은 시리얼 통신에 사용되므로 잘 안씀.

info

댓글 작성자가 삭제한 댓글이예요.


지금 당근 앱을 다운로드하고
따뜻한 동네생활을 경험해보세요!