스파크펀 L298로 만드는 가장 간단한 아두이노 라인 팔로잉 로봇
부품 및 소모품
| 부품 | 비고 | 수량 |
| 아두이노 우노 | | 1 |
| SparkFun 듀얼 H-브리지 모터 드라이버 L298 | | 1 |
| IR 센서 | | 2 |
| 점퍼 와이어 (일반) | | 1 |
필요한 도구 및 기계
- 글루건 (일반)
- 드라이버
- 라인 팔로잉 로봇 키트
앱 및 온라인 서비스
프로젝트 소개
라인 팔로워 로봇은 로봇 공학계의 "헬로 월드"입니다. 이 라인 팔로워는 매우 간단하고 만들기 쉬운 로봇입니다.
코드
아두이노 기반 라인 팔로워 로봇 (C/C++)
/*------- 입력 정의 -------*/
#define LS 2 // 왼쪽 센서
#define RS 5 // 오른쪽 센서
/*------- 출력 정의 -------*/
#define LM1 11 // 왼쪽 모터
#define LM2 10 // 왼쪽 모터
#define RM1 9 // 오른쪽 모터
#define RM2 6 // 오른쪽 모터
void setup() {
pinMode(LS, INPUT);
pinMode(RS, INPUT);
pinMode(LM1, OUTPUT);
pinMode(LM2, OUTPUT);
pinMode(RM1, OUTPUT);
pinMode(RM2, OUTPUT);
}
void loop() {
if ((digitalRead(LS) == LOW) && (digitalRead(RS) == LOW)) // 조건 1: 정지
MoveForward();
if ((digitalRead(LS) == HIGH) && (digitalRead(RS) == HIGH)) // 조건 2: 전진
Stop();
if ((digitalRead(LS) == LOW) && (digitalRead(RS) == HIGH)) // 오른쪽 센서 감지: 좌회전
TurnLeft();
if ((digitalRead(LS) == HIGH) && (digitalRead(RS) == LOW)) // 왼쪽 센서 감지: 우회전
TurnRight();
}
void MoveForward() {
analogWrite(LM1, 50); analogWrite(LM2, 0);
analogWrite(RM1, 50); analogWrite(RM2, 0);
delay(20);
}
void TurnRight() {
analogWrite(LM1, 0); analogWrite(LM2, 60);
analogWrite(RM1, 60); analogWrite(RM2, 0);
delay(30);
}
void TurnLeft() {
analogWrite(LM1, 60); analogWrite(LM2, 0);
analogWrite(RM1, 0); analogWrite(RM2, 60);
delay(30);
}
void Stop() {
analogWrite(LM1, 0); analogWrite(LM2, 0);
analogWrite(RM1, 0); analogWrite(RM2, 0);
delay(20);
}
회로도