초음파가 반사되어 다시 돌아오는 시간을 이용해 초음파 센서로부터 부딫힌 물체까지의 거리를 구하는 식 입니다. (거리=속력*시간 공식 이용) ((float)(340*duration1)/10000)/2 에서 float: 거리를 소수점 단위까지 표현할수 있게 함(실수) 340: 소리(초음파)의 속력 duration1: 초음파가 발생하여 물체에 부딫혀 다시 돌아오는데 걸리는 시간 10000: 단위를 cm로 바꾸기 위해 나누는 수 2: duration1은 왕복 시간 즉 초음파가 나갔다 다시 들어오는 시간이므로 2로 나눠주지 않으면 우리가 구하고자 하는 거리의 2배의 값이 구해진다. 그래서 2로 나눠준다
오차가 좀 있는데 측정값을 임의로 수정되서 표시되게 할 수 있나요?
그리고 예로 측정된 1미터 지점을 0의값으로 임의로 수정한 후 가까워지면 마이너스 1부터,멀어지면 플러스1부터 거리가 lcd에 표시되게도 할수있을까요?
lcd에 표시되는 값은 코드 수식으로 결정되기 때문에
측정값에 -1을 수식으로 추가하여 나타나게 하면 될것 같습니다.
@@tajomania답글 감사합니다.
가능한거면 열심히 공부하겠습니다.
다 합쳐서 가격은 어느정도 해요?
아두이노 우노 약23,000원(CH340은 약 5천원), 초음파센서 1,100원, LCD 모듈 2,200원 정도 하네요.
아두이노 관련 물품들은 메카솔루션(mechasolution.com)에 들어가보시면 다양하게 있습니다~
@@tajomania 감사합니다
혹시 코드를 알려주실 수 있으신가요
집에서 한번 해보고 싶어서요 ^~^
#include
LiquidCrystal LCD(4, 6, 10, 11, 12, 13); // 아두이노에 연결된 핀번호로 LCD모듈 초기화
void setup()
{
LCD.begin(16, 2); // 16x2사이즈의 LCD사용을 시작
pinMode(2, INPUT); // echo 핀을 디지털 2번
pinMode(3, OUTPUT); // trig핀을 디지털 3번
Serial.begin(9600); // 시리얼 통신 초기화
}
void loop()
{
digitalWrite(2,LOW);
digitalWrite(3,LOW);
delayMicroseconds(2);
digitalWrite(3,HIGH); //초음파를 내보냄
delayMicroseconds(10); //10마이크로초 동안
digitalWrite(3,LOW); //초음파 그만 내보냄
unsigned long duration = pulseIn(2,HIGH); //2번핀 값이 HIGH가 될때까지의 시간을 측정함
float distance = ((float)(340*duration)/10000)/2;
Serial.print(distance); //시리얼 모니터에 문자열 출력
Serial.println("cm");
String disStr = String(distance); // 거리 값을 문자열로 변환
LCD.print("dis: " + disStr + "cm"); //LCD에 문자열 출력
delay(1000);
LCD.clear();
}
제가 사용한 코드 입니다.
코딩을 따로 배운적이 없는 사람이어서 많이 허접합니다~;;;
저도 처음배우는거라 많이 어렵네요..
그래도 저알 감사합니다 좋은하루 보내세요 ^^
@@tajomania 정말 궁금한게 있는데요 가변저항기는 500k옴짜리를 사용하나요?
저는 최대 10k옴 짜리를 썼습니다.
가변저항은 저항을 조절하여 LCD 화면이 잘 나올 수 있도록하기 위해 사용했습니다.
코드에서
((float)(340duration1)/10000)/2;가 무슨식이고 이 공식이 어디서 나왔나요?
초음파가 반사되어 다시 돌아오는 시간을 이용해 초음파 센서로부터 부딫힌 물체까지의 거리를 구하는 식 입니다.
(거리=속력*시간 공식 이용)
((float)(340*duration1)/10000)/2 에서
float: 거리를 소수점 단위까지 표현할수 있게 함(실수)
340: 소리(초음파)의 속력
duration1: 초음파가 발생하여 물체에 부딫혀 다시 돌아오는데 걸리는 시간
10000: 단위를 cm로 바꾸기 위해 나누는 수
2: duration1은 왕복 시간 즉 초음파가 나갔다 다시 들어오는 시간이므로 2로 나눠주지 않으면 우리가 구하고자 하는 거리의 2배의 값이 구해진다. 그래서 2로 나눠준다