Устройство для бесконтактного измерения роста человека на основе Arduino
Если у вас есть дети, которые любят измерять свой рост каждый день, и вам неохота заниматься этим вручную, прикладывая линейку к стенке на уровне головы, то вам может помочь приведенное в данном проекте устройство на основе Arduino, которое позволит автоматизировать измерение роста.

Это устройство очень просто в сборке и состоит только из нескольких компонентов:
- Arduino Nano
- Ультразвуковой датчик HC SR04
- ЖК дисплей
- Зуммер
- Аккумулятор или батарейки
Теперь давайте объясним, как оно работает. После сборки и программирования необходимо установить устройство с помощью двухстороннего клея на определенной высоте, которая предварительно определена в коде и обозначена буквой H на картинке.

Когда кто-то встает под устройством, датчик измеряет расстояние D. Затем код вычисляет расстояние H-D, которое фактически представляет собой рост человека под устройством H1, и отображает это значение на ЖК-дисплее. Библиотека «LcdBarGraph» помогает нарисовать горизонтальную гистограмму, где длина полосы пропорциональна предоставленным значениям. Когда под устройством никого нет, рассчитанное значение равно нулю, потому что в этом случае H = D, и H-D равно нулю. Устройство монтируется в подходящую коробку с ЖК-дисплеем спереди и ультразвуковым датчиком внизу.
Схема подключения электронных компонентов измерителя роста следующая.

Код программы измерителя роста на Arduino приведен далее.
#include <LiquidCrystal.h>
#include <LcdBarGraph.h>
// Максимальное расстояние, на которое мы хотим сканировать пространство (в сантиметрах)
#define max_distance 200
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
LcdBarGraph lbg(&lcd, 16, 0, 1); // Создает объект LCD Bargraph
const int trigPin = 9;
const int echoPin = 10;
long duration;
int distance;
int distance1;
int speakerPin = 8;
void setup()
{
lcd.begin(16,2); // Инициализирует интерфейс к ЖК-экрану
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop()
{
// Записать импульс на вывод триггера HC-SR04
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Измерить ответ от эхо-контакта HC-SR04
duration = pulseIn(echoPin, HIGH);
// Определить расстояние в зависимости от продолжительности
// Используем скорость звука 343 метра в секунду
distance= duration*0.034/2;
distance1= 180 - distance ;
// Вывести «Расстояние: <значение>» в первой строке ЖК-дисплея
if (distance1 > 100) {
tone (speakerPin, 1000);
} else {
noTone (speakerPin);
}
lcd.setCursor(0,0);
lcd.print("HEIGHT: ");
lcd.print(distance1);
lcd.print(" cm ");
// Рисуем гистограмму во второй строке ЖК
lcd.setCursor(0,1);
lbg.drawValue(distance1, max_distance);
delay(500);
}
© digitrode.ru