Cuprins:

Senzor tactil rezistiv cu 5 fire: 10 pași
Senzor tactil rezistiv cu 5 fire: 10 pași

Video: Senzor tactil rezistiv cu 5 fire: 10 pași

Video: Senzor tactil rezistiv cu 5 fire: 10 pași
Video: 🛜Neil Degrasse Tyson, WRONG about Tesla?!? 🛜 ​⁠@joerogan (30min) 2024, Iulie
Anonim
Senzor tactil rezistiv cu 5 fire
Senzor tactil rezistiv cu 5 fire

Bună bună!

A trecut ceva timp de când am lucrat pe acest site și se pare că s-au schimbat destul de multe! În sfârșit, sunt gata să mă întorc la volan pentru un alt proiect și cred că este timpul să schimb lucrurile puțin eu însumi!

Am avut în vedere de ceva vreme un proiect bazat pe Placa și Bila lui 271828, dar am multe de învățat despre senzori și teoria controlului înainte de a fi terminat. M-am gândit că, atâta timp cât voi învăța un lucru sau două, s-ar putea să vă iau cu mine!

În acest scop, scopul meu pentru aceste tutoriale va fi un fel de hibrid între tutorialele mele cele mai polite și o înregistrare pentru proiectul în sine. Fiecare tutorial individual va fi un pas în acea călătorie și va include detalii pe care le-am trecut în revistă în trecut, cum ar fi dezvoltarea codului (în loc de codul completat doar) și pașii greșiți pe care îi iau pe parcurs.

Sunt foarte încântat de acest nou proiect și sunt încântat să văd cât de bine funcționează!

Astăzi vom obține doar un simplu panou tactil cu 5 fire care funcționează cu un DP-32.

Să începem!

Pasul 1: De ce veți avea nevoie

De ce veți avea nevoie
De ce veți avea nevoie

Deoarece acest tutorial se referă la funcționarea unui singur senzor, nu este nevoie de mult decât un microcontroler și un panou tactil.

  • Un microcontroler.

    Folosesc DP32 cu o placă integrată, deoarece face prototiparea incredibil de simplă

  • Firuri și cabluri asortate.

    Aș fi putut folosi cablul panglică încorporat al panoului tactil, dar dacă se rupe, tot panoul este inutil. În schimb, folosesc un cablu cu 6 fire pentru a reduce stresul asupra cablului încorporat

  • Panoul tactil rezistiv cu 5 fire!

    Aveam un panou tactil rezistiv cu 4 fire, dar cablul ribbon pentru acesta s-a rupt

Si asta e!

Pasul 2: Ce este un panou tactil rezistiv cu 5 fire?

Ce este un panou tactil rezistiv cu 5 fire?
Ce este un panou tactil rezistiv cu 5 fire?
Ce este un panou tactil rezistiv cu 5 fire?
Ce este un panou tactil rezistiv cu 5 fire?
Ce este un panou tactil rezistiv cu 5 fire?
Ce este un panou tactil rezistiv cu 5 fire?

Dacă ați citit tutorialul meu cu panou tactil cu 4 fire, veți fi familiarizat cu ideea generală a unui senzor tactil rezistiv, dar panourile cu 5 fire și panourile cu 4 fire funcționează puțin diferit.

Îmi place acest panou, deoarece puteți vedea toate urmele de sârmă, ceea ce face mai ușor să vedeți ce face ce. În prima imagine, am colorat fiecare urmă diferit. Probabil puteți vedea că patru dintre fire (roz, galben, portocaliu și violet) merg fiecare la unul dintre cele patru colțuri. Firul din mijloc (roșu) merge la panoul flexibil al senzorului.

În a doua imagine, am setat două din cele patru fire (sus-dreapta și jos-dreapta) la o tensiune înaltă (afișată în roșu), în timp ce celelalte două (sus-stânga și jos-stânga) sunt setate la scăzut tensiune (indicată în albastru). Acest lucru creează un gradient de tensiuni pe întregul panou. În acest caz, gradientul merge de-a lungul axei X, deci o tensiune mai mare reprezintă o poziție mai înaltă de-a lungul axei X.

Când atingem degetul de panou, acesta apasă senzorul flexibil, conectându-ne undeva de-a lungul gradientului axei X. Senzorii de tensiune de pe microcontrolerul nostru pot simți această tensiune și vă pot spune unde se atinge degetul pe axa X!

În a treia imagine, puteți vedea cum se modifică configurația pentru a ne permite să simțim de-a lungul axei Y. În acest fel, putem spune unde se atinge degetul nostru în spațiul 2-D!

Pasul 3: Cablare

Cablare
Cablare
Cablare
Cablare

După cum puteți vedea probabil în imaginile de mai sus, am conectat cele patru colțuri ale mele la fiecare pin de ieșire digitală. Asta mă va permite să le setez individual la mare sau scăzut. Pinul senzorului meu este conectat la un pin analogic de intrare. Lucrul frumos la un ecran tactil cu 5 fire, spre deosebire de un 4 fire, este că ai nevoie doar de un pin analogic, în timp ce un 4 fire ar necesita 2.

Cablajul dvs. poate diferi, desigur, dar cablajul meu este după cum urmează:

Analog 0 (pin 6) se conectează la senzor (pin mediu)

Digital 3 se conectează la dreapta sus (pinul cel mai sus)

Digital 2 se conectează la stânga sus (al doilea pin de sus)

Digital 1 se conectează la partea de jos-stânga (al doilea pin de jos)

Digitalul 0 se conectează la partea de jos dreapta (pinul cel mai jos)

Merită să menționăm din nou că folosesc un cablu cu 6 fire pentru a merge între microcontroler și panou. Am lăsat pinul superior al acestui cablu neconectat.

Pasul 4: Dezvoltare software

Dezvoltare de software
Dezvoltare de software

În trecut, obișnuiam să renunț la un fișier software complet pe care să îl utilizați, poate cu o scurtă prezentare a ceea ce face totul. Nu-mi place asta. Vreau ca această serie să fie despre proiecte în curs de dezvoltare și, în acest scop, voi include dezvoltarea reală a acestui software de la început până la sfârșit.

Ca de obicei, voi folosi Arduino IDE, cu nucleul Digilent. Fiecare secțiune va include un fișier de cod, captură de ecran, precum și o descriere a completărilor și a ceea ce încercăm să realizăm.

Deocamdată, încep cu un program simplu de clipire a stilului de întârziere, exact la fel ca ceea ce ați găsi în folderul Exemple. Dacă citiți antetul lung pe care l-am scris, veți vedea că fiecare pas din acest proces va modifica programul pentru al aduce mai aproape de obiectivul nostru final.

Pasul 5: Blink-ul mașinii de stat

State Machine Blink
State Machine Blink

Prima mea mișcare este să schimb funcția de clipire de la una bazată pe „delay ()” la o mașină de stare.

Pentru cei care nu sunt obișnuiți să schimbe declarațiile, funcționează similar cu o instrucțiune if. Aceasta (în caseta portocalie) testează variabila noastră „stare” (care începe de la 0). Apoi trece la situația actuală. Veți vedea că cazurile 0 și 2 sunt responsabile pentru aprinderea și oprirea LED-ului (respectiv), în timp ce cazurile 1 și 3 sunt responsabile pentru așteptarea între comutatoare.

Pasul 6: Buton Clipește

Buton Clipește
Buton Clipește
Buton Clipește
Buton Clipește
Buton Clipește
Buton Clipește

Apoi, am vrut ca butonul să fie folosit pentru a clipi lumina. În loc să complic prea mult acest lucru, am mutat toate stările în jos cu una (starea 0 devine starea 1 etc.). Când faceți acest lucru, aveți grijă să incrementați stările de ieșire, precum și starea în sine (a se vedea imaginea 3).

Am șters și a doua stare de „așteptare”. Asta înseamnă că butonul aprinde lumina timp de o secundă și puteți apăsa din nou butonul imediat după ce acesta se stinge.

