[NEXTION HMI#2-2] 초음파 센서(HC-SR04)의 거리 측정치를 HMI로 출력해 본다!(녹칸다의 HMI실습예제)

이번 녹칸다의 nextion hmi 예제에서는 아두이노에 연결된 초음파 센서(HC-SR04)의 거리 측정치를 출력해보도록 하겠습니다~~!아두이노 코드를 이용하여 초음파 거리값을 측정하고 그것을 HMI 화면에 출력하는 것입니다~~! 간단하죠~?작화툴에서 text와 xfloat과 progress bar를 하나씩 추가합니다~~~! 프로그레스 바는 따로 필요하지 않지만 그냥 조금 더 연습해보는 의미로 적용해보도록 하겠습니다~~!아두이노에서 측정한 거리값을 x0으로 출력하는 것 입니다~~!이때 아두이노에서 측정한 거리값은 소수점이 있는 실수형 데이터이기 때문에 작화툴에서 실수 데이터를 표기할 수 있도록 설정해야 합니다~~!x0의 속성창에서 vvs1을 2로 설정합니다~~! 이는 소수점 2위까지 출력한다는 의미입니다~~!작화툴은 여기서 끝났습니다~!tft파일을 생성해서 hmi에 업로드 해줍니다~!실습에서 사용한 작화파일입니다~! 첨부 파일 hmi2_2.HMI 파일 다운로드 내의 컴퓨터를 저장네이버 MYBOX에 저장실습으로 사용한 폰트 파일입니다~~~! 첨부파일 font24.zi파일 다운로드 내 컴퓨터 저장네이버 MYBOX에 저장첨부파일 font4 8.zi파일 다운로드 내 컴퓨터 저장네이버 MYBOX에 저장첨부파일 font7 2.zi파일 다운로드 내 컴퓨터 저장네이버 MYBOX에 저장다음에 아두이노에 초음파 센서를 연결하겠습니다~~~!VCC는 5V에 연결하고 GND는 GND끼리 연결하여 전원을 공급해줍니다~~! 그리고 TRIG핀은 아두이노의 4번핀에 연결하고 ECHO핀은 5번핀에 연결합니다~~~! TRIG핀에서 발사된 초음파가 벽에 반사되어 ECHO핀에 들어가기까지의 시간으로 거리를 측정하는 것입니다~~!아두이노에 HMI 연결해드릴게요~~! VCC는 5V에 연결하고 GND는 GND에 연결하고 TX는 2번 핀, RX는 3번 핀에 연결합니다~!초음파 센서와 동시 접속해야 하므로 브레드보드(철판)를 사용하셔야 합니다~!아두이노우노 5V출력이 한군데 더 있는데 어딘지 알면 빵판은 따로 필요없네요~~! 아무튼 연결을 잘 해줄꺼에요~! 그리고 아래 코드를 아두이노에 올려줄꺼에요~!#<Software Serial>을 인스톨 합니다.h>#define trig 4#define echo 5Software Serial hmi(2,3);byte tail[]={0xFF, 0xFF, 0xFF};setup(){Serial}을 무효로 합니다.begin(9600);//PC와 아두이노간통신라인 hmi.begin(9600);//아두이노와HMI간의 통신라인 pinMode(trig, OUTPUT);pinMode(echo, INPUT);}void loop(){//trig핀에서초음파 사각펄스발사하기 digitalWrite(trig, LOW);delayMicroseconds(2);digitalWrite(trig, HIG);delayMicroseconds(10);digitalWrite(trig, LOW);float dist=(pulseIn(echo, HIGH)/29.0)/2;float dist_per=(dist/200)*100;if(dist_per>100)dist_per=100;string dist2=”x0.val=”+String(int)(dist*100);string dist3=”j0.val=”+String(int)dist_per);hmi.write(dist2.c_str();hmi.write(dist3.c_str();hmi.write(tail, 3);//Serial.println(dist);}아 도우이노과 초음파 센서로 거리를 측정하는 기본 코드입니다~!측정 원리는 생각보다 간단합니다~!trig처음부터 초음파를 발사하고 echo핀에 반사된 초음파가 올 때까지 시간을 측정합니다~에서는 “초음파가 벽에 맞고 반사된 시간”이 측정되죠?초음파는 전파하는 속도가 일정입니다~!속도와 시간을 알면 거리를 계산할 수 있습니다~~~!초음파 속도는 고정치에서 “초음파가 벽에 맞고 반사된 시간”은 초음파 센서로 측정하고 있으므로, 거리는 당연히 계산하기 때문입니다~!최종적으로 측정한 거리 값을 xfloat와 progress bar에 입력하고 줍니다~이때 xfloat와 progress bar의 입력 값이 다른 것으로 나타납니다~x0은 소수 점 2자리를 출력하기 위해서 100을 걸고 전송해야 하고, 프로그레스 바는 정수형 데이터로 값을 표현하는 소수 점을 삭제하고 전송해야 합니다~실습 예제의 작동 결과는 녹캉다의 유튜브 라이브 방송에서 해당 위치를 링크하도록 하겠습니다~!https://youtu.be/lA6OD8gGB1I?t=3593아두이노와 초음파 센서로 거리를 측정하는 기본 코드입니다~~! 측정 원리는 생각보다 간단합니다~!trig핀에서 초음파를 발사하고 echo핀에 반사된 초음파가 들어오기까지의 시간을 측정합니다~~! 그럼 ‘초음파가 벽에 부딪혀서 반사된 시간’이 측정이 되겠죠?초음파는 전파하는 속도가 일정합니다~~! 속도와 시간을 알면 거리를 계산할 수 있습니다~~~! 초음파의 속도는 고정값이고, ‘초음파가 벽에 부딪혀 반사된 시간’은 초음파 센서로 측정하고 있기 때문에 거리는 당연히 계산되는 것입니다~~! 최종적으로 측정한 거리값을 xfloat와 progress bar에 입력해 줍니다~~!이때 xfloat와 progress bar의 입력값이 다르다는 것을 알 수 있습니다~~!x0은 소수점 두 자리를 출력하기 위해 100을 곱하여 전송해야 하고, 프로그레스 바는 정수형 데이터로 값을 표현하기 때문에 소수점을 삭제하고 전송해야 합니다~~! 실습 예제의 작동 결과는 녹칸다의 유튜브 라이브 방송에서 해당 위치를 링크하도록 하겠습니다~! https://youtu.be/lA6OD8gGB1I?t=3593

error: Content is protected !!