Парктроник на Arduino с ручной регулировкой расстояния

Наверное, одним из базовых проектов на arduino я является парктроник. Но в этой статье будет описано создание не обычного парктроника, а парктроника с ручной регулировкой критического расстояния. В процессе создания этого устройства вы повысите свои навыки в схемотехнике и программировании.

Основные компоненты:

• плата arduino Nano/Uno
• ультразвуковой датчик расстояния HC-CR04
• 6 светодиодов
• 6 резисторов на 220 Ом
• 2 резистора на 10 KOm
• 2 тактовые кнопки
• пьезо пищалка
• бред- борд
• провода папа-папа
• губка для обуви (для корпуса)

Из инструментов:

• паяльник
• термо — клей

Рассмотрим алгоритм работы устройства

После просмотра алгоритма соберём схему на бред борде:

Так как я монтировал схему в корпус, было принято решение сделать мини шилды кнопок и светодиодов.

Корпус устройство был сделан из коробочки от губки для обуви.
Так выглядит устройство внутри.

Посмотрим код.

int switch1 = 9; // Кнопка 1
int switch2 = 10; // Кнопка 2
int pin = 2;
int bin = 40; // Начальное критическое расстояние в сантиметрах!!!
int echoPin = 12; // Echo пин на модуле HC-SR04
int trigPin = 11; // Trig пин на модуле HC-SR04
int buz = 8; // Пин пищалки
boolean lBut1 = LOW;
boolean lBut2 = LOW;
boolean cBut1 = LOW;
boolean cBut2 = LOW;
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(switch1,INPUT);
pinMode(switch2,INPUT);
pinMode(2,OUTPUT); // Светодиод 1
pinMode(3,OUTPUT); // Светодиод 2
pinMode(4,OUTPUT); // Светодиод 3
pinMode(5,OUTPUT); // Светодиод 4
pinMode(6,OUTPUT); // Светодиод 5
pinMode(7,OUTPUT); // Светодиод 6
pinMode(8,OUTPUT); // Пищалка
}
boolean debounce(boolean last)
{
boolean current = digitalRead (switch1);
if (last !=current)
{
delay(5);
current = digitalRead (switch1);
}
return current;
}
boolean debounce2(boolean last2)
{
boolean current2 = digitalRead (switch2);
if (last2 !=current2)
{
delay(5);
current2 = digitalRead (switch2);
}
return current2;
}
void loop() {
int duration, cm;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
cm = duration / 58;
Serial.print(cm);
Serial.println(" cm");
delay(10);

cBut1 = debounce(lBut1);
if (lBut1 == LOW && cBut1 == HIGH)
{
pin=pin-1;
bin=bin-7; // Цифра 7 значит отнятие на 7 см от критического расстояния!!!
}
lBut1 = cBut1;
digitalWrite(pin,HIGH);
cBut2 = debounce2(lBut2);
if (lBut2 == LOW && cBut2 == HIGH)
{
pin=pin+1;
bin=bin+7; // Цифра 7 значит прибавление на 7 см от критического расстояния!!!
}
lBut2 = cBut2;
digitalWrite(pin,LOW);

if (cm<bin && cm>0)
{
tone(8,200,200);
delay(300);

}
else
{
noTone(8);
}
}

Значения bin можно менять, на более удобное для вас.

В итоге прибор исправно выполняет свои функции.

Данная статья поможет вам сделать такой же парктроник без особых сил.
Желаю всем удачи в повторении данного устройства. Надеюсь мой гайд был полезен для вас.

Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

Источник: usamodelkina.ru