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도로 열리도록하는법을 모르겠습니다.
|