- Компоненте потребне
- АПДС9960 РГБ и сензор геста
- Кружни дијаграм
- Објашњење кода
- Тестирање додира без додира контролисаним гестама
У ово време пандемије Цорона, лифтови су постали место високог ризика где сви додирују исте дугмиће. Људи су на многим местима открили трикове како би спречили контакт са дугметима лифта, попут употребе папира за пумпање, чачкалица или хигијенских марамица за притискање дугмади за подизање.
Дакле, у наставку наших претходних Цорона пројеката безбедности, као што су аутоматска машина за дезинфекцију, бесконтактно надгледање температуре и детектор социјалне удаљености, овде ћемо направити прототип дизала који контролише покрет и користи Ардуино Нано.
Овај бесконтактни лифт користи Ардуино Нано, АПДС9960 сензор покрета и ОЛЕД модул за приказ. Помоћу ове контролне табле засноване на гестама, лако можете да контролишете свој лифт подизањем руке. Сензор АПДС9960 користи се за читање покрета. Покрети ГОРЕ и ДОЛЕ користе се за подешавање броја пода, леви гест је затварање врата лифта и померање лифта према броју пода, а десни гест се користи за отварање врата.
Компоненте потребне
- Ардуино Нано
- ОЛЕД модул екрана
- АПДС9960 РГБ и сензор геста
- Бреадбоард
- Јумпер Вирес
АПДС9960 РГБ и сензор геста
АПДС9960 РГБ & Гестуре Детецтион Модуле је мала преломна плоча која се испоручује са уграђеним АПДС-9960 сензором, УВ и ИР филтрима за блокирање, четири одвојене диоде осетљиве на различите правце и И2Ц компатибилним интерфејсом. Овај сензор се може користити за мерење амбијенталног светла и боја, детекцију близине и осетљивост покрета без додира. Има опсег детекције геста од 10 до 20 цм и може се користити за управљање микроконтролером, роботом и у многим другим пројектима.
Карактеристике:
- Оперативни напон: 2.4В до 3.6В
- Опсег рада: 4-20ин (10-20цм).
- И2Ц интерфејс (И2Ц адреса: 0к39).
- Амбијентално светло и РГБ осетљивост боја, близина
- Детекција и детекција геста у оптичком модулу
- Интерфејс компатибилан са брзим режимом И2Ц-бус са брзинама података до 400 кХз.
Кружни дијаграм
Дијаграм споја за бесконтактни лифт који користи АПДС9960 дат је у наставку.
Повезујемо Ардуино Нано са АПДС9960 сензором и ОЛЕД екраном. ВЦЦ и ГНД пинови и АПДС9960 сензора и ОЛЕД екрана повезани су на 3.3В и ГНД Ардуина. Док су СЦЛ и СДА пинови сензора АПДС9960 и ОЛЕД дисплеј повезани на А5 и А4 пинове Ардуино-а.
ОЛЕД & АПДС9960 Пин |
Ардуино Нано Пин |
ВЦЦ |
3.3в |
ГНД |
ГНД |
СЦЛ |
А5 |
СДА |
А4 |
Ево како ће изгледати комплетна поставка дизала којим управљају гестови помоћу Ардуина:
Да бисте сазнали више о ОЛЕД екрану и његовом повезивању са другим микроконтролерима, следите везу.
Објашњење кода
Комплетни код за бесконтактни лифт који користи АПДС9960 дат је на крају странице. Овде објашњавамо неке важне делове кода. У овом програму ћемо користити библиотеке АПДС9960 и Адафруит_СХ1106 . Библиотеку АПДС9960 може преузети Ардуино ИДЕ. Да бисте преузели библиотеку, идите на Скица> Менаџер библиотека> Претражи, а затим унесите Ардуино АПДС9960. Док библиотеку Адафруит_СХ1106 можете преузети овде.
Као и обично, започните код укључивањем свих потребних библиотека. Адафруит_СХ1106.х је измењена верзија оригиналне библиотеке Адафруит.
#инцлуде
У следећим редовима дефинишите променљиве за складиштење тренутног спрата и броја пода где корисник жели да иде.
инт флоорнум = 0; инт цуррентфлоор = 0;
Након тога унесите битмапе за слике стрелице горе, стрелице надоле, отворених врата и затворених врата. ХЕКС код за слику може се генерисати помоћу претварача попут Имаге2цпп. Да бисте сазнали више о томе како се користи Имаге2цпп, следите овај водич Ардуино КР генератора кода.
цонст непотписани знак горе ПРОГМЕМ = {0к00, 0к00, 0к00, 0к00, 0к00, 0к00, 0к00, 0к00, 0к00, 0к00, 0к00, 0к00, 0к00, 0к00, 0к00, 0к00, …………………………… ………………………………………………………..}; цонст непотписани знак надоле ПРОГМЕМ = {0к00, 0к00, 0к00, 0к00, 0к00, 0к00, 0к00, 0к00, 0к00, 0к00, 0к00, 0к00, 0к00, 0к00, 0к00, 0к00, …………………………… ………………………………………………………..}; цонст унсигнед цхар дооропен ПРОГМЕМ = {0к00, 0к00, 0к00, 0к00, 0к00, 0к00, 0к00, 0к00, 0к0ф, 0кфф, 0кфф, 0кц0, 0к1ф, 0кфф, 0кфф, 0ке0,, ………………………… …………………………………………………………..};
У функцији сетуп () , иницијализујте серијски монитор брзином преноса од 9600 у сврхе отклањања грешака. Затим у следећим редовима иницијализујте ОЛЕД екран и АПДС9960 сензор методом бегин () на следећи начин:
Сериал.бегин (9600); иф (! АПДС.бегин ()) {Сериал.принтлн ("Грешка при иницијализацији сензора АПДС9960!"); } Сериал.принтлн ("Откривање гестова…"); дисплаи.бегин (СХ1106_СВИТЦХЦАПВЦЦ, 0к3Ц);
Након иницијализације екрана и сензора, очистите ме успремник екрана методом цлеарДисплаи () и подесите величину и боју фонта помоћу метода дисплаи.сетТектСизе () и дисплаи.сетТектЦолор () .
дисплаи.сетТектСизе (2); дисплаи.сетТектЦолор (БЕЛА); дисплаи.цлеарДисплаи (); дисплаи.дисплаи ();
Унутар воид петље () , стално проверите да ли је направљен неки гест. Ако је одговор да, прочитајте вредности геста и проверите који је то гест (ГОРЕ, ДОЉЕ, ДЕСНО, ЛИЈЕВО) и исписује одговарајуће очитање на серијски монитор. Покрети ГОРЕ и ДОЛЕ користе се за подешавање броја пода на који корисник жели да иде. Леви гест је затварање врата лифта и померање лифта према броју пода, док се десни гест користи за отварање врата.
иф (АПДС.гестуреАваилабле ()) {инт гест = АПДС.реадГестуре (); прекидач (геста) {случај ГЕСТУРЕ_УП: Сериал.принтлн („Откривен гест УП“); дисплаи.цлеарДисплаи (); флоорнум ++; дом 1(); пауза; случај ГЕСТУРЕ_ДОВН: Сериал.принтлн ("Откривен гест ДОЛЕ"); дисплаи.цлеарДисплаи (); флоорнум -; дом 1(); пауза; случај ГЕСТУРЕ_ЛЕФТ: Сериал.принтлн („Откривен ЛЕВИ гест“); дисплаи.цлеарДисплаи (); почетак(); пауза; случај ГЕСТУРЕ_РИГХТ: Сериал.принтлн ("Откривен ДЕСНИ гест"); дисплаи.цлеарДисплаи (); дом 1(); пауза; подразумевано: бреак; }
Функција хоме1 () користи се за цртање кућног екрана за лифт. Састоји се од стрелице нагоре, стрелице надоле, знакова Отворена врата, Затвори врата и тренутног броја пода. функција дравБитмап () користи се за цртање слика на ОЛЕД дисплеју. Синтакса функције дравБитмап () дата је у наставку:
дравБитмап (инт16_т к, инт16_т и, битмапа, инт16_т в, инт16_т х, боја);
Где:
инт16_т к, инт16_т и су Кс и И координате ОЛЕД екрана
битмапа је назив битмапе
инт16_т в, инт16_т х су висина и тежина слике.
воид хоме1 () {дисплаи.сетЦурсор (101,23); дисплаи.принтлн (флоорнум); дисплаи.дравБитмап (23, 0, упарров, 40, 18, ВХИТЕ); дисплаи.дравБитмап (26, 46, довнарров, 40, 18, БЕЛА); дисплаи.дравБитмап (0, 15, дооропен, 29, 30, БЕЛА); дисплаи.дравБитмап (60, 15, затворено, 29, 30, БЕЛО); дисплаи.дисплаи (); }
Функција старт () користи се за померање дизала нагоре или надоле. Због тога се тренутни спрат бр упоређује са бројем пода на који корисник жели да иде. Ако је број пода већи од тренутног спрата бр. тада ће се лифт померити према горе и ако је број пода мањи од тренутног спрата бр. тада ће се лифт померити надоле. Лифт ће се зауставити када оба тренутна спрата бр. и спрат бр. су исти.
воид старт () {вхиле (флоорнум> цуррентфлоор) {Сериал.принтлн ("иде горе"); цуррентфлоор ++; дисплаи.дравБитмап (0, 0, горе, 100, 64, БЕЛА); дисплаи.сетЦурсор (101,23); дисплаи.принтлн (цуррентфлоор); дисплаи.дисплаи (); дисплаи.цлеарДисплаи (); кашњење (2000); } вхиле (флоорнум <цуррентфлоор) {Сериал.принтлн ("надоле"); цуррентфлоор--; дисплаи.дравБитмап (0, 0, надоле, 100, 64, БЕЛА); дисплаи.сетЦурсор (101,23); дисплаи.принтлн (цуррентфлоор); дисплаи.дисплаи (); дисплаи.цлеарДисплаи (); кашњење (2000); } иф (флоорнум == цуррентфлоор) {Сериал.принтлн ("Достигнуто"); дисплаи.цлеарДисплаи (); дом 1(); Сериал.принт (цуррентфлоор); }}
Тестирање додира без додира контролисаним гестама
Када су хардвер и код спремни, повежите Ардуино Нано са преносним рачунаром и отпремите комплетан код дат у наставку. Као што видите, ОЛЕД ће подразумевано приказати интерфејс лифта.
Сада махните руком горе или доле, као што је приказано на видео снимку испод, да бисте поставили под где желите да идете. Затим направите леви гест којим потврђујете да се лифт подиже на тај спрат. Ако желите да зауставите лифт, направите прави покрет руком.
Комплетни видео запис и код за овај пројекат дати су у наставку. Надам се да сте уживали у изградњи овог пројекта. Ако имате питања у вези са овим пројектом, оставите их у одељку за коментаре.