홈 소개

|

자료마을

|

디자인관련

|

웹프로그램

|

사무용프로그램

|

방문자코너

|

가족게시판

|

동호회

 
 
 
방문자코너
  자유게시판
  생활의 지혜
  그누보드스킨




가장 필요한 프로그램이 무엇입니까?

어제 : 460

오늘 : 93

최대 : 3,197

전체 : 468,098

손님
접속자 2명, 회원 0명
 
 
자유게시판
▒ Home>방문자코너>자유게시판
  Blue_RC_Car_linetrace.ino [출처] [블루RC카] 라인센서 설치와 예제코드|작성자 디바이스마트
  글쓴이 :  (58.♡.52.195)     날짜 : 22-12-02 08:56     조회 : 135    
   https://blog.naver.com/no1_devicemart/221312208838 (100)
#define MOTOR_A_a 3    //모터A의 +출력핀은 3번핀입니다
#define MOTOR_A_b 11    //모터A의 -출력핀은 11번핀입니다
#define MOTOR_B_a 5    //모터B의 +출력핀은 5번핀입니다
#define MOTOR_B_b 6    //모터B의 -출력핀은 6번핀입니다
#define MOTOR_SPEED 60  //모터의 기준속력입니다(0~255), 라인트레이서는 저속주행을 권장드립니다.
#define LINESENS_L 7    //왼쪽 라인센서 입력핀입니다.
#define LINESENS_R 8    //오른쪽 라인센서 입력핀입니다.

unsigned char m_a_spd = 0, m_b_spd = 0; //모터의 속력을 저장하는 전역변수
boolean m_a_dir = 0, m_b_dir = 0; //모터의 방향을 결정하는 전역변수

void setup() 
{
  TCCR1B = TCCR1B & 0b11111000 | 0x05;  //저속주행이 가능하도록 모터A PWM 주파수 변경
  TCCR2B = TCCR2B & 0b11111000 | 0x07;  //저속주행이 가능하도록 모터B PWM 주파수 변경
 
  //모터 제어 핀들을 출력으로 설정합니다.
  pinMode(MOTOR_A_a, OUTPUT);
  pinMode(MOTOR_A_b, OUTPUT);
  pinMode(MOTOR_B_a, OUTPUT);
  pinMode(MOTOR_B_b, OUTPUT);

  //라인센서 핀들을 입력으로 설정합니다.
  pinMode(LINESENS_L, INPUT);
  pinMode(LINESENS_R, INPUT);
}

void loop()
{
  linetrace_val();  //입력된 데이터에 따라 모터에 입력될 변수를 조정하는 함수
  motor_drive();    //모터를 구동하는 함수
}

void linetrace_val() //입력된 데이터에 따라 모터에 입력될 변수를 조정하는 함수
{
  boolean line_l = digitalRead(LINESENS_L), line_r = digitalRead(LINESENS_R); //왼쪽과 오른쪽 라인센서의 감지값을 변수에 저장합니다.
  if(line_l == 0 && line_r == 0)      //라인이 감지되지 않을때 전진
  {
    m_a_dir = 0;  //모터A 정방향
    m_b_dir = 0;  //모터B 정방향
    m_a_spd = MOTOR_SPEED;  //모터A의 속력값 조정
    m_b_spd = MOTOR_SPEED;  //모터B의 속력값 조정
  }
  else if(line_l == 1 && line_r == 0) //왼쪽 센서 감지시 왼쪽으로 전진
  {
    m_a_dir = 1;  //모터A 역방향
    m_b_dir = 0;  //모터B 정방향
    m_a_spd = 0;  //모터A의 정지
    m_b_spd = constrain(MOTOR_SPEED*2, 0, 255);  //모터B의 속력값 조정
  }
  else if(line_l == 0 && line_r == 1)  //오른쪽 센서 감지시 오른쪽으로 전진
  {
    m_a_dir = 0;  //모터A 정방향
    m_b_dir = 1;  //모터B 역방향
    m_a_spd = constrain(MOTOR_SPEED*2, 0, 255);  //모터A의 속력값 조정
    m_b_spd = 0;  //모터B의 정지
  }
  else
  {
    m_a_dir = 0;  //모터A 정방향
    m_b_dir = 0;  //모터B 정방향
    m_a_spd = 0;  //모터A의 정지
    m_b_spd = 0;  //모터B의 정지
  }
}

void motor_drive()  //모터를 구동하는 함수
{
  if(m_a_dir == 0)
  {
    digitalWrite(MOTOR_A_a, LOW);    //모터A+ LOW
    analogWrite(MOTOR_A_b, m_a_spd);  //모터A-의 속력을 PWM 출력
  }
  else
  {
    analogWrite(MOTOR_A_a, m_a_spd);  //모터A+의 속력을 PWM 출력
    digitalWrite(MOTOR_A_b, LOW);    //모터A- LOW
  }
  if(m_b_dir == 1)
  {
    digitalWrite(MOTOR_B_a, LOW);    //모터B+ LOW
    analogWrite(MOTOR_B_b, m_b_spd);  //모터B-의 속력을 PWM 출력
  }
  else
  {
    analogWrite(MOTOR_B_a, m_b_spd);  //모터B+의 속력을 PWM 출력
    digitalWrite(MOTOR_B_b, LOW);    //모터B- LOW
  }
}
[출처] [블루RC카] 라인센서 설치와 예제코드|작성자 디바이스마트


게시물 141건
번호 제목 글쓴이 날짜 조회 최근
141 https://wokwi.com/projects/new/arduino-u… 01-09 102 01-09
140 자율주행킷트 12-16 124 12-16
139 코리아 리아 원격조정 12-02 134 12-02
138 흥인전자 12-02 137 12-02
137 Blue_RC_Car_linetrace.ino [출처] [블루RC… 12-02 136 12-02
136 라인트레이서 11-30 139 11-30
135 tx19-b 원격조정셋팅-어린이 전동자동차 06-17 233 06-17
134 我地身体不是我 12-01 386 12-01
133 판매마진 07-12 513 07-12
132 다쓰고 죽어라 12-20 1257 12-20
131 이청득심 10-31 1178 10-31
130 ✔입(口)이란 무엇인가?-퍼온 글 08-22 1570 08-22
129 흑백사진을 칼라로 04-14 1356 04-14
128 萬事分已定,浮生空自忙. 03-09 1655 03-09
127 돼지의눈 03-25 1731 03-25
 1  2  3  4  5  6  7  8  9  10  
 
   

사이트소개    |   이용약관    |   개인정보보호정책    |   이메일무단수집거부   

부산시 진구 당감2동 신가야 벽산블루밍
TEL : 051-896-0000| FAX : 000-000-0000 | E-mail : nunbuse@hanmail.***