Kazalo:

5-žični uporovni senzor na dotik: 10 korakov
5-žični uporovni senzor na dotik: 10 korakov

Video: 5-žični uporovni senzor na dotik: 10 korakov

Video: 5-žični uporovni senzor na dotik: 10 korakov
Video: How to user Makerfabs ESP32 3.5" TFT Capacitive Touch with Camera 2024, November
Anonim
5-žični uporovni senzor na dotik
5-žični uporovni senzor na dotik

Živjo živjo!

Minilo je že kar nekaj časa, odkar sem delal na tem spletnem mestu in zdi se, da se je precej spremenilo! Končno sem pripravljen, da se vrnem za volan za nov projekt in mislim, da je čas, da stvari nekoliko spremenim!

Že nekaj časa sem imel v mislih projekt, ki temelji na 271828's Plate and Ball, vendar se moram še veliko naučiti o senzorjih in teoriji upravljanja, preden se konča. Mislil sem, da te bom lahko vzel s seboj, dokler se bom nekaj naučil!

V ta namen bo moj cilj teh vaj nekakšen hibrid med mojimi bolj izpopolnjenimi vajami in zapis za sam projekt. Vsaka posamezna vadnica bo en korak na tem potovanju in bo vključevala podrobnosti, ki sem jih v preteklosti zanemaril, na primer razvoj kode (namesto pravkar dokončane kode) in napačne korake, ki jih naredim na tej poti.

Zelo sem navdušen nad tem novim projektom in vesel sem, da vidim, kako dobro deluje!

Danes bomo dobili preprosto 5-žično ploščo na dotik, ki bo delovala z DP-32.

Začnimo!

Korak: Kaj boste potrebovali

Kaj boste potrebovali
Kaj boste potrebovali

Ker ta vadnica govori o delovanju enega senzorja, poleg mikrokrmilnika in plošče na dotik ne boste potrebovali veliko.

  • Mikrokrmilnik.

    DP32 uporabljam z vgrajeno ploščo za kruh, ker je izdelava prototipov neverjetno preprosta

  • Različne žice in kabli.

    Lahko bi uporabil vgrajen tračni kabel na plošči na dotik, če pa se raztrga, je celotna plošča neuporabna. Namesto tega uporabljam 6-žilni kabel za zmanjšanje obremenitve vgrajenega kabla

  • Naslovna 5-žična uporovna plošča na dotik!

    Imel sem 4-žilno uporovno ploščo na dotik, vendar se je zanj zlomil trak

In to je to!

2. korak: Kaj je 5-žična uporovna plošča na dotik?

Kaj je 5-žična uporovna plošča na dotik?
Kaj je 5-žična uporovna plošča na dotik?
Kaj je 5-žična uporovna plošča na dotik?
Kaj je 5-žična uporovna plošča na dotik?
Kaj je 5-žična uporovna plošča na dotik?
Kaj je 5-žična uporovna plošča na dotik?

Če ste prebrali mojo vadbo s 4-žično ploščo na dotik, boste seznanjeni s splošno idejo o uporovnem senzorju na dotik, vendar 5-žične plošče in 4-žične plošče delujejo nekoliko drugače.

Ta plošča mi je všeč, ker si lahko ogledate vse sledi žice, zaradi česar je enostavno videti, kaj dela. Na prvi sliki sem vsako sled obarval drugače. Verjetno lahko vidite, da vsaka od štirih žic (roza, rumena, oranžna in vijolična) gredo na enega od štirih vogalov. Srednja žica (rdeča) gre na prilagodljivo senzorsko ploščo.

Na drugi sliki smo dve od štirih žic (zgoraj desno in spodaj desno) nastavili na visoko napetost (prikazano rdeče), medtem ko sta preostali dve (zgoraj levo in spodaj levo) nastavljeni na nizko napetost (prikazano v modri barvi). To ustvari naklon napetosti po celotni plošči. V tem primeru gre nagib vzdolž osi X, zato višja napetost predstavlja višji položaj vzdolž osi X.

Ko se s prstom dotaknemo plošče, ta pritisne prilagodljivo tipalo, ki se poveže nekje vzdolž naklona osi X. Senzorji napetosti na našem mikrokrmilniku lahko zaznajo to napetost in vam povedo, kje se na osi X dotika vaš prst!

Na tretji sliki si lahko ogledate, kako se konfiguracija spreminja in nam omogoča zaznavanje vzdolž osi Y. Tako lahko ugotovimo, kje se v 2-D prostoru dotika naš prst!

3. korak: Ožičenje

Ožičenje
Ožičenje
Ožičenje
Ožičenje

Kot verjetno vidite na zgornjih slikah, sem svoje štiri vogale povezal vsak s svojim digitalnim izhodnim zatičem. To mi bo omogočilo, da jih posamezno nastavim na visoko ali nizko. Moj senzorski pin je priključen na analogni vhodni pin. Lepa stvar pri 5-žičnem zaslonu na dotik, v nasprotju s 4-žičnim, je, da potrebujete le en analogni pin, medtem ko bi za 4-žilni 2.

Vaše ožičenje se lahko seveda razlikuje, vendar je moje ožičenje naslednje:

Analog 0 (pin 6) se poveže s senzorjem (srednji pin)

Digital 3 se poveže z zgornjim desnim kotom (najbolj zgornji pin)

Digital 2 se poveže z zgoraj levo (drugi najbolj zgornji pin)

Digital 1 se poveže z levo spodaj (drugi skrajni spodnji zatič)

Digital 0 se poveže z desno spodaj (najbolj spodnji pin)

Ponovno velja omeniti, da uporabljam 6-žilni kabel za prehod med mikrokrmilnikom in ploščo. Zgornji pin tega kabla sem pustil brez povezave.

4. korak: Razvoj programske opreme

Razvoj programske opreme
Razvoj programske opreme

V preteklosti sem običajno spustil dokončano programsko datoteko, ki jo lahko uporabite, morda s kratkim opisom, kaj vse počne. To mi ni všeč. Želim, da bi v tej seriji govorili o projektih v razvoju, v ta namen pa bom vključil dejanski razvoj te programske opreme od začetka do konca.

Kot ponavadi bom uporabljal Arduino IDE z jedrom Digilent. Vsak razdelek bo vseboval kodno datoteko, posnetek zaslona ter opis dodatkov in tega, kar poskušamo doseči.

Zaenkrat začenjam s preprostim programom za utripanje v slogu zakasnitve, popolnoma enakim tistemu, ki ga najdete v mapi Primeri. Če boste prebrali tisto dolgotrajno glavo, ki sem jo napisal, boste videli, da bo vsak korak v tem procesu spremenil program in ga približal našemu končnemu cilju.

5. korak: Utripanje državnega stroja

Državni stroj utripa
Državni stroj utripa

Moja prva poteza je, da spremenim funkcijo utripanja iz ene na podlagi "delay ()" v stanje stanja.

Za tiste, ki niso navajeni zamenjati stavkov, deluje podobno kot stavek if. Ta (v oranžnem polju) preizkuša našo spremenljivko "stanje" (ki se začne pri 0). Potem pa preskoči na primer za naše trenutno stanje. Videli boste, da sta primera 0 in 2 odgovorna za vklop in izklop LED (oziroma za izklop), primera 1 in 3 pa za čakanje med stikali.

6. korak: utripanje gumba

Utripanje gumba
Utripanje gumba
Utripanje gumba
Utripanje gumba
Utripanje gumba
Utripanje gumba

Nato sem hotel uporabiti gumb za utripanje luči. Namesto da bi to preveč zakompliciral, sem samo premaknil vsa stanja navzdol za eno (stanje 0 postane stanje 1 itd.). Pri tem pazite, da povečate izhodna stanja in stanje samo (glejte sliko 3).

