BASIC4MCU | 질문게시판 | 초음파센서 진동모터 질문있습니다
페이지 정보
작성자 발공 작성일2020-06-12 14:14 조회13,780회 댓글2건본문
int PIN_ULTRASONIC_SIG = 3; // 초음파 센서 SIG 핀 초기화
int PIN_Vibartion_Motor = 9; // 진동모터 핀 초기화
void setup() {
Serial.begin(9600); // 시리얼 통신 초기화 (거리를 출력하기 위한 목적)
}void loop() {
pinMode(PIN_ULTRASONIC_SIG, OUTPUT); // 신호선을 출력 모드로 선언
digitalWrite(PIN_ULTRASONIC_SIG, LOW); // 신호선에 전압을 0V로 하여 동작하지 않게 함
delayMicroseconds(2); // 송출 신호와 수신 신호 사이에 일정시간 지연
digitalWrite(PIN_ULTRASONIC_SIG, HIGH); // 신호선에 전압을 가하여 초음파를 송출함
delayMicroseconds(5); // 5 마이크로초(0.005 밀리초) 동안 초음파를 송출함
digitalWrite(PIN_ULTRASONIC_SIG, LOW); // 초음파 송출 정지
pinMode(PIN_ULTRASONIC_SIG, INPUT); // 신호선을 입력 모드로 전환// 신호선의 값이 HIGH가 되는 순간의 시간 측정
// 0 또는 마이크로초(백만분의 1초)가 pulseIn() 함수의 반환 값으로 전달됨
long duration = pulseIn(PIN_ULTRASONIC_SIG, HIGH);
// HC-SR04 초음파 센서 모듈의 데이터시트를 확인 (초음파 센서에 따라 스펙이 다를 수 있으므로 반드시 데이터시트 확인 필요)
// 공식: 마이크로초(uS) / 58 = 센티미터(centimeters) 라는 것을 알 수 있음
long cm = duration / 58;// if 조건문을 이용해 15cm 내에 사물이 있는 경우 모터를 켜고, 밖에 있는 경우 모터를 끈다.
if (cm < 300) {
analogWrite(9,100);
}
else {
analogWrite(9,0);
}// 시리얼로 거리를 출력한다. 예) 15cm
Serial.print(cm);
Serial.println("cm");// 일정시간 지연
delay(100);
}이렇게 코딩딩을하고 회로도를 짰는데 진동모터가 반응을 안합니다 어디 수정 할 곳이 있나요?
![]()
댓글 2
조회수 13,780master님의 댓글
master 작성일
TR 핀명칭이 EBC인지 데이터시트를 보고 다시 체크하시고
//
저항과 9번핀 연결선을 떼어내고
저항에 5V를 연결해서 진동모터가 동작하는지 체크하세요
kangddeng님의 댓글
kangddeng 작성일안녕하세요. 문제가 해결되었는지 궁금합니다. 해결되었다면 어떻게 해결하셨는지 그리고 무엇이 문제였는지 알고 싶습니다.