Всем Доброго Времени Суток! В этой статье я хотел бы рассказать, как с помощью Arduino, набора светодиодов и ультразвукового датчика можно собрать устройство, определяющее расстояние от наблюдателя до объекта, иными словами, дальномер. И так поехали!
Что нам необходимо:
Обычная коробка. Желательно небольших размеров, так как в ней будет находится всего лишь один микроконтроллер.
С помощью ультразвукового датчика HC-SR04 мы сможем определять расстояние.
Четырехразрядный индикатор нам нужен для вывода полученных значений.
Набор светодиодов любых цветов (я использовал зеленый, так как они ярче), резисторов на 220 Ом, проводов или же перемычек, а также макетную плату.
Чтобы компоненты нашего устройства надежно крепились, я буду их спаивать.
Для этого нам нужен паяльник, флюс, припой, а также макетная плата под пайку.
Ну и конечно же, без Arduino нам не обойтись! (Можно выбрать любой микроконтроллер, я предпочел Arduino Leonardo или же ее эквивалент Iskra Neo)
Из инструментов нам нужен паяльник, как я говорил выше, ножик и кусачки.
Теперь приступим к сборке устройства.
Шаг№1
Для начало, используя breadboard, соберем прототип нашего будущего устройства. Выглядеть это будет примерно так..
Не беспокойтесь! Страшного в этой путанице проводов ничего нет!
У датчика HC-SR04 четыре контакта: плюс, минус (которые мы втыкаем в 5V и GND контроллера), Trig и Echo (вставляем в 12 и 11 пины ардуино соответственно)
У четырехразрядного индикатора 3 провода: питание, земля и сигнальный. Последний соединяем с 9 пином Arduino.
Три светодиода подсоединяем к 6, 5 и 4 контактам контроллера последовательно с резисторами. Не забываем про полярность. Ток течет от более длинной ножке к короткой.
Все, когда мы собрали наш прибор на макетке, загрузили скетч (будет в конце статьи) и удостоверились, что все работает, смело приступаем к пайке.
Шаг№2
Для начала припаяем ультразвуковой датчик к макетной плате. Я использовал небольшую по своим размерам макетку, так как количество элементов не превышает 7.
После этого при помощи кусачек откусим ножки (извиняюсь за тавтологию), сделав их короче, чтобы не мешались и на вид были красивее!
После этого припаяем четыре провода на против контактов датчика.
Также не забываем про кусачки!
Шаг№3
Датчик на месте, осталось припаять три светодиода вместе с резисторами.
С обратной стороны это выглядит вот так:
Шаг№4
На боковой части коробки вырежем круглое отверстие для питания.
На крышке необходимо вырезать полость под размер (чуть меньше по длине) вашей макетки, а также просверлить отверстия для саморезов.
Теперь если мы прикрутим пустую макетку без элементов на ней (я это сделал просто для демонстрации..) получится примерно следующее:
Шаг№5
Так, чтобы было удобнее я предлагаю сначала соединить провода с ардуинкой, а уже потом прикручивать макетку к крышке коробки. Также не забудем про наш индикатор, который я расположил выше макетки.
Все на этом сборка устройства закончена!
Осталось лишь загрузить следующий скетч и наслаждать игрушкой!
#include
#include
NewPing sonar(12,11, 400);
int a,j,b;
unsigned long t = 0;
int masiv[]={1,0,0,0,1,0,0,0,1};
void setup()
{
for(int i=4; i<7;i++)
{
pinMode(i,OUTPUT);
}
displayClear(9);
for(int i=4; i<7;i++)
{
digitalWrite(i,0);
}
}
void loop()
{
j=7;
for(int i=0; i100) tone(2,70);
digitalWrite(j,masiv[i]);
while(millis() <= t + b )
{
delay(50);
a = sonar.ping_cm();
displayInt(9, a);
b=a;
}
t = millis();
if(j==4) j=7;
if (i==8)
{
digitalWrite(4,1);
while(millis() <= (t + b)+(b*2) )
{
delay(50);
a = sonar.ping_cm();
displayInt(9, a);
b=a;
}
digitalWrite(4,0);
t = millis();
}
}
Пару слов у программном коде. Благодаря ему, наши три светодиода станут мигать поочередно друг за другом, а скорость их мигания будет зависеть от расстояния до объекта, которое вычисляет ультразвуковой датчик. Но чтобы осуществить мигание светодиодов не совсем логично использовать функцию delay(), поскольку при ее применении контроллер замирает и никакие вычисления не производятся. Есть несколько способов для решения этой проблемы. В частности одни из них - использование функции millis(), которая возвращает число в миллисекундах с момента работы контроллера. И как же нам осуществить задержку на условные 100 миллисекунд? Для этого я создал по сути пустой цикл, выход из которого будет только после этих 100 миллисекунд, а затем программа переходит к включению/выключению светодиодов.
Ну на этом все! Спасибо, что прочитали эту статью до конца. Надеюсь вам она не только понравилась, но и вдохновила на море новых поделок и изобретений!
Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.