라인 트레이서 2개를 나란히 연결해서 검정색 라인을 따라다니도록 하는 예제를 만들어보겠습니다.

나중에 자율주행 자동차에도 추가해서 실제로 주행하는 것도 확인할 예정입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
int SENSOR_R = 3// 우측 적외선 센서 디지털 3번핀
int SENSOR_L = 4// 우측 적외선 센서 디지털 4번핀
 
void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial.println(F("setup() START"));
  
  pinMode(SENSOR_R, INPUT); // 3핀. 모드를 input으로
  pinMode(SENSOR_L, INPUT); // 4핀. 모드를 input으로
}
 
void loop() {
  // put your main code here, to run repeatedly:
  delay(100);
 
  int valR = digitalRead(SENSOR_R); // 물체가 감지되면 LOW, 감지되지 않으면 HIGH(검정색 라인은 감지되지 않으니 1.)
  int valL = digitalRead(SENSOR_L);
  Serial.print(F("SENSOR_R= ")); Serial.print(valR); Serial.print(F(" | SENSOR_L= ")); Serial.println(valL);
 
  // 좌우 센서 둘 다 검정색 라인이 감지되지 않으면(물체가 감지되면, 즉 LOW면) 직진으로 주행.
  // 여기서 어느 한 쪽에서 HIGH가 들어오면 그 쪽으로 방향을 틀어주어야 센서들 가운데로 검정색 라인이 오게 됨.
  Serial.println(valR==1?F("Move Right"):F("-"));
  Serial.println(valL==1?F("Move Left"):F("-"));
  Serial.println();
 
  delay(500);
}
cs


위의 예제를 아두이노 나노에 업로드 후, Part 1의 테스트용 라인이 그려진 용지에서 테스트해 봅니다.

회로도와 실제 모습은 다음과 같습니다.


나무젓가락에 나사를 이용해서 간단히 고정해봤습니다. 허접하지만 테스트하는데에는 전혀 지장이 없습니다.


1) 라인이 없는 흰 종이 위에서의 결과입니다.

> 검정색 라인과 만나지 않았으니 그냥 직진하면 됩니다.


2) 오른쪽 센서가 검정색 라인 위에 왔을 때의 결과입니다.

> 오른쪽 센서가 검정색 라인과 만났으니 오른쪽으로 방향을 틀어줘야 검정색 라인이 센서들 가운데로 오게 됩니다.


3) 왼쪽 센서가 검정색 라인 위에 왔을 때

> 오른쪽 센서 때와 마찬가지로 왼쪽으로 방향을 틀어줘야 합니다.


그 외에 둘 다 검정색 라인과 만나면 멈추게 한다던지 등의 요소를 추가해줘도 좋겠네요.


테스트는 잘 되었으니 추후 자율주행 자동차를 완성하게 되면 거기에 추가해서 잘 굴러가는지 확인해 봐야 겠습니다.

+ Recent posts