Izbrisal sem tudi drugo stanje "čakanja". To pomeni, da gumb za eno sekundo prižge luč in gumb lahko znova pritisnete takoj, ko se izklopi.

Omeniti velja, da ta sistem samodejno odstrani gumb namesto nas, ker moramo počakati, da se LED ugasne, preden se vrnemo v stanje 0, kjer lahko gumb znova sproži cikel.

7. korak: Serijska komunikacija

Serijska komunikacija
Serijska komunikacija
Serijska komunikacija
Serijska komunikacija

Ta posodobitev je zelo majhna. Vse, kar sem hotel narediti, je vzpostaviti serijsko povezavo in pošiljati sporočila. Na prvi sliki lahko vidite, da začenjam serijsko v funkciji setup (). Znotraj našega državnega stroja sem državam 1 in 3 dodal vrstice, ki bodo pošiljale preprosta sporočila v računalnik po zaporedju.

8. korak: Branje koordinat

Branje koordinat
Branje koordinat
Branje koordinat
Branje koordinat
Branje koordinat
Branje koordinat
Branje koordinat
Branje koordinat

Še dobro, da je bil zadnji korak lahek, saj je bil ta hud.

Za začetek sem dodal spremenljivke za našo ploščo na dotik, vključno z nekaj namenskimi spremenljivkami časa za ploščo na dotik in naš gumb. Čez nekaj časa boste videli zakaj.

Popolnoma sem ponovno napisal državni stroj. Pogled na kodo je nekoliko zmeden, zato sem vključil blokovni diagram, ki naj ponazori, kaj je bilo storjenega.

Opozoriti je treba: Zdaj so na voljo trije koraki čakanja. Enega za vsako konfiguracijo plošče na dotik, ki pusti, da se napetosti umirijo pred meritvijo, in enega, ki daje gumbu čas, da se pravilno odpove. Zaradi teh čakalnih korakov sem želel gumbu in plošči na dotik dati lastne časovne spremenljivke.

Opomba: konstanta DEBOUNCE_TIME je lahko nekoliko nizka. Lahko ga povečate.

9. korak: Čiščenje

Čiščenje
Čiščenje
Čiščenje
Čiščenje
Čiščenje
Čiščenje

Prišli smo do končne različice kode za ta projekt!

Za začetek sem dodal funkcijo loop_diff () za izračun pretečenega časa. Notranja ura za DP32 je nepodpisana in čeprav je zelo malo verjetna, obstaja možnost, da se ura med izvajanjem te kode*obnovi. V tem primeru nam bo preprosto odštevanje trenutnega časa od časa, shranjenega v btn_time ali panel_time, dalo nekaj čudnega, zato sem napisal loop_diff (), da odkrijem, kdaj pride do zank, in se ustrezno obnašam.

Opravil sem tudi manjše čiščenje. Odstranil sem zdaj neuporabljeno spremenljivko "state_time". Prešel sem z oznake LED_BUILTIN (ki je standard Arduino) na oznako PIN_LED1 (ki je standardna za chipKit in DP32). Odstranil sem tudi vsa sporočila prek Serial o začetku in koncu postopka, zaradi česar so naši podatki prek Serial veliko čistejši.

*Matematiko sem opravil pred leti in mislim, da bi za funkcijo millis () potreboval nekaj tedna neprekinjenega časa delovanja, preden bi spremenljivka zankovala.

10. korak: Zadnje misli

Zaključne misli
Zaključne misli

In to je to!

Če ste sledili, bi morali imeti na mikrokrmilnik priključeno delujočo ploščo na dotik! To je bil majhen projekt, vendar je del večjega projekta. Prizadevam si za nekaj podobnega 271828's Plate and Ball in pred tem me čaka še dolga pot. Poskušal vas bom vzeti s seboj za celoten proces in vsak del bi moral biti lasten majhen projekt.

To je zame učni proces, zato svoje misli in predloge pustite v spodnjih komentarjih.

Hvala, se vidimo naslednjič!

Priporočena: