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

작성자
성현중 송재경 신청홍 오수정
작성일
2022-05-12 18:08
조회
281
라인 트레이서 3팀( 튜터 황찬욱, 팀원 성현중, 송재경, 신청홍, 오수정 )


void forward ();
void backward ();
void right ();
void left ();

int motorA1 = 5;
int motorA2 = 6;
int motorB1 = 9;
int motorB2 = 10;
int LS = A0;
int RS = 13;
int speed = 130;

int infra_value = 300;

void setup () {
  pinMode(motorA1, OUTPUT);
  pinMode(motorA2, OUTPUT);
  pinMode(motorB1, OUTPUT);
  pinMode(motorB2, OUTPUT);
  pinMode(LS, INPUT);
  pinMode(RS, INPUT);

  Serial.begin(9600);
}

void loop() {
  if (analogRead(LS)infra_value && !digitalRead(RS)){
    //Serial.println("right");
    right();}
  else if (analogRead(LS)>infra_value && digitalRead(RS)){
    //Serial.println("stop");
    Stop();}
  else {
   // Serial.println("forward");
    forward();}

  //delay(1000);
 }


void forward () {
  analogWrite(motorA1, 0);
  analogWrite(motorA2, speed);
  analogWrite(motorB1, 0);
  analogWrite(motorB2, speed);
}
void backward () {
  analogWrite(motorA1, 0);
  analogWrite(motorA2, speed);
  analogWrite(motorB1, 0);
  analogWrite(motorB2, speed);
}
void left () {
  analogWrite(motorA1, speed);
  analogWrite(motorA2, 0);
  analogWrite(motorB1, 0);
  analogWrite(motorB2, speed);
}
void right () {
  analogWrite(motorA1, 0);
  analogWrite(motorA2, speed);
  analogWrite(motorB1, speed);
  analogWrite(motorB2, 0);
}
void Stop () {
  analogWrite(motorA1, 0);
  analogWrite(motorA2, 0);
  analogWrite(motorB1, 0);
  analogWrite(motorB2, 0);
}
적외선 센서 2개를 이용하여 가장 단순한 구조의 라인 트레이서를 만들어보았습니다. 두 센서가 모두 검은색 선을 감지하면 정지, 흰 색일 때는 직진합니다. 또 검은색 라인이 감지되는 방향으로 회전이 발생하여 선을 따라서 움직일 수 있도록 했습니다. 센서의 감도 향상을 위해 최대한 바닥에 가깝도록 조정하였고, 센서 간의 너비를 넓게 하였습니다.

전체 0