Mündəricat:

5 Telli Rezistiv Toxunma Sensoru: 10 addım
5 Telli Rezistiv Toxunma Sensoru: 10 addım

Video: 5 Telli Rezistiv Toxunma Sensoru: 10 addım

Video: 5 Telli Rezistiv Toxunma Sensoru: 10 addım
Video: 🛜Neil Degrasse Tyson, WRONG about Tesla?!? 🛜 ​⁠@joerogan (30min) 2024, Iyul
Anonim
5 Telli Rezistiv Toxunma Sensoru
5 Telli Rezistiv Toxunma Sensoru

Salam Salam!

Bu saytda işləməyimdən bir müddət keçdi və göründüyü kimi çox şey dəyişdi! Nəhayət, başqa bir layihə üçün yenidən sükan arxasına keçməyə hazıram və düşünürəm ki, hər şeyi bir qədər dəyişməyin vaxtıdır!

Bir müddət 271828 -in Plaka və Topa əsaslanan bir layihəsini düşündüm, amma bitməmiş sensorlar və idarəetmə nəzəriyyəsi haqqında öyrənəcəyim çox şey var. Düşündüm ki, bir -iki şey öyrəndiyim müddətcə sizi də özümlə apara bilərəm!

Bu məqsədlə bu dərslərdəki məqsədim, daha cilalanmış dərslərimlə bir növ hibrid və layihənin özü üçün bir rekord olacaq. Hər bir fərdi dərs bu səyahətdə bir addım olacaq və keçmişdə yazdığım detalları, məsələn kod hazırlama (yeni tamamlanmış kod əvəzinə) və yolda atdığım səhv addımları ehtiva edəcək.

Bu yeni layihə üçün çox həyəcanlıyam və bunun nə qədər yaxşı işlədiyini görmək üçün ayrıldım!

Bu gün yalnız DP-32 ilə işləyən 5 telli sadə bir panel əldə edəcəyik.

Gəlin başlayaq!

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

Ehtiyacınız olacaq
Ehtiyacınız olacaq

Bu təlimat tək bir sensorun işə salınması ilə əlaqədar olduğundan, bir mikro nəzarətçi və toxunma panelindən çox ehtiyacınız olmayacaq.

  • Mikro nəzarətçi.

    DP32-ni daxili çörək taxtası ilə istifadə edirəm, çünki prototip hazırlamağı inanılmaz dərəcədə sadə edir

  • Müxtəlif tel və kabellər.

    Dokunmatik panelin lent kabelindən istifadə edə bilərdim, amma yırtsa bütün panel yararsızdır. Bunun əvəzinə, quraşdırılmış kabeldəki gərginliyi azaltmaq üçün 6 telli bir kabel istifadə edirəm

  • Titulyar 5 telli rezistiv toxunma paneli!

    4 telli rezistiv toxunma panelim var idi, amma bunun üçün lent kabeli qırıldı

Və bu qədər!

Addım 2: 5 telli Rezistiv Toxunma Paneli nədir?

5 telli Rezistiv Toxunma Paneli nədir?
5 telli Rezistiv Toxunma Paneli nədir?
5 telli Rezistiv Toxunma Paneli nədir?
5 telli Rezistiv Toxunma Paneli nədir?
5 telli Rezistiv Toxunma Paneli nədir?
5 telli Rezistiv Toxunma Paneli nədir?

4 telli toxunma paneli dərsliyimi oxumusunuzsa, rezistiv toxunma sensoru haqqında ümumi fikirlə tanış olacaqsınız, ancaq 5 telli və 4 telli panellər bir az fərqli işləyir.

Bu paneldən xoşum gəlir, çünki bütün tel izlərini görə bilərsiniz, nəyin nə etdiyini görməyi asanlaşdırırsınız. İlk şəkildə hər bir izi fərqli şəkildə rəngləmişəm. Yəqin ki, tellərin dördünün (çəhrayı, sarı, narıncı və bənövşəyi) hər birinin dörd küncdən birinə getdiyini görə bilərsiniz. Orta tel (qırmızı) çevik sensor panelinə gedir.

İkinci şəkildə, dörd teldən ikisini (sağdan yuxarı və aşağıdan sağa) yüksək gərginliyə (qırmızı ilə göstərilmişdir), digər ikisini (yuxarı sol və aşağı sol) aşağı səviyyəyə qoymuşuq. gərginlik (mavi ilə göstərilmişdir). Bu, bütün paneldə bir gərginlik gradienti yaradır. Bu vəziyyətdə, gradient X oxu boyunca gedir, buna görə daha yüksək bir gərginlik X oxu boyunca daha yüksək bir mövqeyi təmsil edir.

Barmağımızı panelə toxunduğumuzda, X oxu qradiyenti boyunca bir yerə bağlanan çevik sensoru sıxışdırır. Mikro nəzarətçimizdəki gərginlik sensorlar bu gərginliyi hiss edə bilər və barmağınızın X oxunda hara toxunduğunu söyləyə bilər!

Üçüncü şəkildə, Y oxu boyunca hiss etməyimiz üçün konfiqurasiyanın necə dəyişdiyini görə bilərsiniz. Bu şəkildə, 2-D məkanda barmağımızın hara toxunduğunu deyə bilərik!

Addım 3: Kabel çəkmə

Kablolama
Kablolama
Kablolama
Kablolama

Yəqin ki, yuxarıdakı şəkillərdə görə biləcəyiniz kimi, hər dörd küncümü öz rəqəmsal çıxış pininə bağladım. Bu, onları ayrı -ayrılıqda yüksək və ya aşağıya qoymağa imkan verəcək. Sensor pinim analog giriş pininə qoşulur. 5 telli bir toxunma ekranının 4 teldən fərqli olaraq ən yaxşı tərəfi odur ki, yalnız bir analoq pinə ehtiyacınız var, 4 telli isə 2 ədəd.

Əlbəttə ki, kabeliniz fərqli ola bilər, amma mənim kabellərim belədir:

Analog 0 (pin 6) Sensora (orta pin) qoşulur

Rəqəmsal 3 yuxarı sağa bağlanır (ən yuxarı pin)

Rəqəmsal 2, Üst Sola (ikinci ən çox pin) bağlanır

Rəqəmsal 1 Aşağı-Sola (ikinci alt-ən pin) qoşulur

Rəqəmsal 0, Sağdan Aşağıya (ən altdakı pin) bağlanır

Bir daha qeyd etmək lazımdır ki, mikrokontrolörlə panel arasında keçmək üçün 6 telli kabel istifadə edirəm. Bu kabelin üst pinini əlaqəsiz qoymuşam.

Addım 4: Proqram İnkişafı

Proqram İnkişafı
Proqram İnkişafı

Keçmişdə, ümumiyyətlə istifadə edə biləcəyiniz bir tamamlanmış proqram faylını atardım, bəlkə də hər şeyin nə olduğunu qısa bir şəkildə. Bundan xoşum gəlmir. Bu seriyanın inkişaf mərhələsindəki layihələr haqqında olmasını istəyirəm və bu məqsədlə bu proqramın əvvəldən sonuna qədər gerçək inkişafını daxil edəcəyəm.

Həmişə olduğu kimi, Digilent nüvəsi olan Arduino IDE -dən istifadə edəcəyəm. Hər bölmədə bir kod faylı, ekran görüntüsü, əlavələrin təsviri və əldə etməyə çalışdığımız şeylər olacaq.

Hal -hazırda, sadə bir gecikmə tərzi proqramı ilə başlayıram, nümunələr qovluğunda tapdığınız kimi eyni. Yazdığım uzun başlığı oxusanız, bu prosesin hər bir addımının proqramı son məqsədimizə yaxınlaşdırmaq üçün dəyişdirəcəyini görəcəksiniz.

Addım 5: Dövlət Maşını Göz Kırpma

State Machine Blink
State Machine Blink

İlk hərəkətim, gözləmə funksiyasını "delay ()" ə əsaslanan funksiyadan dövlət maşınına dəyişdirməkdir.

Keçid ifadələrini istifadə etməyənlər üçün, if ifadəsinə bənzər şəkildə işləyir. Bu (narıncı qutuda) "vəziyyət" dəyişənimizi sınayır (0 -dan başlayır). Sonra indiki vəziyyətimiz üçün işə keçər. Görürsünüz ki, 0 və 2 halları LED -i açmaq və söndürməkdən (1 -ci halda), 1 -ci və 3 -cü açarlar arasında gözləməkdən məsuldur.

Addım 6: Düymə Blink

Düymə Blink
Düymə Blink
Düymə Blink
Düymə Blink
Düymə Blink
Düymə Blink

Sonra, işığı yandırmaq üçün düymənin istifadə edilməsini istədim. Bunu həddindən artıq çətinləşdirmək əvəzinə, bütün əyalətləri bir dənə aşağı saldım (0 vəziyyəti 1-ə çevrilir və s.). Bunu edərkən, çıxış vəziyyətlərini və əyalətin özünü artırmağa diqqət edin (şəkil 3).

İkinci "gözləmə" vəziyyətini də sildim. Bu o deməkdir ki, düymə işığı bir saniyə yandırır və söndürüldükdən sonra düyməni yenidən basa bilərsiniz.

