Читаоци су позвани на
домаће аутор Инструцтаблес под надимком Геарбокмакерс, који приказује удаљеност између објекта и тражила распона на индикатору скале, а ако је премален, свира мелодију.
Мајстор започиње рад на дизајну цртањем своје шеме:
Закључци за напајање даљиномјера нису приказани на дијаграму, али на самом даљиномјеру су доступне све потребне ознаке.
Регистар смена 74ХЦ595 (КР1564ИР52) овде је друга најважнија компонента после
Ардуино. Често се користе када требате да управљате многим теретима, користећи само два излаза из микроконтролера. Врло поједностављено, њихов принцип деловања се може описати на следећи начин. Утипкавате тастатуру - физичку или екрану. Наравно, истовремено притискате тастере заредом, редом. Резултат је линија, чије знакове истовремено можете видети на екрану - паралелно. Број контролисаних оптерећења лако се повећава додавањем више регистара померања у ланац. Број излаза микроконтролера неће се повећавати, али с константном брзином преноса података, максимална фреквенција с којом се може укључити и искључити сваки од оптерећења.
Пошто се број истовремено укључених ЛЕД-ова мења, мастер не успева да управља једним заједничким отпорником - морате додати отпорник на сваку ЛЕД.
Чаробњак саставља уређај
уради сам на плочи плоче типа перфбоард и повезује неколико проводника са Ардуином, који служе за паралелизацију далековода и заједничку жицу, као и за размену података са микроконтролером. Контролни сигнали из регистара смене, емитер звука и емитер даљиномјера преносе се из Ардуино-а у уређај, а сигнали које генерише пријемник даљиномјера по пријему рефлектираних осцилација преносе се на уређај. Затим се плоча приказује делимично састављеном:
Чаробњак почиње да ради на софтверу, добија следећу скицу:
/ *
** Направио: Цхарлес Муцхене
** @цхарлесмуцхене
**
** Датум: 3. октобар 2013
**
** Време: 1412хрс
**
** Шифра бројила
** Систем мери растојање
** коришћењем ХЦ-СР04 ултразвучног сензора
** и преводи у серију
** упаљених ЛЕД-ова
**
** Забавите се и подебљајте!
* /
/ * Библиотека за мелодијске терене
** Описује фреквенције које се производе * /
#инцлуде "питцхес.х"
цонст инт покрећеПин = 10; // окидач (зелена)
цонст инт ецхоПин = 9; // ецхо пин (наранџасти)
цонст инт тонеПин = 8; // тонски пин (вхилте-блуе)
цонст инт сериалДатаПин = 7; // серијски дата пин (наранџасти)
цонст инт регистерЦлоцкПин = 6; // региструјте пин сата (браон)
цонст инт схифтРегистерЦлоцкПин = 5; // помицање регистра такт
цонст инт нумОфРегистерс = 16; // број регистра
цонст бооле регистар [нумОфРегистерс]; // региструј низ
инт литЛЕДс = 0; // лед бројач пинова
инт распон = 100; // вредност распона
инт дистанце; // удаљеност
цонст инт цоунт = распон / нумОфРегистерс; // (метри по ЛЕД-у)
// старт уп мелодија
инт мелодија [] = {НОТЕ_Ц4, НОТЕ_Г3, НОТЕ_Г3, НОТЕ_А3, НОТЕ_Г3, 0, НОТЕ_Б3, НОТЕ_Ц4, НОТЕ_ДС8, НОТЕ_ДС8};
// мелодија критичне дистанце
инткритичнаМелоди [] = {НОТЕ_ДС8, НОТЕ_ДС8, НОТЕ_ДС8, НОТЕ_ДС8};
// трајање ноте: 4 = четвртина белешке, 8 = осма нота итд.
инт нотеДуратионс [] = {4, 8, 8, 4, 4, 4, 4, 4, 4, 2};
инткритичкиНотеДуратионс [] = {4, 4, 4, 4};
подешавање празнине ()
{
/ * Пин конфигурације * /
пинМоде (окидачПин, ОУТПУТ);
пинМоде (ецхоПин, ИНПУТ);
пинМоде (сериалДатаПин, ОУТПУТ);
пинМоде (регистерЦлоцкПин, ОУТПУТ);
пинМоде (схифтРегистерЦлоцкПин, ОУТПУТ);
/ * Упали их * /
лигхтЕмУп ();
/ * Покрени мелодију * /
плаиМелоди ();
/ * Искључите све ЛЕД * /
цлеарРегистерс ();
} // подешавање
/ * Удаљеност од ХЦ-СР04 * /
инт гетДистанце ()
{
дигиталВрите (окидачПин, ЛОВ);
делаиМицросецондс (2);
/ * Пошаљи сигнал окидача * /
дигиталВрите (окидачПин, ХИГХ);
делаиМицросецондс (10);
дигиталВрите (окидачПин, ЛОВ);
/ * повратна удаљеност у центиметрима * /
повратак (пулсеИн (ецхоПин, ХИГХ) / 2) / 29.1;
} // доћи до удаљености
// свети све леде
воид лигхтЕмУп ()
{
фор (инт пин = 0; пин <нумОфРегистерс; пин ++)
региструје [пин] = ВИСОКО;
вритеРегистерс ();
} // упали их
// подесите све пинове за регистар на ЛОВ
воид цлеарРегистерс ()
{
фор (инт и = нумОфРегистерс - 1; и> = 0; и--)
региструје [и] = ЛОВ;
вритеРегистерс ();
} // јасни регистри
/ * Напишите регистарске вредности и сачувајте их
воид вритеРегистерс ()
{
/ * Са ниским подешеним пиновима за регистрацију
** садржај регистра складишта
** се не мењају променљивим вредностима регистра померања
** /
дигиталВрите (регистерЦлоцкПин, ЛОВ);
/ * Прегледајте све регистре * /
фор (инт и = нумОфРегистерс - 1; и> = 0; и--)
{
дигиталВрите (схифтРегистерЦлоцкПин, ЛОВ);
инт вал = региструје [и];
дигиталВрите (сериалДатаПин, вал);
дигиталВрите (схифтРегистерЦлоцкПин, ХИГХ);
} // петља све регистре
/ * Овај сигнал премешта садржај
** регистра померања у регистре складишта
* /
дигиталВрите (регистерЦлоцкПин, ХИГХ);
} // писати регистре
// поставите појединачни пин ХИГХ или ЛОВ
воид сетРегистерПин (инт индекс, инт вредност)
{
региструје [индекс] = вредност;
} // подесите вредност пин пин-а
/ * Репродукуј уМелоди * /
воид плаиМелоди ()
{
фор (инт тхисНоте = 0; тхисНоте <10; тхисНоте ++)
{
/ * Да бисте израчунали трајање белешке,
одвојите једну секунду подељену према врсти белешке
/ * нпр. четвртина напомена = 1000/4,
** осма нота = 1000/8, итд. * /
инт нотеДуратион = 1000 / нотеДуратионс [оваНоте];
тон (тонПин, мелодија [оваНоте], нотеДуратион);
/ * Да бисте разликовали белешке, поставите минимално време између њих.
** чини се да трајање белешке + 30% делује добро * /
инт паусеБет БетвеенНотес = нотеДуратион * 1.30;
кашњење (паусеБет БетвеенНотес);
ноТоне (8);
} // све белешке
} // плаи старт уп мелодија
/ * Критичка мелодија * /
воид плаиЦритицалМелоди ()
{
фор (инт тхисНоте = 0; тхисНоте <4; тхисНоте ++)
{
инт нотеДуратион = 1000 / нотеДуратионс [оваНоте];
тон (тонПин, критичнаМелодија [оваНоте], нотеДуратион);
/ * Да бисте разликовали белешке, поставите минимално време између њих.
** чини се да трајање белешке + 30% делује добро * /
инт паусеБет БетвеенНотес = нотеДуратион * 1.30;
кашњење (паусеБет БетвеенНотес);
ноТоне (8);
} // обришите све белешке
} // репродукује критичку мелодију
воид петља ()
{
/ * Гет дистанце * /
дистанце = гетДистанце ();
/ * Израчунајте ЛЕД светла * /
иф (домет> = удаљеност)
литЛЕДс = (домет - удаљеност) / цоунт;
друго
литЛЕДс = -1;
/ * Светлосне ЛЕД диоде у зависности од израчунатог удаљености * /
фор (инт пин = 0; пин <нумОфРегистерс; пин ++)
{
иф (пин <= литЛЕД)
сетРегистерПин (пин, ХИГХ);
друго
сетРегистерПин (пин, ЛОВ);
} // за петљу
вритеРегистерс (); // ефекат се мења
/ * Репродукујте мелодију критичне близине * /
иф (литЛЕД> = 13)
плаиЦритицалМелоди ();
} // петља
/ ******************************************************
* Дефиниција „Питцхес.х“
*
* Јавне константе
* Константе представљају фреквенције тона
* одговарајућих нота на стандардном концерту
* подешавање инструмента попут клавира
****************************************************** /
#дефине НОТЕ_Б0 31
#дефине НОТЕ_Ц1 33
#дефине НОТЕ_ЦС1 35
#дефине НОТЕ_Д1 37
#дефине НОТЕ_ДС1 39
#дефине НОТЕ_Е1 41
#дефине НОТЕ_Ф1 44
#дефине НОТЕ_ФС1 46
#дефине НОТЕ_Г1 49
#дефине НОТЕ_ГС1 52
#дефине НОТЕ_А1 55
#дефине НОТЕ_АС1 58
#дефине НОТЕ_Б1 62
#дефине НОТЕ_Ц2 65
#дефине НОТЕ_ЦС2 69
#дефине НОТЕ_Д2 73
#дефине НОТЕ_ДС2 78
#дефине НОТЕ_Е2 82
#дефине НОТЕ_Ф2 87
#дефине НОТЕ_ФС2 93
#дефине НОТЕ_Г2 98
#дефине НОТЕ_ГС2 104
#дефине НОТЕ_А2 110
#дефине НОТЕ_АС2 117
#дефине НОТЕ_Б2 123
#дефине НОТЕ_Ц3 131
#дефине НОТЕ_ЦС3 139
#дефине НОТЕ_Д3 147
#дефине НОТЕ_ДС3 156
#дефине НОТЕ_Е3 165
#дефине НОТЕ_Ф3 175
#дефине НОТЕ_ФС3 185
#дефине НОТЕ_Г3 196
#дефине НОТЕ_ГС3 208
#дефине НОТЕ_А3 220
#дефине НОТЕ_АС3 233
#дефине НОТЕ_Б3 247
#дефине НОТЕ_Ц4 262
#дефине НОТЕ_ЦС4 277
#дефине НОТЕ_Д4 294
#дефине НОТЕ_ДС4 311
#дефине НОТЕ_Е4 330
#дефине НОТЕ_Ф4 349
#дефине НОТЕ_ФС4 370
#дефине НОТЕ_Г4 392
#дефине НОТЕ_ГС4 415
#дефине НОТЕ_А4 440
#дефине НОТЕ_АС4 466
#дефине НОТЕ_Б4 494
#дефине НОТЕ_Ц5 523
#дефине НОТЕ_ЦС5 554
#дефине НОТЕ_Д5 587
#дефине НОТЕ_ДС5 622
#дефине НОТЕ_Е5 659
#дефине НОТЕ_Ф5 698
#дефине НОТЕ_ФС5 740
#дефине НОТЕ_Г5 784
#дефине НОТЕ_ГС5 831
#дефине НОТЕ_А5 880
#дефине НОТЕ_АС5 932
#дефине НОТЕ_Б5 988
#дефине НОТЕ_Ц6 1047
#дефине НОТЕ_ЦС6 1109
#дефине НОТЕ_Д6 1175
#дефине НОТЕ_ДС6 1245
#дефине НОТЕ_Е6 1319
#дефине НОТЕ_Ф6 1397
#дефине НОТЕ_ФС6 1480
#дефине НОТЕ_Г6 1568
#дефине НОТЕ_ГС6 1661
#дефине НОТЕ_А6 1760
#дефине НОТЕ_АС6 1865
#дефине НОТЕ_Б6 1976
#дефине НОТЕ_Ц7 2093
#дефине НОТЕ_ЦС7 2217
#дефине НОТЕ_Д7 2349
#дефине НОТЕ_ДС7 2489
#дефине НОТЕ_Е7 2637
#дефине НОТЕ_Ф7 2794
#дефине НОТЕ_ФС7 2960
#дефине НОТЕ_Г7 3136
#дефине НОТЕ_ГС7 3322
#дефине НОТЕ_А7 3520
#дефине НОТЕ_АС7 3729
#дефине НОТЕ_Б7 3951
#дефине НОТЕ_Ц8 4186
#дефине НОТЕ_ЦС8 4435
#дефине НОТЕ_Д8 4699
#дефине НОТЕ_ДС8 4978
Након завршетка монтаже и попуњавања скице, чаробњак показује да је успео:
Уређај може, на пример, обавестити запосленог у фото продавници, копирању, поправци метала итд. о изгледу клијента.