정보나눔

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

초음파센서와 서보모터 질문이요
초보입니다 | 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-24 11:04:12

현재 코딩순서가

거리확인->서보작동인데

 

거리확인->서보작동 중에도 거리 확인을 해보세요

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