Измерение расстояния HC-SR04 + OLED SSD1306 на Arduino UNO
Компоненты
- Arduino UNO — 1 шт.
- Ультразвуковой датчик HC-SR04 — 1 шт.
- OLED-дисплей 128×64 (SSD1306, I2C, адрес 0x3C) — 1 шт.
Библиотеки
Adafruit_GFXAdafruit_SSD1306Wire,SPI(встроены)
Подключение
| Arduino | HC-SR04 |
|---|---|
| D13 | Trig |
| D12 | Echo |
| 5V | VCC |
| GND | GND |
| Arduino | OLED SSD1306 |
|---|---|
| A4 (SDA) | SDA |
| A5 (SCL) | SCL |
| 3.3V/5V | VCC |
| GND | GND |
Принцип работы HC-SR04
- На Trig подаётся импульс 10 мкс.
- Датчик излучает 8 ультразвуковых пачек на 40 кГц.
- Echo удерживает HIGH время, равное doubled времени полёта.
- Расстояние (см) = (длительность_импульса / 2) / 29.1
Код скетча
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define trigPin 13
#define echoPin 12
#define OLED_RESET 4
#define CommonSenseMetricSystem
Adafruit_SSD1306 display(OLED_RESET);
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
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.clearDisplay();
display.setCursor(22, 20);
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);
Serial.println(distance); // отладка
}
Настройка OLED
display.begin(SSD1306_SWITCHCAPVCC, 0x3C)— инициализация I2C-адреса 0x3C (128×64).display.clearDisplay()— очистка буфера.display.setCursor(x,y),setTextSize(),setTextColor(WHITE)— форматирование.display.display()— вывод буфера на экран (обязательно!).
Схема
Схема подключения доступна в разделе «Schematics» (Fritzing PNG).
Производственный процесс
- Принцип работы датчиков расстояния и их ключевые применения
- Arduino-датчики: типы, применения и реальные проекты
- Технология датчиков отпечатков пальцев: принципы работы, применение и интеграция с Arduino
- Создание удалённого датчика температуры на Raspberry Pi и Python — пошаговое руководство
- Создание многодатчиковой системы мониторинга температуры и света с Raspberry Pi и DS18B20
- Мастерство управления датчиками и исполнительными механизмами на Raspberry Pi: акселерометр, сервопривод и потоко…
- Создайте автоматизированную аэропоническую систему с Raspberry Pi и датчиком влажности
- Проверка и калибровка датчика влажности для точных измерений
- Точный мониторинг температуры и влажности с SHT15 на Windows 10 IoT Core
- Клеточный автомат «Жизнь» Конвея на Arduino Nano с OLED 128x64