[실습세미나] 라인트레이서 1팀

작성자
김강호
작성일
2022-05-19 00:26
조회
291
튜터: 김의찬/

팀원: 김강호, 김유섭, 민성현, 다연/////

아래는 저희가 작성한 코드입니다.

검은색 선을 감지하는 적외선 센서로부터 입력을 받아 모터를 제어하는 방식이고,

모터의 회전 방향을 헷갈리지 않기 위해 pinmode에 시계 혹은 반시계 방향이라고 명시했습니다.

2개 모터의 속도가 다른데, 이는 같은 값을 넣어도 모터마다 속도가 다르게 나와서 저희가 바꿔가며 속도를 맞췄기 때문입니다.
#define LmotorCW 6
#define LmotorCCW 5

#define RmotorCW 10
#define RmotorCCW 9

#define IRL 7
#define IRR 8

int speed = 60; //모터 속도

void setup() {
  // put your setup code here, to run once:
  pinMode(LmotorCW,OUTPUT);
  pinMode(LmotorCCW,OUTPUT);
  pinMode(RmotorCW,OUTPUT);
  pinMode(RmotorCCW,OUTPUT);

  pinMode(IRL,INPUT);
  pinMode(IRR,INPUT);
}

void loop() {
 

  if(digitalRead(IRL)==LOW && digitalRead(IRR)==LOW){
    analogWrite(LmotorCW,0);
    analogWrite(LmotorCCW,80);

    analogWrite(RmotorCW,speed);
    analogWrite(RmotorCCW,0);
  }
  else if(digitalRead(IRL)==LOW && digitalRead(IRR)==HIGH){
    analogWrite(LmotorCW,0);
    analogWrite(LmotorCCW,80);

    analogWrite(RmotorCW,0);
    analogWrite(RmotorCCW,speed);
  }
  
  else if(digitalRead(IRL)==HIGH && digitalRead(IRR)==LOW){
    analogWrite(LmotorCW,80);
    analogWrite(LmotorCCW,0);

    analogWrite(RmotorCW,speed);
    analogWrite(RmotorCCW,0);
  }
 
  else if(digitalRead(IRL)==HIGH && digitalRead(IRR)==HIGH){
    analogWrite(LmotorCW,0);
    analogWrite(LmotorCCW,0);
    
    analogWrite(RmotorCW,0);
    analogWrite(RmotorCCW,0);
  }
}

오른쪽 사진은 저희가 완성한 모델입니다.

전체 0