정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

초음파센서와 서보모터 질문이요
초보입니다 | 2020-11-21
 

1. 프로젝트 사용한 보드 종류

 아두이노 UNO입니다.

 

 

2. 사용한 개발 프로그램명

  (아두이노 IDE,

 

 

3. 사용한 센서 모델명

  초음파 센서는 HC-SR04입니다. 서보 모터는 SG90인거 같습니다.

 

 

4. 연결한 회로 설명 (또는 이미지)

회로 구성에 대한 질문은 없습니다.

 

 

5. 소스코드 (주석 필수)

  

#include <Servo.h>

Servo myservo;

void setup() {
  pinMode(2, OUTPUT);  //2번핀을 TRIG로
  pinMode(3, INPUT);     //3번핀을 EHCO로
  myservo.attach(9);       //서보모터는 9핀과 연결
}

void loop() {
  int i = 0;                   // i는 0으로 정의
  int j = 120;               // j는 120으로 정의

  digitalWrite(2, HIGH);  // 2번핀이 켜지면
  delayMicroseconds(10); // 10MS동안 딜레이
  digitalWrite(2, LOW);   // 2번핀이 꺼짐

  long duration = pulseIn(3, HIGH);  //duration을 2번에서 나온 초음파를 3번에서 받아들여서 3번이 켜지는 동운 걸린 시간으로 설정
  
  if (duration == 0) {   // duration이 0일때
    return;                 // 반환
  }
  long distance = duration / 58.2; // distance는 duration/58.2로 설정

  if (distance <= 20) {                // distance가 20이하일 때
    while(i < 120)                      // i가 120전까지
    {
      myservo.write(i);                // i가 0.015s 간격으로 120전까지 증가함
      ++i;
      delay(15);
    }
    delay(2000);                      // 2초 딜레이
    while(j > 0)                       // j가 0보다 클때까지
    {
      myservo.write(j);               // j가 0.015s 간격으로 0까지 감소함
      --j;
      delay(15);
    }
   }
  }

 

 

6. 문제점 및 에러 내용

  위에 코드가 초음파센서에 20cm이하로 물체가 감지되면 서보모터가 120도까지 열렸다가

2초 뒤에 자동으로 0도까지 닫히는 코딩입니다. 여기까지는 실행이 되는데 서보모터가 닫히는 도중

물체가 감지되면 닫히는 도중에 다시 120도로 열리도록하는법을 모르겠습니다.

이전글   |    오렌지 보드에 업로드 오류 발생 2020-11-13
다음글   |    아두이노 소스코드 질문입니다! 2020-11-22