라인트레이서랑 반대로 검은선 안에서는 랜덤하게 움직이다가
검은선 밖으로는 못나가게끔 하고 싶습니다.
#include <SoftwareSerial.h> //시리얼 통신 라이브러리 호출
//모터 PIN 설정
#define LEFT_A1 4 //왼쪽 바퀴
#define LEFT_B1 5 //왼쪽 바퀴
#define RIGHT_A2 6 //오른쪽 바퀴
#define RIGHT_B2 7 //오른쪽 바퀴
void setup() {
Serial.begin(9600); //시리얼모니터
//모터 핀모드 설정
pinMode(LEFT_A1, OUTPUT);
pinMode(RIGHT_A2, OUTPUT);
pinMode(LEFT_B1, OUTPUT);
pinMode(RIGHT_B2, OUTPUT);
}
void loop() {
if (analogRead(A0) < 500 && analogRead(A1) < 500 && analogRead(A2) < 500) {
int rnd = random(0, 2);
if (rnd == 0) {
Serial.println("right");
right();
} else {
Serial.println("left");
left();
}
Serial.println("forward");
forward();
delay(300);
}
else if (analogRead(A0) > 500 && analogRead(A1) < 500 && analogRead(A2) < 500) {
Serial.println("right");
stop();
backward();
right();
}
else if (analogRead(A0) > 500 && analogRead(A1) > 500 && analogRead(A2) < 500) {
Serial.println("right");
stop();
backward();
right();
}
else if (analogRead(A0) < 500 && analogRead(A1) < 500 && analogRead(A2) > 500) {
Serial.println("left");
stop();
backward();
left();
}
else if (analogRead(A0) < 500 && analogRead(A1) > 500 && analogRead(A2) > 500) {
Serial.println("left");
stop();
backward();
left();
}
else if (analogRead(A0) < 500 && analogRead(A1) > 500 && analogRead(A2) < 500) {
Serial.println("dope");
stop();
backward();
}
else if (analogRead(A0) > 500 && analogRead(A1) > 500 && analogRead(A2) > 500) {
Serial.println("dope");
stop();
backward();
}
}
void forward() {
digitalWrite(LEFT_A1, HIGH);
digitalWrite(LEFT_B1, LOW);
digitalWrite(RIGHT_A2, HIGH);
digitalWrite(RIGHT_B2, LOW);
delay(300);
}
void backward() {
digitalWrite(LEFT_A1, LOW);
digitalWrite(LEFT_B1, HIGH);
digitalWrite(RIGHT_A2, LOW);
digitalWrite(RIGHT_B2, HIGH);
delay(600);
}
void left() {
digitalWrite(LEFT_A1, LOW);
digitalWrite(LEFT_B1, HIGH);
digitalWrite(RIGHT_A2, HIGH);
digitalWrite(RIGHT_B2, LOW);
delay(300);
}
void right() {
digitalWrite(LEFT_A1, HIGH);
digitalWrite(LEFT_B1, LOW);
digitalWrite(RIGHT_A2, LOW);
digitalWrite(RIGHT_B2, HIGH);
delay(300);
}
void stop() {
digitalWrite(LEFT_A1, LOW);
digitalWrite(LEFT_B1, LOW);
digitalWrite(RIGHT_A2, LOW);
digitalWrite(RIGHT_B2, LOW);
delay(300);
}
이렇게 짜보았는데 생각처럼 안되는거같습니다.
혹시 도움을 구할 수 있을까요?
적외선 센서를 사용하고있습니다.
|
다음글 |
아두이노 실현 가능성 조언 부탁드립니다
|
2016-12-11 |