image

Не так давно я увлекся Ардуино. Папа это приметил и попросил меня сделать парктроник.

Видео


В этом видео содержимое почти всего поста:



Компоненты


Для парктроника я использовал:

1. Текстовый экран 16×2;
2. Переменный резистор x2;
3. Ультразвуковой дальномер HC-SR04;
4. Arduino Nano или Arduino Uno;
5. Пьезо-пищалку;
6. Зеленый светодиод 5 мм;
7. Провода папа-папа x25;
8. Breadboard.

История развития


Первая версия представляла из себя датчик расстояния и спикер, пикающий с частотой (разы в секунду), почти пропорциональной расстоянию. Потом я добавил экран и резистор для изменения контрастности. Вскоре мне начало надоедать постоянное громкое пикание во время тестов и я поставил резистор для изменения громкости звучания. Так парктроник приобрел свой конечный вид.

Я планирую добавить сервопривод, ибо покупать еще два дальномера для более точного ориентирования жирновато. Серва будет крутить дальномер на 3 позиции.

Скетч и итог


Скетч
Извините за отсутствие комментариев.

#include <LiquidCrystal.h>

LiquidCrystal lcd(4, 5, 10, 11, 12, 13);

void setup() 
{
lcd.begin(16, 2);
pinMode(2, INPUT);
pinMode(3, OUTPUT);
pinMode(6, OUTPUT);
lcd.print("Loading");
lcd.setCursor(0, 1);
delay(100);
for(int i=0;i<16;i++){
lcd.print("#");
delay(500);
};
lcd.clear();
lcd.print("Hi, %username%!");
delay(2000);
lcd.clear();
}

void loop() 
{
int du, di;
if(digitalRead(7)){digitalWrite(9, 1);};
digitalWrite(3, 1);
delayMicroseconds(2000);
digitalWrite(3, 0);
du=pulseIn(2,1);
di=(du/2)/29.1;
noTone(6);
if(di>100){noTone(6);}
if(di<100&di>80){
lcd.print("Distance: ");
lcd.print(di);
lcd.print(" cm");
tone(6, 3500,500);
delay(1000);
lcd.clear();
}
if(di<80&di>60){
lcd.print("Distance: ");
lcd.print(di);
lcd.print(" cm");
tone(6, 3500,500);
delay(800);
lcd.clear();
}
if(di<60&di>40){
lcd.print("Distance: ");
lcd.print(di);
lcd.print(" cm");
tone(6, 3500,500);
delay(600);
lcd.clear();
}
if(di<40&di>20){
lcd.print("Distance: ");
lcd.print(di);
lcd.print(" cm");
tone(6, 3500,500);
delay(400);
lcd.clear();
}
if(di<20&di>10){
lcd.print("Distance: ");
lcd.print(di);
lcd.print(" cm");
tone(6, 3500,500);
delay(300);
lcd.clear();
}
if(di<10){
lcd.print("WARNING!!!!");
tone(6, 2500,500);
lcd.clear();
};
}



Девайс получился качественный и полезный, собирать легко, а компоненты стоят дешево (если брать из Китая).

Был приобретен опыт в работе с текстовыми дисплеями и датчиком расстояния.

Аналоги стоят раза в 4 дороже (самые дешевые!!!).

На этом я завершаю пост, всем удачного творчества!