Diqqət yetirməyə dəyər ki, bu sistem bizim üçün düyməni avtomatik olaraq ləğv edir, çünki düymənin yenidən dövrəni tetikleyebileceği 0 vəziyyətinə dönməzdən əvvəl LED -in sönməsini gözləməliyik.

Addım 7: Serial Rabitə

Serial Ünsiyyət
Serial Ünsiyyət
Serial Ünsiyyət
Serial Ünsiyyət

Bu yeniləmə çox kiçikdir. İstədiyim tək şey Serial əlaqəsi qurmaq və mesaj göndərmək idi. İlk şəkildə, serial (serial) proqramına setup () funksiyasından başladığımı görə bilərsiniz. Dövlət maşınımızın içərisində, 1 və 3 -cü vəziyyətlərə, seriallar vasitəsilə kompüterə sadə mesajlar göndərəcək xətlər əlavə etdim.

Addım 8: Koordinatları oxumaq

Koordinatları oxumaq
Koordinatları oxumaq
Koordinatları oxumaq
Koordinatları oxumaq
Koordinatları oxumaq
Koordinatları oxumaq
Koordinatları oxumaq
Koordinatları oxumaq

Son addımın asan olması yaxşı haldır, çünki bu addım lal idi.

Başlamaq üçün, həm toxunma paneli, həm də düyməmiz üçün xüsusi vaxt dəyişənləri daxil olmaqla, toxunma panelimiz üçün dəyişənlər əlavə etdim. Bunun səbəbini bir az sonra görəcəksiniz.

Dövlət maşınını tamamilə yenidən yazdım. Koda baxmaq bir az qarışıqdır, buna görə də nə edildiyini göstərmək üçün bir blok diaqramı daxil etdim.

Diqqət etməli olduğunuz şeylər: İndi üç "gözləmə" addımı var. Dokunmatik panelin hər bir konfiqurasiyası üçün bir ölçmə etməzdən əvvəl gərginliklərin həll olunmasına icazə vermək üçün, digəri isə düyməni düzgün silmək üçün vaxt vermək üçün. Bu gözləmə addımları səbəbiylə həm düyməni, həm də toxunma panelinə öz vaxt dəyişənlərini vermək istədim.

Qeyd: DEBOUNCE_TIME sabit bir az aşağı ola bilər. Artırmaqdan çekinmeyin.

Addım 9: Təmizləmə

Təmizləmə
Təmizləmə
Təmizləmə
Təmizləmə
Təmizləmə
Təmizləmə

Bu layihə üçün kodun son versiyasına gəldik!

Başlamaq üçün, keçən vaxtı hesablamaq üçün loop_diff () adlı bir funksiya əlavə etdim. DP32 üçün daxili saat işarəsiz uzun və çox çətin olsa da, saatın bu kodun işləmə müddətində dönə biləcəyi ehtimalı var*. Bu vəziyyətdə, cari vaxtı btn_time və ya panel_time -da saxlanan vaxtdan çıxarmaq bizə qəribə bir şey verəcək, buna görə də loopların meydana gəldiyini aşkar etmək və buna uyğun davranmaq üçün loop_diff () yazdım.

Bir az xırda təmizlik də etmişəm. İndi istifadə edilməyən "state_time" dəyişənini sildim. LED_BUILTIN etiketindən (Arduino standartıdır) PIN_LED1 etiketinə (chipKit və DP32 üçün standartdır) keçdim. Serial vasitəsilə məlumatlarımızı Serial üzərindən daha təmiz edən prosesin başlaması və bitməsi ilə bağlı bütün mesajları da sildim.

*İllər əvvəl riyaziyyatı etmişəm və düşünürəm ki, millis () funksiyası üçün dəyişənin dönməzdən əvvəl bir həftə davamlı iş vaxtı kimi bir şey lazım olacaq.

Addım 10: Son Fikirlər

Son Fikirlər
Son Fikirlər

Və bu qədər!

Əgər izləmisinizsə, indi mikrokontrollerinizə bağlı işləyən bir toxunma paneli olmalıdır! Bu kiçik bir layihə idi, amma daha böyük bir layihənin bir hissəsidir. 271828 -in Plaka və Topu kimi bir şeyə çalışıram və bunun baş verməsinə qədər çox yolum var. Sizi bütün proses boyunca aparmağa çalışacağam və hər bir hissə öz kiçik layihəsi olmalıdır.

Bu mənim üçün bir öyrənmə prosesidir, buna görə fikirlərinizi və təkliflərinizi aşağıdakı şərhlərdə yazmaqdan çekinmeyin.

Təşəkkürlər, növbəti dəfə görüşəcəyik!

Tövsiyə: