Парктроник на Ардуино с дисплеем и LED

Парктроник Ардуино с дисплеем и светодиодами

Парктроник на Ардуино ► сделать просто, при этом можно использовать дисплей, световую и звуковую индикацию. Рассмотрим сборку проекта парктроника на Arduino Uno.

Парктроник для гаража на Ардуино сделать довольно просто, при этом можно использовать световую и звуковую индикацию для предупреждения о минимальном расстоянии. Использовать данный проект на ультразвуковых датчиках в автомобиле не рекомендуется, так как они обладают большой погрешностью и не защищены от влаги. Рассмотрим сразу несколько вариантов реализации проекта на Ардуино.

Парктроник на Ардуино своими руками

Парктроник на Ардуино RGB светодиодами

Первым делом необходимо решить проблему с ложными срабатываниями датчика, сделав в программе функцию с несколькими измерениями расстояния и расчета средне арифметического значения. Для этого в цикле for выполняем 10 измерений подряд, складывая полученный результат в общую сумму, а по окончании цикла полученную сумму делим на количество проведенных измерений, то есть на 10.

Скетч для вычисления среднего значения датчика HC-SR04

#include <Ultrasonic.h>            // импортируем библиотеку
Ultrasonic ultrasonic (11, 12);  // указываем пины для уз датчика

void setup() {
   Serial.begin(9600);
}

void loop() {
   // выполняем 10 измерений и складываем результат
   int distance, sum, total;
   for (byte i = 0; i <= 10; i++) {
      distance = ultrasonic.Ranging(CM);
      sum = sum + distance;
   }
   total = sum / 10;  // вычисляем среднее значение
   Serial.println("Distance - " + String(total));
}

Пояснения к коду:

  1. перед выполнением цикла for, необходимо обнулять переменные sum и total, поэтому мы их задаем в цикле, при этом они становятся равными нулю;
  2. алгоритм программы можно применять на любом датчике.

Ультразвуковой парктроник с дисплеем 1602

Для этого проекта нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • ультразвуковой дальномер HC-SR04;
  • дисплей LCD 1602 I2C;
  • светодиоды и резисторы;
  • RGB светодиоды Ардуино;
  • пьезодинамик;
  • провода папа-мама, папа-папа.
Ультразвуковой парктроник с дисплеем 1602
Схема. Ультразвуковой парктроник с дисплеем 1602

Для сборки парктроника с экраном следует подключить к плате ультразвуковой дальномер, пьезодинамик и LCD экран, как на картинке выше. В представленную выше программу остается лишь добавить функцию вывода расстояния на дисплей и условие для срабатывания зуммера. Время между измерениями и расстояние при котором будет включен предупредительный звуковой сигнал можно поменять в скетче.

Скетч. Парктроник на Ардуино с экраном жк

#include <Ultrasonic.h>            // импортируем библиотеку
Ultrasonic ultrasonic (11, 12);  // указываем пины для уз датчика

#include <Wire.h>
#include <LiquidCrystal_I2C.h>  // импортируем библиотеку для дисплея
LiquidCrystal_I2C LCD(0x27,20,4);

int del = 5;    // задержка между измерениями в мкс
int cm = 10;  // расстояние в см при котором сработает зуммер

void setup() {
   Serial.begin(9600);
   LCD.init();
   LCD.backlight();
   pinMode(7, OUTPUT);  // пин для подключения зуммера
}

void loop() {
   // выполняем 10 измерений и складываем результат
   int distance, sum, total;
   for (byte i = 0; i <= 10; i++) {
      distance = ultrasonic.Ranging(CM);
      sum = sum + distance;
      delay(del);
   }
   total = sum / 10;  // вычисляем среднее значение
   Serial.println("Distance - " + String(total));

   LCD.clear();  // очищаем экран дисплея и выводим расстояние
   LCD.setCursor(0,0);
   LCD.print("Distance - ");
   LCD.print(total);

   if (total > cm) { noTone(7); }
   if (total <= cm) { tone(7,100); }
}

Пояснения к коду:

  1. время задержки между измерениями и расстояние при срабатывании пьезодинамика можно поменять в начале кода, изменив значения del и cm;
  2. количество измерений можно увеличивать, но это увеличит время выполнения программы, не изменив принципиально качество измерения расстояния.

Ультразвуковой парктроник со светодиодами

Автомобильный парктроник со светодиодами на Ардуино
Схема. Автомобильный парктроник со светодиодами на Ардуино

Так как устройство не рекомендуется ставить на автомобиль из-за отсутствия влагостойкости у датчиков HC-SR04, то и дисплей не имеет смысла подключать к парктронику на Arduino Uno. Лучше всего использовать световую индикацию. В следующем варианте проекта используются красные, желтые и зеленые светодиоды для индикации расстояния от устройства до автомобиля, заезжающего в гараж.

Скетч. Парктроник на Ардуино со светодиодами

#include <Ultrasonic.h>            // импортируем библиотеку
Ultrasonic ultrasonic (11, 12);  // указываем пины для уз датчика

int del = 5;       // задержка между измерениями в мкс
int cm1 = 30;  // расстояние при котором включится зеленый светодиод
int cm2 = 20;  // расстояние при котором включится синий светодиод
int cm3 = 10;  // расстояние при котором включится красный светодиод
int cm4 = 5;    // расстояние при котором включится зуммер

void setup() {
   Serial.begin(9600);
   pinMode(7, OUTPUT);  // пин для подключения зуммера
   pinMode(2, OUTPUT);  // пин для зеленого светодиода
   pinMode(3, OUTPUT);  // пин для синего светодиода
   pinMode(4, OUTPUT);  // пин для красного светодиода
}

void loop() {
   // выполняем 10 измерений и складываем результат
   int distance, sum, total;
   for (byte i = 0; i <= 10; i++) {
      distance = ultrasonic.Ranging(CM);
      sum = sum + distance;
      delay(del);
   }
   total = sum / 10;  // вычисляем среднее значение
   Serial.println("Distance - " + String(total));

   if (total >= cm1) {
      digitalWrite(4, LOW); digitalWrite(3, LOW); digitalWrite(2, LOW);
   }
   if (total < cm1 && total >= cm2) {
      digitalWrite(4,LOW); digitalWrite(3,LOW); digitalWrite(2,HIGH);
   }
   if (total < cm2 && total > cm3) {
      digitalWrite(4,LOW); digitalWrite(3,HIGH); digitalWrite(2,LOW);
   }
   if (total <= cm3) {
      digitalWrite(4,HIGH); digitalWrite(3,LOW); digitalWrite(2,LOW);
   }

  if (total > cm4) { noTone(7); }
  if (total <= cm4) { tone(7,100); }
}

Пояснения к коду:

  1. в начале программы задаются переменные, которые можно поменять, настроив подходящий режим работы автомобильного парктроника на Ардуино;
  2. светодиоды одного цвета можно подключать к одному пину.

Гаражный ультразвуковой парктроник Arduino

Гаражный парктроник на Ардуино своими руками
Гаражный парктроник на Ардуино своими руками

В следующей программе реализована функция выключения звуковой сигнализации через 10 секунд (можно изменить в программе), т.е. когда машина уже остановилась. В схеме использованы RGB светодиоды 5 В, чтобы для питания использовать обычную зарядку от телефона. Схема сборки проекта на Ардуино остается прежней, а скачать скетч и файлы с макетом корпуса в Corel Draw для парктроника можно здесь.

Скетч для гаражного парктроника на Ардуино

#include <Ultrasonic.h>            // импортируем библиотеку
Ultrasonic ultrasonic (11, 12);  // указываем пины для уз датчика

int del = 5;       // задержка между измерениями в мкс
int cm1 = 30;  // расстояние при котором включится зеленый светодиод
int cm2 = 20;  // расстояние при котором включится синий светодиод
int cm3 = 10;  // расстояние при котором включится красный светодиод
int cm4 = 5;    // расстояние при котором включится зуммер

unsigned long currentTime;  // переменная для отсчета времени
int Time = 5000;  // через сколько мкс нужно отключить зуммер
byte t = 0;  // переменная для запоминания состояния зуммера

void setup() {
   Serial.begin(9600);
   pinMode(7, OUTPUT);  // пин для подключения зуммера
   pinMode(2, OUTPUT);  // пин для зеленого светодиода
   pinMode(3, OUTPUT);  // пин для синего светодиода
   pinMode(4, OUTPUT);  // пин для красного светодиода
}

void loop() {
   // выполняем 10 измерений и складываем результат
   int distance, sum, total;
   for (byte i = 0; i <= 10; i++) {
      distance = ultrasonic.Ranging(CM);
      sum = sum + distance;
      delay(del);
   }
   total = sum / 10;  // вычисляем среднее значение
   Serial.println("Distance  - " + String(total));

   if (total >= cm1) {
      digitalWrite(4, LOW); digitalWrite(3, LOW); digitalWrite(2, LOW);
   }
   if (total < cm1 && total >= cm2) {
      digitalWrite(4,LOW); digitalWrite(3,LOW); digitalWrite(2,HIGH);
   }
   if (total < cm2 && total > cm3) {
      digitalWrite(4,LOW);  digitalWrite(3,HIGH); digitalWrite(2,LOW);
   }
   if (total <= cm3) {
       digitalWrite(4,HIGH); digitalWrite(3,LOW); digitalWrite(2,LOW);
   }
   // зуммер выключится через заданный промежуток времени
   if (total > cm4) { t = 0; noTone(7); }
   if (t == 0 && total <= cm4) { t = 1; tone(7, 100); currentTime = millis(); }
   if (t == 1 && total <= cm4 && millis() - currentTime > Time) { t = 1; noTone(7); }
}

Пояснения к коду:

  1. зуммер выключится через заданный промежуток времени, благодаря изменению переменной t = 1; при включении пьезодинамика;
  2. при расстоянии больше cm4 переменная t снова становится равной нулю и пьезодинамик снова включится.
1 Star2 Stars3 Stars4 Stars5 Stars (3 votes, average: 5,00 out of 5)
Загрузка...

Похожие записи по теме:

2 комментариев для “Пример: Парктроник на Ардуино с дисплеем и LED”

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *