상세 컨텐츠

본문 제목

RC Car #2

프로그래밍/Arduino & IoT

by ryujt 2015. 12. 21. 14:46

본문



지난 번 RC Car는 바디에 품질로 인해서 한 쪽으로 기울져서 가는 문제가 있었습니다.  그래서 새로 바디를 바꾸어 제작한 RC-Car입니다.





사용 된 부품들은 아래와 같습니다.


모터와 같이 아두이노를 하나의 전원으로 연결하면, 전력 부족으로 인해서 아두이노가 오작동하는 경우가 있습니다.  이를 방지하기 위해서 아두이노는 별도의 전원을 독차지하고, 모터 드라이버와 적외선 센서를 다른 대용량 배터리에 연결하였습니다.


전원이 달라지면, 아두이노에서 신호를 보내거나 받을 수가 없게 됩니다.  이럴 때는 두 전원의 음극(-) 선 끼리 연결해주시면 됩니다.


소스 코드는 아래와 같습니다.

#include <IRremote.h>

#define AIA 5
#define AIB 6
#define BIA 3
#define BIB 4
    
IRrecv irrecv(7);

void setup() {
  irrecv.enableIRIn();

  pinMode(AIA, OUTPUT);
  pinMode(AIB, OUTPUT);
  pinMode(BIA, OUTPUT);
  pinMode(BIB, OUTPUT);
  
  do_stop();  
}

void loop() {
  decode_results results;
  boolean has_result = irrecv.decode(&results);
  if (has_result) {
    if (results.value == 16623703) do_stop();
    if (results.value == 16615543) forward();
    if (results.value == 16619623) backward();
    if (results.value == 16591063) left();
    if (results.value == 16607383) right();
    irrecv.resume();
  }
}

void forward() {
  digitalWrite(AIA, HIGH);
  digitalWrite(AIB, LOW);
  digitalWrite(BIA, HIGH);
  digitalWrite(BIB, LOW);
}

void backward() {
  digitalWrite(AIA, LOW);
  digitalWrite(AIB, HIGH);
  digitalWrite(BIA, LOW);
  digitalWrite(BIB, HIGH);
}

void left() {
  digitalWrite(AIA, HIGH);
  digitalWrite(AIB, LOW);
  digitalWrite(BIA, LOW);
  digitalWrite(BIB, HIGH);
}

void right() {
  digitalWrite(AIA, LOW);
  digitalWrite(AIB, HIGH);
  digitalWrite(BIA, HIGH);
  digitalWrite(BIB, LOW);
}

void do_stop() {
  digitalWrite(AIA, LOW);
  digitalWrite(AIB, LOW);
  digitalWrite(BIA, LOW);
  digitalWrite(BIB, LOW);
}




관련글 더보기