BASIC4MCU | 질문게시판 | 아두이노 라인트레이서 특정한 위치에서 잠깐 정지
페이지 정보
작성자 고고라네 작성일2023-11-16 13:59 조회543회 댓글4건본문
#include <AFMotor.h>
#include <SoftwareSerial.h>
#include <AFMotor.h>
AF_DCMotor motor_L(1); // 모터드라이버 L293D 1: M1에 연결, 4: M4에 연결
AF_DCMotor motor_R(4);
void setup() {
Serial.begin(9600); // PC와의 시리얼 통신속도
Serial.println("Eduino Smart Car Start!");
// turn on motor
motor_L.setSpeed(200); // 왼쪽 모터의 속도
motor_L.run(RELEASE);
motor_R.setSpeed(200); // 오른쪽 모터의 속도
motor_R.run(RELEASE);
}
void loop() {
int val1 = digitalRead(A0); // 라인센서1
int val2 = digitalRead(A5); // 라인센서2
if (val1 == 0 && val2 == 0) { // 직진
motor_L.run(FORWARD);
motor_R.run(FORWARD);
}
else if (val1 == 0 && val2 == 1) { // 우회전
motor_L.run(FORWARD);
motor_R.run(RELEASE);
}
else if (val1 == 1 && val2 == 0) { // 좌회전
motor_L.run(RELEASE);
motor_R.run(FORWARD);
}
else if (val1 == 1 && val2 == 1) { // 정지
motor_L.run(RELEASE);
motor_R.run(RELEASE);
}
}
라인트레이서 코딩입니다
센서 val1,2가
둘다 흰색일때(0,0)=전진
흰검일때(0.1)=우회전
검흰일때(1.0)=좌회전
검검일때(1.1)=정지입니다
여기서
검검일때 몇초간(ex=2초) 정지를 하였다가 다시 전진을 하고 싶은데 방법을 모르겠습니다
(기존 라인에서 수직 방향으로 십자가를 만들어서 그 구역에서 몇초간 정지하고 출발하고 싶습니다)
댓글 4
조회수 543master님의 댓글
master 작성일
else if (val1 == 1 && val2 == 1) { // 정지
motor_L.run(RELEASE); motor_R.run(RELEASE);
delay(10000); // 10초 정지 // <-------- 추가
}
고고라네님의 댓글
고고라네
십자에서 영원히 멈춰 있습니다 멈춘 후 출발이 안됩니다
master님의 댓글
master 작성일
else if (val1 == 1 && val2 == 1) { // 정지
motor_L.run(RELEASE); motor_R.run(RELEASE); delay(10000); // 10초 정지
motor_L.run(FORWARD); motor_R.run(FORWARD); delay(1000); // 1초 직진 (십자를 벗어날 만큼만)
motor_L.run(RELEASE); motor_R.run(RELEASE); // 정지 // 이 라인은 없어도 되고, 있어도 되고
}
고고라네님의 댓글
고고라네
감사합니다 해결된거 같습니다!!