Este demn de remarcat faptul că acest sistem denunță automat butonul pentru noi, deoarece trebuie să așteptăm să se oprească LED-ul înainte de a reveni la starea 0 unde butonul poate declanșa din nou ciclul.

Pasul 7: Comunicare în serie

Comunicare în serie
Comunicare în serie
Comunicare în serie
Comunicare în serie

Această actualizare este foarte mică. Tot ce am vrut să fac este să stabilesc o conexiune serială și să trimit mesaje. În prima imagine, puteți vedea că încep Serial în funcția setup (). În interiorul mașinii noastre de stat, am adăugat linii la stările 1 și 3 care vor trimite mesaje simple către computer prin serial.

Pasul 8: Citirea coordonatelor

Lectura coordonatelor
Lectura coordonatelor
Lectura coordonatelor
Lectura coordonatelor
Lectura coordonatelor
Lectura coordonatelor
Lectura coordonatelor
Lectura coordonatelor

Este bine că ultimul pas a fost ușor, deoarece acesta a fost o doozy.

Pentru început, am adăugat variabile pentru panoul nostru tactil, inclusiv câteva variabile de timp dedicate atât pentru panoul tactil, cât și pentru butonul nostru. Veți vedea de ce într-un pic.

Am rescris complet mașina de stat. Este puțin confuz să te uiți la cod, așa că am inclus o diagramă bloc care ar trebui să ilustreze ceea ce s-a făcut.

Lucruri de reținut: există trei pași „de așteptare” acum. Unul pentru fiecare configurație a panoului tactil, pentru a lăsa tensiunile să se stabilească înainte de a efectua o măsurare, și unul pentru a da butonului timp pentru a debona corect. Acești pași de așteptare sunt motivul pentru care am vrut să dau atât butonului, cât și panoului tactil propriile variabile de timp.

Notă: Constanta DEBOUNCE_TIME ar putea fi puțin scăzută. Simțiți-vă liber să-l măriți.

Pasul 9: Curățarea

A curăța
A curăța
A curăța
A curăța
A curăța
A curăța

Am ajuns la versiunea finală a codului pentru acest proiect!

Pentru început, am adăugat o funcție numită loop_diff () pentru a calcula timpul scurs. Ceasul intern pentru DP32 este un lung nesemnat și, deși este extrem de puțin probabil, există posibilitatea ca ceasul să se bucle cândva în timpul rulării acestui cod *. În acest caz, simpla scădere a timpului curent din timpul salvat în btn_time sau panel_time ne va oferi ceva ciudat, așa că am scris loop_diff () pentru a detecta când apar bucle și să mă comport cum trebuie.

De asemenea, am făcut un pic de curățare minoră. Am eliminat variabila „state_time” acum nefolosită. Am trecut de la eticheta LED_BUILTIN (care este un standard Arduino) la eticheta PIN_LED1 (care este standard pentru chipKit și DP32). De asemenea, am eliminat toate mesajele prin Serial despre pornirea și încheierea procesului, ceea ce face ca datele noastre prin Serial să fie mult mai curate.

* Am făcut matematica cu ani în urmă și cred că pentru funcția millis () ar dura ceva de genul unei săptămâni de runtime constantă înainte ca variabila să se bucle.

Pasul 10: Gânduri finale

Gânduri finale
Gânduri finale

Si asta e!

Dacă ați urmat, ar trebui să aveți acum un panou tactil conectat la microcontroler! Acesta a fost un proiect mic, dar face parte dintr-un proiect mai mare. Lucrez la ceva de genul Plate and Ball al lui 271828 și mai am un drum lung de parcurs înainte ca acest lucru să se întâmple. Voi încerca să vă îndrum pentru tot procesul și fiecare parte ar trebui să fie propriul său proiect mic.

Acesta este un proces de învățare pentru mine, așa că nu ezitați să vă lăsați gândurile și sugestiile în comentariile de mai jos.

Mulțumesc și ne vedem data viitoare!

Recomandat: