산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Arduino UNO와 HC-SR04 초음파 센서, Adafruit OLED로 거리 측정하기

부품 및 소모품

Arduino UNO 1개
초음파 센서 HC-SR04 1개
Adafruit 128x64 OLED 디스플레이 1개

앱 및 온라인 서비스

프로젝트 소개

Arduino UNO와 HC-SR04 초음파 센서, Adafruit OLED로 거리 측정하기

OLED 화면 사용법

이전 튜토리얼을 참고하세요:

#include 및 #define, setup() 실행 전:

#include <SPI.h> // OLED용 라이브러리들
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4 // 리셋 핀, 사용 안 함
Adafruit_SSD1306 display(OLED_RESET);

setup() 함수에서:

display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // I2C 주소 0x3C로 초기화 (128x64)
display.clearDisplay(); // 시작 전 디스플레이 클리어

loop() 함수에서:

display.setCursor(22, 20); // x,y 좌표
display.setTextSize(3);    // 텍스트 크기
display.setTextColor(WHITE); // BLACK 쓰면 지워짐
display.println(distance);   // 변수 출력
display.setCursor(85, 20); // 단위(cm/in) 출력 위치
display.setTextSize(3);
#ifdef CommonSenseMetricSystem
  display.println("cm"); // OLED에 "cm" 출력
#endif
#ifdef ImperialNonsenseSystem
  display.println("in"); // OLED에 "in" 출력
#endif
display.display(); // 데이터 실제 표시
delay(500);        // 사람 속도로 대기
display.clearDisplay(); // 디스플레이 검게 클리어

HC-SR04 초음파 거리 센서 사용법

데이터시트를 참고하세요. HC 모듈은 펄스 버스트를 보낸 후 초음파 에코가 원래 위치로 돌아오는 데 걸리는 시간을 측정합니다.

HC 트리거에 펄스 생성, HC가 펄스 버스트 수행:

long duration, distance; // 변수들
digitalWrite(trigPin, LOW);  // 펄스 ___|---|___
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

pulseIn()은 드물게 쓰이는 함수로, 하이(__----__) 또는 로우(----___---) 펄스의 길이를 감지합니다.

필요한 부분만 컴파일하기 위해 #ifdef를 사용합니다.

duration = pulseIn(echoPin, HIGH);
#ifdef CommonSenseMetricSystem
  distance = (duration/2) / 29.1;
#endif
#ifdef ImperialNonsenseSystem
  distance = (duration/2) / 73.914;
#endif

OLED가 작동하지 않을 경우 디버깅용:

Serial.println(distance); // 디버그

코드

초음파 거리 측정 및 표시 Arduino
// CODE BY Javier Muñoz Sáez, 05/11/2016 문의: javimusama@gmail.com
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define CommonSenseMetricSystem
//#define ImperialNonsenseSystem

#define trigPin 13
#define echoPin 12
#define OLED_RESET 4

Adafruit_SSD1306 display(OLED_RESET);

void setup() {
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // I2C 주소 0x3C로 초기화 (128x64)
  display.clearDisplay();
}

void loop() {
  long duration, distance;
  digitalWrite(trigPin, LOW);  // 펄스 ___|---|___
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  
  #ifdef CommonSenseMetricSystem
    distance = (duration/2) / 29.1;
  #endif
  #ifdef ImperialNonsenseSystem
    distance = (duration/2) / 73.914;
  #endif
  
  display.setCursor(22, 20); // OLED 표시
  display.setTextSize(3);
  display.setTextColor(WHITE);
  display.println(distance);
  display.setCursor(85, 20);
  display.setTextSize(3);
  
  #ifdef CommonSenseMetricSystem
    display.println("cm");
  #endif
  #ifdef ImperialNonsenseSystem
    display.println("in");
  #endif
  
  display.display();
  delay(500);
  display.clearDisplay();
  Serial.println(distance); // 디버그
}

회로도

Arduino UNO와 HC-SR04 초음파 센서, Adafruit OLED로 거리 측정하기

제조공정

  1. 거리 센서 작동 원리와 주요 응용 분야
  2. 아두이노 센서: 종류, 응용, 실전 프로젝트
  3. 지문 센서 기술: 작동 원리, 응용 및 아두이노 통합
  4. 라즈베리 파이와 파이썬으로 원격 온도 센서 만들기 – 단계별 가이드
  5. 라즈베리 파이 & DS18B20으로 다중 센서 온도 & 조도 모니터링 시스템 구축
  6. 라즈베리 파이 센서 및 액추에이터 제어 마스터하기: 가속도계, 서보 모터, 데이터 스트리밍
  7. 라즈베리 파이와 습도 센서로 자동 에어로포닉스 시스템 만들기
  8. 습도 센서 검증 및 보정으로 정밀 측정 달성하기
  9. Windows 10 IoT Core에서 SHT15로 정확한 온도 & 습도 모니터링
  10. 아두이노 나노 + 128x64 OLED로 실시간 셀룰러 오토마타 (생명 게임) 구현