Съдържание:

Интерактивна безконтактна светлина: 7 стъпки (със снимки)
Интерактивна безконтактна светлина: 7 стъпки (със снимки)

Видео: Интерактивна безконтактна светлина: 7 стъпки (със снимки)

Видео: Интерактивна безконтактна светлина: 7 стъпки (със снимки)
Видео: Leap Motion SDK 2024, Ноември
Anonim
Интерактивна безконтактна светлина
Интерактивна безконтактна светлина

Здравейте всички! Бих искал да споделя проекта, по който работих тук. Вдъхнових се да експериментирам с капацитивно усещане за докосване чрез проект в моя университет. Научих за тази технология чрез инструкции и използвах нещата, които научих тук и от други места в интернет, за да изградя свой собствен контролер без докосване, който използвам за смесване на различни RGB стойности, за да създам интересни светли цветове.

Като начало, когато стартирах този проект, не знаех почти нищо нито за електрониката, нито за капацитивното докосване.

Някои проблеми, с които се сблъсках в началото, бяха причинени от неразбиране на това, което всъщност се случва. И така кратко въведение от начина, по който го разбирам:

Капацитивният сензор използва множество компоненти, главно:

Кондензатор (в този проект използваме алуминиево фолио, но също така е възможно да се използват проводящи течности и т.н.), проводници (разбира се, неговата електроника)

и резистор, всичко под 10 MOhm е твърде малко съпротивление за повече от директно докосване.

