Mündəricat:

İnteraktiv Toxunmaz İşıq: 7 addım (Şəkillərlə birlikdə)
İnteraktiv Toxunmaz İşıq: 7 addım (Şəkillərlə birlikdə)

Video: İnteraktiv Toxunmaz İşıq: 7 addım (Şəkillərlə birlikdə)

Video: İnteraktiv Toxunmaz İşıq: 7 addım (Şəkillərlə birlikdə)
Video: КОНКУРС - ИНТЕРАКТИВ, КОТОРЫЙ МЕНЯ ВСЕГДА СПАСАЕТ 2024, Noyabr
Anonim
İnteraktiv Toxunmaz İşıq
İnteraktiv Toxunmaz İşıq

Hər kəsə salam! Çalışdığım layihəni burada paylaşmaq istərdim. Universitetimdəki bir layihə vasitəsilə kapasitiv toxunma algılamasını sınamaq üçün ilham aldım. Bu texnologiyanı təlimatlar vasitəsilə öyrəndim və maraqlı işıq rəngləri yaratmaq üçün fərqli RGB dəyərlərini qarışdırmaq üçün istifadə etdiyim toxunmadan idarəetmə qurğumu qurmaq üçün burada və internetdə öyrəndiyim şeyləri istifadə etdim.

Yeni başlayanlar üçün, bu layihəyə başlayanda nə elektronika, nə də kapasitiv toxunma algılaması haqqında heç nə bilmirdim.

Əvvəldən qaçdığım bəzi problemlər əslində baş verənləri başa düşməməkdən qaynaqlanır. Bunu necə başa düşdüyümə qısa bir giriş:

Kapasitiv bir sensor, əsasən bir çox komponentdən istifadə edir:

Bir kondansatör (bu layihədə alüminium folqa istifadə edirik, eyni zamanda keçirici mayelərdən istifadə etmək də mümkündür), tellər (əlbəttə ki, onun elektronikası)

və bir rezistor, 10 MOhm -dən aşağı olan hər hansı bir şey, birbaşa toxunmadan daha çox müqavimətdir.

işləmə üsulu, A nöqtəsi ilə B nöqtəsi arasındakı vaxt fərqini ölçməkdir. Başlanğıc pinindən bir son nöqtəyə bir siqnal göndərir, aldığı vaxt bir taymerlə ölçülür. Müqavimət dəyərini azaldaraq (bir kondansatörü (bu halda əlinizlə) sensorun kondensatoruna yaxınlaşdıraraq (alüminium folqa) bu dəfə qısaldır, zaman fərqi sensorun dəyər olaraq geri verdikləridir.

Sensorun kapasitiv səthlərdən təsirlənməsi səbəbindən məlumatlar müdaxilə səbəbiylə vəhşicəsinə düzensiz ola bilər. Kondansatörü düzgün izolyasiya etməklə və bir torpaq istifadə etməklə böyük bir hissəsi həll edilə bilər (daha sonra necə olacağını göstərəcəyəm).

Beləliklə, indi ehtiyacımız olan hər şeyi inventarlaşdırmağa başlaya bilmərik:

Addım 1: Nə lazımdır?

Elektronika:

1. 2 x 22M Ohm + rezistorları (müqavimət dəyəri nə qədər böyükdürsə, sensorun reaksiyası nə qədər uzaqdırsa, şəxsən mən 22M Ohm istifadə etmişəm, təcrübəli məlumatları əldə etmək üçün minimum 10M Ohm idi)

2. 3x 330 Ohm rezistorlar

3. Tellər

4. Çörək lövhəsi

5. Dövrə lövhəsi (mənimki kontuları mis zolaqlar idi)

6. Birdən çox ümumi Katot RGB Led (8 -dən istifadə etdim, amma nə qədər istədiyinizə görə az və ya çox ola bilərsiniz)

7. Alüminium folqa

8. Yapışqan sarğı

9. Arduino Uno

10. Bant

Hal:

1. Taxta 50 x 50 x 1.8 CM MDF istifadə etdim (həqiqətən hər şeyi istifadə edə bilərsiniz. İstədiyiniz effektdən və ixtiyarınızdakı vasitələrdən asılıdır)

2. 50 x 50 x 0.3 CM (və ya düyü kağızı kimi hər hansı digər şəffaf/şəffaf material) istifadə etdiyim akril pleksiglas

3. Zımpara (incə zımpara)

4. Taxta yapışqan

5. vener (isteğe bağlı)

6. Akrilik yapışqan

Alətlər:

Tel çıxarıcı

Lehimləmə dəmir + qalay

Stanley bıçağı

qazma

Gördüm (masa mişarından istifadə etdim)

Addım 2: Prototipləşdirmə:

Prototipləşdirmə
Prototipləşdirmə
Prototipləşdirmə
Prototipləşdirmə

İndi hər şeyimiz var və bunun necə işlədiyini görmək üçün bir prototip hazırlamağa başlaya bilərik:

Hazırlıq işləri:

Alüminium folqa içərisindən 4 düzbucaqlı kəsin (Mənimki təxminən 10 sm x 5 sm), onları toxunmadan izolyasiya etmək üçün yapışqan sarın və alüminium folqa bir tel yapışdırın. Sadəcə folqa üçün soyulmuş bir ucu yapışdırdım (əlaqə saxladıqları müddətcə).

Alüminiumun etibarlı şəkildə izolyasiya olunduğundan əmin olmaq üçün onu yapışqan ilə büküb kağızlar arasında ütülədim (tamamilə əriməməsi üçün bir neçə saniyə ərzində).

Sonra dövrədə şəkildə göründüyü kimi qurun.

Pin 4, hər iki sensör üçün bir göndərmə pimi olaraq istifadə olunur, qəbul pinləri isə pin 2 və 5 -dir. Birdən çox göndərmə sancağından istifadə edə bilərsiniz, lakin mükəmməl sinxronizasiya olunmadığı üçün problem yaradır.

hər şeyi bir -birinə lehimləməzdən əvvəl, hər şeyin həqiqətən nəzərdə tutulduğu kimi işlədiyinə əmin olmaq üçün bu ayarı ayıklama məqsədləri üçün istifadə edin.

Addım 3: Kod:

İndi hər şeyimiz var və sensorlar ayırmağa başlaya bilərik.

Kodumu istifadə etmək üçün Arduinodan kapasitiv algılama kitabxanasını yükləməli və istinad səhifəsində verilən təlimatlara uyğun olaraq qurmalısınız: Məni vurun

Kod: (Kodlaşdırmaqda yaxşı deyiləm, buna görə də bunu necə daha yaxşı edəcəyinizi bilirsinizsə edin)

#include // kod kitabxanasını idxal edin

CapacitiveSensor cs_4_2 = CapacitiveSensor (4, 2); // Pin göndər = 4, qəbul 2 və 5 -dir CapacitiveSensor cs_4_5 = CapacitiveSensor (4, 5); const int redPin = 11; const int greenPin = 10; const int bluePin = 9; const int numIndexR = 10; // sıra ölçüsü const int numIndexG = 10; int colorR = 0; int colorG = 0; float colorB = 0; int indexR [numIndexR]; int posIndexR = 0; uzun ümumi R = 0; // uzun olmalıdır, çünki dizimin cəmi tam ədəd üçün böyük idi. int ortaR = 0; int indexG [numIndexG]; int posIndexG = 0; uzun ümumi G = 0; int orta G = 0; boş quraşdırma () {pinMode (redPin, ÇIXIŞ); pinMode (greenPin, ÇIXIŞ); pinMode (bluePin, ÇIXIŞ); for (int thisIndexR = 0; thisIndexR <numIndexR; thisIndexR ++) {// dizini 0 indexR [thisIndexR] = 0 olaraq təyin edir; } üçün (int thisIndexG = 0; thisIndexG = 4500) {// sensor dəyərlərini istifadə edilə bilən maksimuma endirin, bu hər bir müqavimət dəyəri üçün eyni deyil və ətraf mühitdən mühitə bir qədər fərqlənə bilər. öz ehtiyaclarınız. cəmi1 = 4500; } if (total2> = 4500) {total2 = 4500; } totalR = totalR - indexR [posIndexR]; // bu, davamlı olaraq bir sensor çıxışı əlavə edən və ortalamanı çıxaran bir sıra yaradır. indexR [posIndexR] = cəmi1; totalR = totalR + indexR [posIndexR]; posIndexR = posIndexR + 1; əgər (posIndexR> = numIndexR) {posIndexR = 0; } ortaR = totalR / numIndexR; // çıxışı hamarlaşdırmaq üçün xam məlumatlar yerinə ortalamadan istifadə edirik, prosesi bir qədər yavaşlatır, həm də həqiqətən gözəl bir axın yaradır. totalG = totalG - indexG [posIndexG]; indexG [posIndexG] = cəmi2; totalG = totalG + indexG [posIndexG]; posIndexG = posIndexG + 1; əgər (posIndexG> = numIndexG) {posIndexG = 0; } ortaG = totalG / numIndexG; if (averageR> = 2000) {// biz sizin əlinizdən heç bir məlumat gəlmədikcə ledlərin dəyərini daim dəyişməsini istəmirik, buna görə də bütün aşağı ətraf oxunuşları nəzərə alınmır. colorR = xəritə (ortaR, 1000, 4500, 255, 0); analogWrite (redPin, colorR); } başqa if (ortaR = 1000) {colorG = xəritə (ortaG, 1000, 4500, 255, 0); analogWrite (greenPin, colorG); } başqa if (ortaG <= 1000) {colorG = 255; analogWrite (greenPin, colorG); } if (colorR <= 125 && colorG <= 125) {// B bir az fərqli işləyir, çünki mən yalnız 2 sensordan istifadə etmişəm, buna görə də B sensorunu hər iki sensorda xəritələmişəm colorB = map (colorR, 255, 125, 0, 127.5) + map (colorG, 255, 125, 0, 127.5); analogWrite (bluePin, colorB); } başqa {colorB = xəritə (colorR, 255, 125, 127.5, 0) + xəritə (colorG, 255, 125, 127.5, 0); əgər (colorB> = 255) {colorB = 255; } if (colorB <= 0) {colorB = 0; } analogWrite (bluePin, colorB); } Serial.print (millis () - başlanğıc); // bu, Serial.print ("\ t") ayıklama məqsədləri üçündür; Serial. çap (colorR); Serial.print ("\ t"); Serial. çap (colorG); Serial.print ("\ t"); Serial.println (colorB); gecikmə (1); }

Bu kodun etdiyi şey, xam məlumatları sensordan çıxarmaqdır (sensora təsir edən bütün fərqli amillər səbəbiylə bu məlumatlar hər zaman bir az düzensiz olacaq) və dizi maksimum dəyərə çatdıqda, xam məlumatları davamlı olaraq bir sıra halına gətirir (mənim vəziyyətimdə 10) son dəyəri təmizləyir və yenisini əlavə edir. Hər dəfə bir dəyər əlavə edildikdə, orta dəyəri hesablayır və yeni bir dəyişənə qoyur. Bu orta dəyişən, hər hansı bir kanalın parlaqlığını artırmaq üçün RGB sancaqlarına yazdığımız dəyərdir (0 və 255 arasında).

İndi kodunuzu arduino -ya yükləsəniz və seriyalı monitoru açsanız, əlinizi hər bir sensorun üzərinə apardığınızda RGB dəyərlərinin daha aşağı olduğunu görməlisiniz, həmçinin ledin işıq rəngi dəyişməlidir.

Addım 4: İndi Dava üçün:

İndi Dava üçün
İndi Dava üçün
İndi Dava üçün
İndi Dava üçün
İndi Dava üçün
İndi Dava üçün

Dava: Universitetdə mövcud olan vasitələrdən istifadə edərək işi açdım, buna görə də bu iş axını hər kəs üçün uyğun deyil. Bununla əlaqədar çox xüsusi bir şey yoxdur, USB portunun yerləşə bilməsi üçün bir tərəfində bir çuxura ehtiyacı var, ancaq bunun xaricində yalnız üstü açıq bir qutu var.

Ölçülər aşağıdakı kimidir:

Şəffaf üst üçün 15 x 15 CM

Taxta baza üçün 15 x 8 CM (ağacın qalınlığı mənim üçün 1.8 sm idi).

MDF lövhəsini lazım olan ölçülərə (4 panel 15 x 8 CM və 1 15 x 15 CM torpaq paneli) kəsmək üçün bir masa mişarı istifadə etdim, sonra küncləri 45 dərəcə bir açı ilə kəsdim. Taxta yapışqan və sıxaclardan istifadə edərək bir -birinə yapışdırdığım bütün hissələr (ən azı 30 dəqiqə qurumasına icazə verin), Plexiglas üçün eyni proseduru istifadə etdim, ancaq xüsusi mişar bıçağı ilə.

Taxta tərəflərdən 1 -nin ortasında arduino USB fişinin hündürlüyündə arduinonun takılmasına imkan verən bir deşik olmalıdır.

Döşəməni kaplama ilə bitirdim. Hər tərəfin səthindən bir qədər böyük olan parçalara ayırdım.

Bunu yapışdırdım, sonra hər tərəfə 30 dəqiqə bağladım (sürüşməməsinə əmin olmaq üçün fərdi şəkildə etmək daha yaxşıdır və quruduqdan sonra yapışan hər şeyi kəsdim.

Acryfix adlı xüsusi bir yapışqan istifadə edərək yapışdırdığım başlıq Acryfix.

Unutmayın ki, akril Pleksiglasdan istifadə edirsinizsə, yapışqan Pleksiglası bir qədər həll edir, buna görə də mümkün qədər dəqiq və sürətli olun (bir neçə dəqiqə ərzində quruyur, ancaq saniyələr ərzində havaya məruz qalır).

Qapağı bitirmək üçün kubu bir qum təmizləyicisi ilə dondurdum, ancaq incə zımpara da istifadə edə bilərsiniz, hətta düz görünməsi üçün daha çox vaxt lazımdır. Diqqət yetirin, əgər zımpara istifadə edirsinizsə, incə dənəvər olmalıdır və donma prosedurundan sonra hissələri bir -birinə yapışdırın (belə ki, çox təzyiq göstərərək təsadüfən sındırmazsınız)

Qapağın çox sürüşmədiyinə əmin olmaq üçün taxta kubun kənarlarına bir neçə kiçik taxta çubuq yapışdırdım.

Addım 5: Son Nəticə Bənzər Bir Şey Görünməlidir:

Nəticə belə bir şeyə bənzəməlidir
Nəticə belə bir şeyə bənzəməlidir

Addım 6: Lehimləmə

Lehimləmə!
Lehimləmə!
Lehimləmə!
Lehimləmə!

Bir dövrə lövhəniz varsa, çörək taxtanızdakı eyni quruluşu istifadə edərək bütün hissələri birlikdə lehimləməyə başlaya bilərsiniz.

Mənim dövrə lövhəmdə istifadə rahatlığı üçün davamlı mis zolaqlar var.

Hər bir sensor üçün rezistorları və telləri lehimləmək üçün kiçik bir kvadrat kəsdim.

Göndərmə telləri (pin 4 -dən hər bir sensora gedən tellər) ardıcıl olaraq ayrı bir kvadratda, pin 4 -ə daxil olan 1 tel ilə lehimlənir.

İmprovizasiya edilmiş bir LED şeridi düzəltmək üçün uzun bir düzbucaq saxladım (qapağın içərisinə, ancaq əsasın kənarlarına uyğun şəkildə ölçün). Ledləri ardıcıl olaraq bir -birinin ardınca lehimləyə bilərsiniz (şəkildəki yadda saxlayın ki, təsadüfən elektron lövhənin yanlış tərəfindəki ledləri və rezistorları lehimlədim, mis şeritler həmişə alt tərəfdə olmalıdır).

Ayrı -ayrı hissələri bir -birinə lehimləməyi bitirdikdən sonra qutuya yerləşdirin. Fərdi tellərimi birlikdə lehimləmədim, buna görə də lazım olduqda asanlıqla dəyişə bilərəm.

Hər şeyi bazaya uyğunlaşdırmağın vaxtıdır: Bu, ən asan addımdır, arduinonun korpusun arxasındakı çuxurdan USB portu ilə əvvəlcə yerləri olmalıdır. İndi sensorlar əlavə edin, sensor folyosunun hər iki tərəfdəki taxtaya uyğun olduğundan əmin olun, torpaq folyosu isə düzdür. Hər şey yaxşı oturduqda, RGB ledlərini sağ pinlərə (9, 10, 11) bağlayın və bazanın kənarlarına söykənməsinə icazə verin.

Addım 7: Hazırıq

Bütün bunları başa düşdünüzsə, indi kapasitiv toxunma rəng qarışığı olan bir işığınız olmalıdır. Əylənin!

Tövsiyə: