В этом крафте покажу как сделать парктроник на Arduino при помощи ультразвукового дальномера HC-SR04. Дешевый и простой в использовании дальномер подойдет также для создания навигации в робототехнике, чтобы объезжать препятствия. Его также можно использовать при создании сигнализации или управлении освещением.
Ультразвуковой шилд HC-SR04 для Arduino или Ultrasonic sensor, работает по принципу эхо-локации излучает звуковую волну и принимает отраженный эхо-сигнал. Время между отправленным и принятым сигналом можно преобразовать в расстояние.
Видео ультразвуковой парктроник на Arduino
Чтобы сделать парктроник своими руками понадобится

- Arduino
- Ультразвуковой дальномер HC-SR04
- Светодиоды — 6шт.
- Резисторы 220Ом — 6шт.
- Провода папа-папа
- Пьезодинамик — 1шт.
- Макетная плата
Делаем парктроник при помощи Arduino и датчика HC-SR04
На макетной плате размещаем 6 светодиодов. У светодиодов минус будет общим. Катод ( короткая ножка) подсоединяем к минусовой шине на макетной плате.

К длинным ножкам светодиодов (анод) подключаем резистор 220Ом, без него светодиод сгорит.

По центру устанавливаем ультразвуковой датчик.


Дальномер HC-SR04 имеет 4 ножки:
- Vcc — питание 5В
- Echo — выход
- Trig — вход
- GND — земля 0В
К ножкам датчика парктроника подключаем провода. Echo будет соединен с 12-м контактом, а Trig с 13-м. GND к земле на плате микроконтроллера, а Vcc соответственно к выводу 5В на Arduino.

Также подключаем провода к ножкам резисторов. И последовательно к пинам Arduino от 2 до 7.

Пьезопищалка имеет два контакта плюс и минус. Отрицательный контакт можно объединить с минусом от ультразвукового дальномера. А положительный соединить с 11 пином на плате Arduino UNO.
Код программы для парктроника на Arduino
Чтобы схема парктроника на Arduino заработала, необходимо написать и загрузить скетч (код программы).
При приближении на указанную в скетче дистанцию будут загораться последовательно светодиоды и звучать сигнал разной тональности, который предупредит об опасном сближении.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
#define trigPin 12 // объявление
#define echoPin 13 // переменных
#define led 2
#define led2 3
#define led3 4
#define led4 5
#define led5 6
#define led6 7
#define buzzer 11
int sound = 250;
void setup() {
Serial.begin (9600); // настройка
pinMode(trigPin, OUTPUT); // портов
pinMode(echoPin, INPUT);
pinMode(led, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(buzzer, OUTPUT);
}
void loop() {
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); // чтобы начать измерения,
delayMicroseconds(10); // необходимо на вход trigPin подать высокий сигнал 5В на 10мкс
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH); // с выхода echoPin считывается как долго был открыт порт
distance = (duration/2) / 29.1; // преобразование полученного параметра в дистанцию
if (distance <= 30) { // первое условие, если расстояние меньше либо равно 30,
digitalWrite(led, HIGH); // тогда включить первый светодиод
sound = 250;
}
else {
digitalWrite(led,LOW); // если условие не выполняется, выключить светодиод
}
if (distance < 25) {
digitalWrite(led2, HIGH);
sound = 260;
}
else {
digitalWrite(led2, LOW);
}
if (distance < 20) {
digitalWrite(led3, HIGH);
sound = 270;
}
else {
digitalWrite(led3, LOW);
}
if (distance < 15) {
digitalWrite(led4, HIGH);
sound = 280;
}
else {
digitalWrite(led4,LOW);
}
if (distance < 10) {
digitalWrite(led5, HIGH);
sound = 290;
}
else {
digitalWrite(led5,LOW);
}
if (distance < 5) {
digitalWrite(led6, HIGH);
sound = 300;
}
else {
digitalWrite(led6,LOW);
}
if (distance > 30 || distance <= 0){
Serial.println("***");
noTone(buzzer);
}
else {
Serial.print(distance); // выводит расстояние в сантиметрах
Serial.println(" cm"); // в мониторе последовательного порта
tone(buzzer, sound); // задает соответствующий тон пьезодинамика
}
delay(500); // задержка пол сикунды
}
|
Заключение
На основе Ультразвуковых датчиков можно сделать много полезных Arduino проектов. Один из них ультразвуковй дальномер с индикацией или проще говоря парктроник на Arduino. Вместо светодиодной индикации есть возможность использовать LCD, OLED дисплеи или семисегментный индикатор.
INDYCRAFT Площадка DIY проектов сделанных своими руками







Крутой проект! Видел похожий для гаража с точечным дисплеем здесь http://ngin.pro/arduino/215-parktronik-dlya-garazha-na-arduino.html