# 목적
- 리모콘으로 DC 기어 모터를 제어한다.
# 입출력 설명
- 입력 : 리모콘의 각 버튼을 누르면, 적외선 센서가 그 값을 읽는다.
- 처리 :
- 출력 : DC 기어 모터가 시계 방향 또는 반시계 방향으로 회전한다.
# L293 모터 쉴드 (DFRobot) 사용시
https://www.dfrobot.com/wiki/index.php/Arduino_Motor_Shield_(L293)_(SKU:_DRI0001)
## L293 모터 쉴드
* 핀 할당 표
- Motor 1 PWM 제어 : 디지털 6번 핀
- Motor 1 방향 제어 : 디지털 7번 핀
- Motor 2 PWM 제어 : 디지털 5번 핀
- Motor 2 방향 제어 : 디지턹 4번 핀
## 준비물
- 적외선 센서, 리모콘, DC 기어 모터, 모터 드라이버
- 보드, 브레드보드, 점퍼케이블, 저항
## 회로도
## 아두이노 (Arduino)
// code start
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
int EN1 = 6;
int IN1 = 7;
int EN2 = 5;
int IN2 = 4;
void Motor1(int pwn, boolean reverse){
analogWrite(EN1, pwm);
if(reverse) {
digitalWrite(IN1, HIGH);
} else {
digitalWrite(IN1, LOW);
}
}
void Motor2(int pwn, boolean reverse){
analogWrite(EN2, pwm);
if(reverse) {
digitalWrite(IN2, HIGH);
} else {
digitalWrite(IN2, LOW);
}
}
void setup(){
for (int i=4; i<7; i++) {
pinMode(i, OUTPUT);
}
Serial.begin(9600);
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
switch(results.value) {
case ' ' : // forward
Motor1(100,true);
Motor2(100,true);
break;
case ' ' : // back
Motor1(100,false);
Motor2(100,false);
break;
case ' ' : // turn left
Motor1(100,false);
Motor2(100,true);
break;
case ' ' : // turn right
Motor1(100,true);
Motor2(100,false);
break;
case ' ' : // stop
Motor1(0,false);
Motor2(0,false);
break;
}
irrecv.resume();
}
}
// code end
## 참고자료
Arduino Motor Shield (L293) (SKU: DRI0001) : http://www.dfrobot.com/wiki/index.php/Arduino_Motor_Shield_(L293)_(SKU:_DRI0001)
# L9110S Dual DC 모터 드라이버 사용시