начинът, по който работи, е чрез измерване на разлика във времето между точка А и точка В. От стартовия щифт той изпраща сигнал до крайна щипка, времето, което отнема, се измерва с таймер. Чрез намаляване на стойността на съпротивлението (чрез преместване на кондензатор (в този случай ръката ви) по -близо до кондензатора на сензора (алуминиевото фолио) този път се скъсява, разликата във времето е това, което сензорът връща като стойност.

Поради това, че сензорът е засегнат от капацитивни повърхности, данните могат да бъдат много нестабилни поради смущения. Това може да бъде решено в голяма степен чрез правилно изолиране на кондензатора, както и чрез използване на маса (ще покажа как по -късно).

Така че това е извън пътя, по който можем да започнем да инвентаризираме всички неща, от които се нуждаем:

Стъпка 1: Какво ни трябва?

Електроника:

1. 2 x 22M Ohm + резистора (колкото по -голяма е стойността на съпротивлението, толкова по -далеч сензорът ви реагира, аз лично използвах 22M Ohm, минимумът за получаване на използваеми данни, които преживях, беше 10M Ohm)

2. 3x 330 Ohm резистори

3. Кабели

4. Платформа

5. Печатна платка (моята имаше непрекъснати медни ленти)

6. Множество общи катодни RGB светодиоди (използвах 8, но можете да имате повече или по -малко зависи от това колко светлина искате)

7. Алуминиево фолио

8. Прилепваща обвивка

9. Ардуино Уно

10. Лента

Случаят:

1. Дърво Използвах 50 x 50 x 1,8 CM MDF (можете да използвате наистина всичко. Зависи от ефекта, който искате и от инструментите, с които разполагате)

2. Акрилен плексиглас Използвах 50 x 50 x 0,3 CM (или друг прозрачен/полупрозрачен материал като оризова хартия)

3. Шкурка (фина шкурка)

4. Лепило за дърво

5. фурнир (по избор)

6. Акрилно лепило

Инструменти:

Машина за сваляне на тел

Поялник + калай

Нож Стенли

пробивна машина

Видях (използвах настолен трион)

Стъпка 2: Прототипиране:

Прототипиране
Прототипиране
Прототипиране
Прототипиране

Сега имаме всичко и можем да започнем да правим прототип, за да видим как работи:

Подготвителна работа:

Изрежете 4 правоъгълника от алуминиевото фолио (Моите са около 10 см на 5 см), увийте ги в прилепваща обвивка, за да ги изолирате от директно докосване и залепете тел към алуминиевото фолио. Просто залепих оголен край на фолиото (стига да останат в контакт).

За да се уверя, че алуминият е безопасно изолиран, увих го в хапче и го гладех между хартиите (само за няколко секунди, за да не се стопи напълно).

След това настройте веригата, както се вижда на изображението.

Пин 4 се използва като изпращащ щифт и за двата сензора, докато пиновете за приемане са щифтове 2 и 5. Можете да използвате множество изводи за изпращане, но това създава проблеми, тъй като те не са перфектно синхронизирани.

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

Стъпка 3: Код:

Сега имаме всичко и можем да започнем отстраняване на грешки в сензорите.

За да използвате моя код, трябва да изтеглите библиотеката с капацитивен сензор от Arduino и да я инсталирате според указанията, дадени от справочната страница: Щракнете върху мен

Кодът: (не съм добър в кодирането, така че ако знаете как да го направите по -добре, моля, направете го)

#include // импортирайте библиотеката с кодове

CapacitiveSensor cs_4_2 = CapacitiveSensor (4, 2); // Изпращане на пин = 4, получаването са 2 и 5 CapacitiveSensor cs_4_5 = CapacitiveSensor (4, 5); const int redPin = 11; const int greenPin = 10; const int bluePin = 9; const int numIndexR = 10; // размер на масива const int numIndexG = 10; int цвятR = 0; int цвятG = 0; плаващ цвятB = 0; int indexR [numIndexR]; int posIndexR = 0; дълго общо R = 0; // трябва да е дълъг, защото общата сума на моя масив беше твърде голяма за цяло число. int средно R = 0; int indexG [numIndexG]; int posIndexG = 0; дълго общо G = 0; int средно G = 0; void setup () {pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT); for (int thisIndexR = 0; thisIndexR <numIndexR; thisIndexR ++) {// задава масива на 0 indexR [thisIndexR] = 0; } for (int thisIndexG = 0; thisIndexG = 4500) {// ограничаване на стойностите на сензора до използваем максимум, това не е еднакво за всяка стойност на резистора и също може да се различава малко от среда до среда, може да се наложи да промените това, за да вашите собствени нужди. общо1 = 4500; } ако (общо2> = 4500) {общо2 = 4500; } totalR = totalR - indexR [posIndexR]; // това тук създава масив, който непрекъснато добавя сензорен изход и генерира средната стойност. indexR [posIndexR] = общо1; totalR = totalR + indexR [posIndexR]; posIndexR = posIndexR + 1; if (posIndexR> = numIndexR) {posIndexR = 0; } средно R = общо R / numIndexR; // използваме средната стойност вместо необработените данни, за да изгладим изхода, това забавя леко процеса, но също така създава наистина приятен плавен поток. totalG = totalG - indexG [posIndexG]; indexG [posIndexG] = общо2; totalG = totalG + indexG [posIndexG]; posIndexG = posIndexG + 1; if (posIndexG> = numIndexG) {posIndexG = 0; } средно G = общо G / numIndexG; if (averageR> = 2000) {// не искаме светодиодите постоянно да променят стойността си, освен ако няма въвеждане от вашата ръка, така че това гарантира, че всички по -ниски показания за околната среда не се вземат предвид. colorR = карта (средноR, 1000, 4500, 255, 0); analogWrite (redPin, colorR); } иначе ако (средноR = 1000) {colorG = карта (средно G, 1000, 4500, 255, 0); analogWrite (greenPin, colorG); } иначе ако (средно G <= 1000) {colorG = 255; analogWrite (greenPin, colorG); } if (colorR <= 125 && colorG <= 125) {// B работи малко по -различно, защото използвах само 2 сензора, така че картографирах B на двата сензора colorB = map (colorR, 255, 125, 0, 127.5) + карта (colorG, 255, 125, 0, 127.5); analogWrite (bluePin, colorB); } else {colorB = map (colorR, 255, 125, 127.5, 0) + map (colorG, 255, 125, 127.5, 0); if (colorB> = 255) {colorB = 255; } ако (colorB <= 0) {colorB = 0; } analogWrite (bluePin, colorB); } Serial.print (millis () - начало); // това е за отстраняване на грешки Serial.print ("\ t"); Serial.print (colorR); Serial.print ("\ t"); Serial.print (colorG); Serial.print ("\ t"); Serial.println (colorB); забавяне (1); }

Това, което прави този код, е извличане на необработените данни от сензора (тези данни винаги ще бъдат леко нестабилни поради всички различни фактори, които влияят на сензора) и той поставя необработените данни непрекъснато в масив, когато масивът достигне максимална стойност (в моя случай 10) изчиства последната стойност и добавя нова. Всеки път, когато се добавя стойност, тя изчислява средната стойност и я поставя в нова променлива. Тази средна променлива се използва за картографиране на стойност до стойност от 0 до 255, това е стойността, която записваме към RGB пиновете, за да увеличим яркостта на всеки канал (каналите са R G и B).

Сега, ако качите кода си в arduino и отворите серийния монитор, трябва да виждате по -ниски стойности на RGB, когато задържите ръката си над всеки сензор, цветът на светлината на светодиода също трябва да се промени.

Стъпка 4: Сега за случая:

Сега за случая
Сега за случая
Сега за случая
Сега за случая
Сега за случая
Сега за случая

Случаят: Направих случая с инструменти, достъпни в моя университет, така че този работен процес не е приложим за всички. Въпреки това няма нищо особено специално в това, той се нуждае от дупка от едната страна, за да може USB портът да премине, но освен това, това е просто кутия с отворен връх.

Размерите са следните:

15 x 15 CM за прозрачния връх

и

15 x 8 CM за дървената основа (дебелината на дървото беше 1,8 CM за мен).

Използвах настолен трион, за да изрежа плоча от MDF в правилните размери, от които се нуждая (което е 4 панела 15 x 8 CM и 1 15 x 15 CM заземен панел), след което изрязах ъглите под ъгъл от 45 градуса. Всички части, които залепих заедно с лепило за дърва и скоби (оставете да изсъхне поне 30 минути), използвах същата процедура за плексигласа, но със специален трион.

1 от дървените страни трябва да има дупка в центъра на височината на USB конектора на arduino, за да позволи включването на arduino.

Завърших основата на с фурнир. Нарязах го на парчета, малко по -големи от повърхността на всяка страна.

Това го залепих, след това го затегнах 30 минути за всяка страна (по -добре да го направите поотделно, за да сте сигурни, че не се плъзга и след като изсъхне, отрязах всичко, което стърчеше.

Капачката, която залепих, използвайки специално лепило за Acryl, наречено Acryfix.

Имайте предвид, че ако използвате акрилен плексиглас, лепилото разтваря малко плексигласа, така че бъдете възможно най -прецизни и бързи (изсъхва в рамките на няколко минути, но е изложен на въздух в рамките на секунди).

За да завърша капачката, замазах куба с пясъкоструйка, но можете да използвате и фина шкурка, просто отнема много повече време, за да изглежда равномерно. Имайте предвид обаче, че ако използвате шкурка, тя трябва да бъде финозърнеста и също така да залепи частите след процедурата за глазура (така че да не я счупите случайно, като приложите голям натиск)

За да се уверя, че капачката не се плъзга много, залепих няколко малки дървени решетки по ръбовете на дървения куб.

Стъпка 5: Крайният резултат трябва да изглежда така:

Крайният резултат трябва да изглежда така
Крайният резултат трябва да изглежда така

Стъпка 6: Запояване

Запояване!
Запояване!
Запояване!
Запояване!

Ако имате платка, можете да започнете да запоявате всички части заедно, като използвате същата настройка, каквато има и вашата платка.

Моята платка има непрекъснати медни ленти за по -лесно използване.

За всеки сензор отрязах малък квадрат, за да запоя резисторите и проводниците.

Изпращащите проводници (проводниците, които преминават от щифт 4 към всеки сензор) са запоени последователно в отделен квадрат, с 1 проводник, който влиза в щифт 4.

Запазих дълъг правоъгълник, за да направя импровизирана LED лента (измерете я така, че да пасва вътре в капачката, но по краищата на основата). Можете просто да запоявате светодиодите последователно един след друг (имайте предвид в изображението, че случайно запоявах светодиодите и резисторите от грешната страна на платката, медните ленти винаги трябва да са от долната страна).

Когато приключите запояването на отделните части заедно, ги поставете в кутията. Не запоявах отделните си проводници заедно, за да мога лесно да ги сменя, ако е необходимо.

Време е да поставите всичко в основата: Това е почти най -лесната стъпка, arduino трябва да е на първо място с USB порта през отвора в задната част на кутията. Сега добавете сензорите, уверете се, че сензорното фолио приляга към дървото от двете страни, като фолиото за земята е изправено срещу него. Когато всичко се впише добре, включете RGB светодиодите в десните щифтове (9, 10, 11) и го оставете да се опира на ръбовете на основата.

Стъпка 7: Готови сме

Ако сте изпълнили всичко това, сега трябва да имате работеща лампа с капацитивно смесване на цветовете на допир. Забавлявай се!

Препоръчано: