라인트레이서 코드 작성

우리는 이전 시간까지 RC카의 외형을 조립하고, 모터드라이버로 DC모터를 제어하는 방법, 적외선 센서를 사용하는 방법까지 익혔다.

이제 라인트레이서를 완성하기 위해 (거의) 모든 사전 작업을 끝냈다! 이제 각각을 결합하고 자동차에 라인트레이서의 영혼을 넣어주면 된다!!!

적외선 센서는 디지털 12번, 13번 pin에 연결하도록 한다.

코드

void setup() {
  pinMode(7, OUTPUT);       // Motor A 방향설정1
  pinMode(8, OUTPUT);       // Motor A 방향설정2
  pinMode(4, OUTPUT);       // Motor B 방향설정1
  pinMode(5, OUTPUT);       // Motor B 방향설정2
  
  analogWrite(9, 130);       // Motor A 속도조절 (0~255)
  analogWrite(3, 130);        // Motor B 속도조절 (0~255)
  Serial.begin(9600);
}

void loop() {
 
    int val1 = digitalRead(12);    // 라인센서1 왼쪽
    int val2 = digitalRead(13);    // 라인센서2 오른쪽
    Serial.print(val1);
    Serial.println(val2);
    
      if (val1 == 1 && val2 == 1)   // 직진
      {                 
       digitalWrite(7, HIGH); 
       digitalWrite(5, HIGH);
      }
      else if (val1 == 0 && val2 == 1)  // 좌회전
      {             
       digitalWrite(7, LOW); 
       digitalWrite(5, HIGH);
      }
      else if (val1 == 1 && val2 == 0)  // 우회전
      {             
        digitalWrite(7, HIGH); 
        digitalWrite(5, LOW);
      } 
      else if (val1 == 0 && val2 == 0)  // 정지
      {              
        digitalWrite(7, LOW); 
        digitalWrite(5, LOW);
      }           
}

 

모터 드라이버 쉴드를 L293D를 이용할 경우에는 아래코드를 사용하면 됩니다.

코드 보기
#include <SoftwareSerial.h>
#include <AFMotor.h>
AF_DCMotor motor_L(1);              // 모터드라이버 L293D  1: M1에 연결,  2: M2에 연결
AF_DCMotor motor_R(2); 

void setup() {
  Serial.begin(9600);              // PC와의 시리얼 통신속도

  motor_L.setSpeed(130);              // 왼쪽 모터의 속도   
  motor_L.run(RELEASE);
  motor_R.setSpeed(130);              // 오른쪽 모터의 속도   
  motor_R.run(RELEASE);
}

void loop() {
    int val1 = digitalRead(A0);    // 라인센서1
    int val2 = digitalRead(A5);    // 라인센서2   
    
      if (val1 == 0 && val2 == 0) {                   // 직진
       motor_L.run(FORWARD); 
       motor_R.run(FORWARD);
      }
      else if (val1 == 0 && val2 == 1) {              // 우회전
       motor_L.run(FORWARD); 
       motor_R.run(RELEASE);
      }
      else if (val1 == 1 && val2 == 0) {              // 좌회전
        motor_L.run(RELEASE); 
        motor_R.run(FORWARD);
      } 
      else if (val1 == 1 && val2 == 1) {              // 정지
        motor_L.run(RELEASE); 
        motor_R.run(RELEASE);
      }           
}
    

 


Comments

6 responses to “라인트레이서 코드 작성”

  1. Hi there would you mind stating which blog platform you’re working with?
    I’m looking to start my own blog soon but I’m having a hard time selecting between BlogEngine/Wordpress/B2evolution and Drupal.
    The reason I ask is because your design and style seems different then most blogs and I’m looking for something unique.
    P.S Sorry for getting off-topic but I had to ask!

  2. Thank you for some other informative blog. Where else may just I am
    getting that kind of information written in such a perfect way?
    I’ve a challenge that I am simply now operating on, and I’ve been on the glance out for
    such information.

  3. This is very interesting, You’re a very skilled blogger.
    I have joined your feed and look forward to seeking more of your
    great post. Also, I have shared your website in my social networks!

  4. I like it when folks come together and share opinions.
    Great blog, continue the good work!

  5. naturally like your web-site but you have to check the spelling on quite
    a few of your posts. Many of them are rife with spelling problems and
    I find it very bothersome to inform the truth nevertheless I will
    definitely come back again.

    1. Wow! I’m too busy to check my spelling problem! Sorry

Leave a Reply