프로그래밍

아두이노 잘 아시는분...?

#define trigPin 9
#define echoPin 10
#define buzzer 8
#define ledPin 2

long duration;
int distance;

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = duration * 0.034 / 2;

  if (distance < 15) {
    if (distance <= 2) { 
      digitalWrite(ledPin, HIGH);
      tone(buzzer, 1000);
    } else {
      digitalWrite(ledPin, HIGH);
      tone(buzzer, 1000);
      delay(1000/(15 - distance + 1)); 
      digitalWrite(ledPin, LOW);
      noTone(buzzer);
      delay(1000/(15 - distance + 1)); 
    }
  } else {
    digitalWrite(ledPin, LOW);
    noTone(buzzer);
  }
}
 

 

HC-SR04를 사용하고 있는데

 

거리 탐지가 너무 이상함...

 

반응이 느린건지 탐지가 이상한건지 모르겠음...

 

시리얼 포트로 받아봐도 거리가 좀 이상한데,

 

하나 더 사야될 지 어떻게 해야 할 지 모르겠네요...

26개의 댓글

2023.06.06

어떻게 이상한지도 좀 써줘야지... 나도 몇번 안해보긴했는데 내꺼도 패키지에 딸려온거라그런지 그렇게 정확하진 않더라

0
2023.06.06
@silentScreamer

아두이노 UNO 사용중이고,

 

자동차 후방감지 카메라처럼 초음파 센서 이용해서 거리가 가까워지면 LED가 빨리 깜빡이면서, 부저도 삐소리 나게끔 만들려고하는데,

 

초음파센서가 이상한건지 연결선이 이상한건지 LED랑 부저는 문제 없는데, 거리 계산이 느린건지, 잘 안돼요....

 

시리얼모니터로 출력되게 해도 거리가 너무 이상해요... 아예 손을 갖다대도 100정도로 나오니까 미치겠음.....

0
2023.06.06
@변아

코드는 이상없는거 같은데, Serial prints 해서 센서에서 들어오는 distance 값 디버깅해보셈

0
2023.06.06
@silentScreamer

그렇게 해서 거리 본게 이상해요

 

거의 130 정도만 유지하고 있어요

 

센서에 가까이 손을 갖다대도 비슷한 값만 출력해요... 당연하겠지만 선을 만지면 거리 값 날뛰어요

0
2023.06.06
@변아

그래두 안되면 https://reference.arduino.cc/reference/en/libraries/newping/ 함 써보셈

https://forum.arduino.cc/t/very-slow-hc-sr04-ultrasonic-sensor/144091

0
2023.06.06
@silentScreamer

이번엔 거리 거의 대부분0만 출력해요 ㅠㅠㅠ

0
2023.06.06
@silentScreamer

PIR적외선 센서로 바꿧네요..

0
2023.06.06

gpt 돌려봐

0
2023.06.06
@려비

센서가 이상한거일수도 있는건데 GPT 가 어떻게 알음....

0
2023.06.06
@변아

그내용도 포함해서 물어봐

0
@변아

gpt 오류 찾는거 잘함

0
2023.06.06
@변아

GPT 은근히 잘 도와줘...

0
2023.06.06
@엔지니어

오류 찾는거 잘 하는거 아는데, 이미 사용 했고, 센서가 이상한지 선이 이상한지 모르는 상황에서 어떤 문제인줄 알고 물어보냐는 뜻이에요

 

거리값 자체를 이상하게 출력하고 있어요

0
2023.06.06
@변아

그럼 우리가 센서가 이상한건지 선이 이상한건지 어케암? 코드 이상없으면 그게 문제겠지

0
2023.06.06
@심보고약한놈

그래 너가 최고야

0
2023.06.06
@변아

최고인거 알면 다른 부품으로 해봐라

0
2023.06.06
@변아

지금 코드를 보고 있는데

혹시 Arduino IDE를 사용하고 있다면 자동으로 추가되지만, 그렇지 않다면

Arduino.h 헤더를 추가해줘야 할거에요 (pulseIn 함수 등등을 사용하기위해서)

 

만약 delay의 문제라면 mills() 함수를 이용해서 조절해주면 될 수 있겠지만

그게 아니라면 시리얼 모니터를 통해 값이 정확히 나오는지 보고 if 구문을 바꾸는게 좋을거 같아요

 

distance = duration * 0.034 /2 를

distance = ((duration * 340)/1000) / 2 혹은 (duration * 0.34) / 2 혹은 duration/ 2.9 / 2로 바꿔보시는게 좋을거 같아요

distance에 들어간 값이 int로 선언되어있는데 double이나 float로 선언해도 값이 비슷하게 나오는지도 궁금하네요

 

그래서 코드를 적어보면 이렇게 써봤는데 검증 후에 if 구문을 검증하면 동작하지 않을까 싶어요

 

#include <Arduino.h> //Arduino IDE를 이용하면 자동으로 추가 됨

 

int trigPin = 9;

int echoPin = 10;

 

void setup() {

pinMode(trigPin, OUTPUT);

pinMode(echoPin, INPUT);

Serial.begin(9600);

}

 

void loop(){

float distance, duration; //변수 선언

digitalWrite(trigPin, LOW); //트리거핀 초기화

digitalWrite(echoPin, LOW); //에코핀 초기화

delayMicroseconds(2);

digitalWrite(trigPin, HIGH);

delayMicroseconds(10);

digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);

distance = (duration /2.9) / 2; // duration

Serial.print(distance); //serial 모니터에 distance 값 출력, 단위 mm

delay(100);

}

 

 

0
2023.06.07
@엔지니어

센서자체가 잘못 된 거 같아서 RIP센서로 바꿧어요

0
2023.06.07
@변아

해결되신거라면 다행이에요!

0

distance = ((float)(340 * duration) / 1000) / 2; 이거 축약하면 0.034가 아니라 0.34아님?

0
@저소음흑축써주세요제발

0.34*duration / 2로 계산해야 값 제대로 나오는거 아닐까?

0
2023.06.06
@저소음흑축써주세요제발

말씀은 감사드립니다! 근데, 역시나 안되네요...

0

아두이노 부품 중국산 싸구려가 많아서 복권처럼 꽝인 경우도 자주 있는데 그거 스피커처럼 생긴 초음파 거리 측정기지?

그거 꽝좀 많아 다른부품으로 해보샘

0
2023.06.07
@이성적인도라이

맞아요... 그래서 RIP센서로 했네요

0
2023.06.06

인터넷 보면 저센서 관련 아두이노 코드가 있음 그거 일단 드래그해서 센서 테스트를 해봐야 할 듯?

센서가 정상이라는 보장이 없어서 내가 학생 때 센서 오면 일단 테스트 코드로 테스트함

0
2023.06.07
@RX7900XTX

인터넷 코드 긁어서 해도 안되길래 RIP센서로 바꿧어요...

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜 조회 수
5719 [프로그래밍] 하이브리드 웹뷰기반 앱은 rn이 정석이야? 3 잠적자 0 17 시간 전 158
5718 [프로그래밍] c# webview2 도움요청함.. 7 carpediem 0 23 시간 전 113
5717 [프로그래밍] 현업 개발자형들 맥씀? 9 이또히로부미 0 1 일 전 205
5716 [프로그래밍] libtorch에서 cuda 안불러와지는거 도움! 2 Hakat 0 2 일 전 122
5715 [프로그래밍] 뭔가 게시판이 애매해서 그런데 gis 잘아는 사람? 1 하늘늑대 0 3 일 전 163
5714 [프로그래밍] 컴포즈가 프리뷰랑 폰에서 다르게 동작해요 1 집에가게해줘 0 3 일 전 117
5713 [프로그래밍] 난바보다) 크로미움 램사용량 문제 일단 해결 2 ye 0 4 일 전 282
5712 [프로그래밍] k8s DNS 이슈는 해결이 안되나보다. 잉텔 0 5 일 전 171
5711 [프로그래밍] 분노) 진짜 유튜브 구글 패악질 토나오네 씨발 17 ye 0 6 일 전 769
5710 [프로그래밍] 프론트엔드 공부하려는데 언어 추천좀 7 스트리플 0 7 일 전 350
5709 [프로그래밍] 객체지향 뽕에 취하지마라 8 69746974 2 8 일 전 407
5708 [프로그래밍] 요즘 앱개발 인력시장 어떰..3년차 2 센치해요 0 11 일 전 387
5707 [프로그래밍] 컴포즈 Box 컴포넌트가 안 나와... 1 집에가게해줘 0 13 일 전 148
5706 [프로그래밍] 아 ssl 적용햇는데 개정신없네 9 넌또화나있네 0 13 일 전 305
5705 [프로그래밍] 패스트 캠퍼스 <---- 얘내는 가격 인상 원툴임? 5 조강현 0 16 일 전 398
5704 [프로그래밍] 클라가 파이썬 셀레니움같은거 써서 클릭하고 그러는걸 감지 ... 5 리옴므 0 17 일 전 265
5703 [프로그래밍] leetcode 50일 달성 1 JimmyMcGill 1 17 일 전 237
5702 [프로그래밍] 그냥 개인공부용 git 만들건데 5 년째재수강 0 17 일 전 336
5701 [프로그래밍] html 자바스크립트 질문 19 책걸이 0 18 일 전 370
5700 [프로그래밍] 아니 시바 이게 무슨일이야 4 인간지표 0 18 일 전 380