Cuprins:

Lumină interactivă fără atingere: 7 pași (cu imagini)
Lumină interactivă fără atingere: 7 pași (cu imagini)

Video: Lumină interactivă fără atingere: 7 pași (cu imagini)

Video: Lumină interactivă fără atingere: 7 pași (cu imagini)
Video: ILUMINAREA MINȚII ȘI TREZIREA SPIRITUALĂ | MARELE SALT | ECUAȚIA TREZIRII (7) 2024, Noiembrie
Anonim
Lumină interactivă fără atingere
Lumină interactivă fără atingere

Buna tuturor! Aș dori să împărtășesc proiectul la care am lucrat aici. M-am inspirat să experimentez capacitatea tactilă prin intermediul unui proiect din universitatea mea. Am aflat despre această tehnologie prin instructabile și am folosit lucrurile pe care le-am învățat aici și din alte locuri de pe internet pentru a-mi construi propriul controler touch-less, pe care îl folosesc pentru a combina diferite valori RGB pentru a crea culori luminoase interesante.

Pentru început, când am început acest proiect, nu știam aproape nimic despre electronică și nici despre detectarea capacitivă.

Unele probleme la care m-am confruntat mai devreme au fost cauzate de neînțelegerea a ceea ce se întâmplă de fapt. Deci o scurtă introducere din modul în care înțeleg:

Un senzor capacitiv folosește mai multe componente, în principal:

Un condensator (în acest proiect folosim folie de aluminiu, dar este posibil și să folosim fluide conductoare etc.), fire (desigur, electronica sa)

și un rezistor, orice sub 10 MOhm este o rezistență prea mică pentru mai mult decât atingerea directă.

modul în care funcționează este prin măsurarea unei diferențe de timp între punctul A și punctul B. De la pinul de start trimite un semnal către un pin final, timpul necesar este măsurat cu un temporizator. Prin scăderea valorii rezistenței (prin mutarea unui condensator (în acest caz mâna ta) mai aproape de condensatorul senzorului (folia de aluminiu) acest timp se scurtează, diferența de timp este ceea ce senzorul dă înapoi ca valoare.

Datorită faptului că senzorul este afectat de suprafețele capacitive, datele pot fi extrem de neregulate din cauza interferențelor. Acest lucru poate fi rezolvat pentru o mare parte prin izolarea corectă a condensatorului și, de asemenea, prin utilizarea unei pământuri (voi arăta cum mai târziu).

Deci, acum acest lucru este în afara modului, putem începe inventarierea tuturor lucrurilor de care avem nevoie:

Pasul 1: De ce avem nevoie?

Electronică:

1. 2 x 22M Ohm + rezistențe (cu cât valoarea rezistenței este mai mare, cu atât senzorul dvs. reacționează mai departe, eu personal am folosit 22M Ohm, minimul pentru a obține date utilizabile pe care le-am experimentat a fost de 10M Ohm)

2. Rezistoare 3x 330 Ohm

3. Firele

4. Pană de pâine

5. Circuit (al meu avea benzi de cupru continouos)

6. Leds RGB catodice comune (am folosit 8, dar puteți avea mai mult sau mai puțin depinde de câtă lumină doriți)

7. Folie de aluminiu

8. Înfășurați-vă

9. Arduino Uno

10. Bandă

Cazul:

1. Lemn Am folosit MDF 50 x 50 x 1,8 CM (puteți folosi orice cu adevărat. Depinde de efectul dorit și de instrumentele pe care le aveți la dispoziție)

2. Plexiglas acrilic Am folosit 50 x 50 x 0,3 CM (sau orice alt material transparent / translucid, cum ar fi hârtia de orez)

3. Șmirghel (șmirghel fin)

4. Lemn-lipici

5. seara (opțional)

6. Lipici acrilic

Instrumente:

Dispozitiv de sârmă

Fier de lipit + tablă

Cuțit Stanley

burghiu

Ferăstrău (am folosit un ferăstrău de masă)

Pasul 2: Prototipare:

Prototipare
Prototipare
Prototipare
Prototipare

Acum avem totul și putem începe să realizăm un prototip pentru a vedea cum funcționează:

Lucrări de pregătire:

Tăiați 4 dreptunghiuri din folia de aluminiu (ale mele sunt de aproximativ 10 cm pe 5 cm), înfășurați-le în folie aglomerată pentru a le izola de contactul direct și lipiți o sârmă pe folia de aluminiu. Tocmai am lipit un capăt dezbrăcat pe folie (atâta timp cât rămân în contact).

Pentru a mă asigura că aluminiul este izolat în siguranță, l-am înfășurat în folie și l-am călcat între hârtii (doar câteva secunde, astfel încât să nu se topească complet).

Apoi configurați circuitul așa cum se vede în imagine.

Pinul 4 este utilizat ca pin de trimitere pentru ambii senzori, în timp ce pinii de recepție sunt pinii 2 și 5. Puteți utiliza mai mulți pinii de trimitere, dar cauzează probleme, deoarece nu sunt sincronizați perfect.

utilizați această configurație în scopuri de depanare înainte de a lipi totul împreună, pentru a vă asigura că totul funcționează cu adevărat conform intenției.

Pasul 3: Cod:

Acum avem totul și putem începe să depanăm senzorii.

Pentru a utiliza codul meu, ar trebui să descărcați biblioteca de detectare capacitivă de la Arduino și să o instalați conform instrucțiunilor date de pagina de referință: Faceți clic pe mine

Codul: (nu mă pricep la codificare, așa că dacă știi cum să o faci mai bine, te rog)

#include // import biblioteca de coduri

CapacitiveSensor cs_4_2 = CapacitiveSensor (4, 2); // Trimiteți pinul = 4, primiți 2 și 5 CapacitiveSensor cs_4_5 = CapacitiveSensor (4, 5); const int redPin = 11; const int greenPin = 10; const int bluePin = 9; const int numIndexR = 10; // dimensiunea matricei const int numIndexG = 10; int colorR = 0; int colorG = 0; culoare floatB = 0; int indexR [numIndexR]; int posIndexR = 0; lung totalR = 0; // trebuie să fie lung, deoarece totalul matricei mele a fost la mare pentru un număr întreg. int medie R = 0; int indexG [numIndexG]; int posIndexG = 0; lung totalG = 0; int medie G = 0; setare nulă () {pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT); for (int thisIndexR = 0; thisIndexR <numIndexR; thisIndexR ++) {// setează matricea la 0 indexR [thisIndexR] = 0; } for (int thisIndexG = 0; thisIndexG = 4500) {// limita valorilor senzorului la un maxim utilizabil, acest lucru nu este același pentru fiecare valoare a rezistorului și, de asemenea, s-ar putea să difere un pic de la mediu la mediu, ar putea fi necesar să le modificați propriile tale nevoi. total1 = 4500; } if (total2> = 4500) {total2 = 4500; } totalR = totalR - indexR [posIndexR]; // aici creează o matrice care adaugă continuu o ieșire a senzorului și produce media. indexR [posIndexR] = total1; totalR = totalR + indexR [posIndexR]; posIndexR = posIndexR + 1; if (posIndexR> = numIndexR) {posIndexR = 0; } medieR = totalR / numIndexR; // folosim media în locul datelor brute pentru a netezi ieșirea, încetinește ușor procesul, dar creează, de asemenea, un flux neted foarte frumos. totalG = totalG - indexG [posIndexG]; indexG [posIndexG] = total2; totalG = totalG + indexG [posIndexG]; posIndexG = posIndexG + 1; if (posIndexG> = numIndexG) {posIndexG = 0; } medieG = totalG / numIndexG; if (averageR> = 2000) {// nu vrem ca led-urile să schimbe constant valoarea, cu excepția cazului în care există date din mâna dvs., deci acest lucru ne asigură că nu sunt luate în considerare toate citirile de mediu mai mici. colorR = hartă (medie R, 1000, 4500, 255, 0); analogWrite (redPin, colorR); } else if (averageR = 1000) {colorG = map (averageG, 1000, 4500, 255, 0); analogWrite (greenPin, colorG); } else if (averageG <= 1000) {colorG = 255; analogWrite (greenPin, colorG); } if (colorR <= 125 && colorG <= 125) {// B funcționează puțin diferit deoarece am folosit doar 2 senzori, așa că am mapat B pe ambii senzori colorB = hartă (colorR, 255, 125, 0, 127.5) + hartă (colorG, 255, 125, 0, 127,5); analogWrite (bluePin, colorB); } else {colorB = hartă (colorR, 255, 125, 127,5, 0) + hartă (colorG, 255, 125, 127,5, 0); if (colorB> = 255) {colorB = 255; } if (colorB <= 0) {colorB = 0; } analogWrite (bluePin, colorB); } Serial.print (millis () - start); // aceasta este în scopuri de depanare Serial.print ("\ t"); Serial.print (colorR); Serial.print ("\ t"); Serial.print (colorG); Serial.print ("\ t"); Serial.println (colorB); întârziere (1); }

Ceea ce face acest cod este extragerea datelor brute de la senzor (aceste date vor fi întotdeauna ușor neregulate din cauza tuturor diferiților factori care afectează senzorul) și pune datele brute continuu într-o matrice, atunci când matricea atinge este valoarea maximă (în cazul meu 10) curăță ultima valoare și adaugă una nouă. De fiecare dată când se adaugă o valoare, aceasta calculează valoarea medie și o plasează într-o nouă variabilă. Această variabilă medie este utilizată pentru maparea unei valori de la 0 la 255, aceasta este valoarea pe care o scriem pinilor RGB pentru a crește luminozitatea fiecărui canal (canalele fiind R G și B).

Acum, dacă încărcați codul pe arduino și deschideți monitorul serial, ar trebui să vedeți valorile RGB mai mici atunci când plasați mâna peste fiecare senzor, de asemenea, culoarea luminii led-ului ar trebui să se schimbe.

Pasul 4: Acum pentru caz:

Acum pentru caz
Acum pentru caz
Acum pentru caz
Acum pentru caz
Acum pentru caz
Acum pentru caz

Cazul: am făcut cazul folosind instrumentele disponibile prin universitatea mea, astfel încât acest flux de lucru nu este aplicabil pentru toată lumea. Cu toate acestea, nu este nimic prea special, are nevoie de o gaură pe o parte pentru ca portul USB să se potrivească, dar în afară de aceasta este doar o cutie deschisă.

Dimensiunile sunt după cum urmează:

15 x 15 CM pentru partea superioară transparentă

și

15 x 8 CM pentru baza din lemn (grosimea lemnului a fost de 1,8 CM pentru mine).

Am folosit un ferăstrău de masă pentru a tăia o placă de MDF în dimensiunile corecte de care aveam nevoie (adică 4 panouri de 15 x 8 cm și 1 panou de masă de 15 x 15 cm), după care am tăiat colțurile într-un unghi de 45 de grade. Toate părțile pe care le-am lipit folosind clei și cleme pentru lemn (lăsați-l să se usuce cel puțin 30 de minute), am folosit aceeași procedură pentru Plexiglas, dar cu o lamă specială de ferăstrău.

1 din laturile de lemn ar trebui să aibă o gaură în centru la înălțimea fișei USB arduino pentru a permite conectarea arduino-ului.

Am terminat baza cu furnir. L-am tăiat în bucăți puțin mai mari decât suprafața fiecărei părți.

Acest lucru l-am lipit pe el, apoi l-am prins 30 de minute pentru fiecare parte (mai bine să o faceți individual, astfel încât să vă asigurați că nu alunecă și după ce s-a uscat, am tăiat tot ce a ieșit.

Capacul pe care l-am lipit folosind un adeziv specific pentru Acryl numit Acryfix.

Rețineți că, dacă utilizați Plexiglas acrilic, adezivul dizolvă puțin Plexiglasul, deci fiți cât mai precise și rapide (se usucă în câteva minute, dar expuse la aer în câteva secunde).

Pentru a termina capacul, am înghețat cubul cu un sablon, dar puteți folosi și șmirghel fin, este nevoie de mult mai mult timp pentru a face să pară uniform. Fiți atenți, totuși, dacă utilizați șmirghel, acesta trebuie să fie cu granulație fină și, de asemenea, lipiți piesele împreună după procedura de îngheț (deci nu o rupeți accidental prin aplicarea unei presiuni mari)

Pentru a mă asigura că capacul nu alunecă prea mult, am lipit câteva bare mici de lemn pe marginile cubului de lemn.

Pasul 5: Rezultatul final ar trebui să arate cam așa:

Rezultatul final ar trebui să arate așa
Rezultatul final ar trebui să arate așa

Pasul 6: lipirea

Lipire!
Lipire!
Lipire!
Lipire!

Dacă aveți o placă de circuit, puteți începe să lipiți toate piesele împreună utilizând aceeași configurație pe care o are placa dvs. de calcul.

Circuitul meu are benzi de cupru continue pentru ușurință în utilizare.

Pentru fiecare senzor am tăiat un mic pătrat pentru a lipi rezistențele și firele.

Firele de transmisie (firele care merg de la pinul 4 la fiecare senzor) sunt lipite în ordine într-un pătrat separat, cu un fir care intră în pinul 4.

Am păstrat un dreptunghi lung pentru a face o bandă led improvizată (măsurați-o astfel încât să se potrivească în interiorul capacului, dar pe marginile bazei). Puteți doar să lipiți ledurile în ordine una după alta (rețineți în imaginea în care am lipit accidental ledurile și rezistoarele de pe partea greșită a plăcii de circuite, benzile de cupru ar trebui să fie întotdeauna pe partea inferioară).

Când ați terminat de lipit piesele individuale împreună, montați-le în carcasă. Nu mi-am lipit firele individuale împreună, astfel încât să le pot schimba cu ușurință, dacă este necesar.

Este timpul să încapi totul în bază: acesta este cam cel mai ușor pas, arduino trebuie să fie plasat mai întâi cu portul USB prin orificiul din spatele carcasei. Acum adăugați senzorii, asigurați-vă că folia senzorului se potrivește cu lemnul de ambele părți, cu folia de sol directă împotriva acestuia. Când totul se potrivește bine, conectați ledurile RGB la pinii din dreapta (9, 10, 11) și lăsați-l să se sprijine pe marginile bazei.

Pasul 7: Am terminat

Dacă ați continuat cu toate acestea, ar trebui să aveți acum o lumină de lucru cu amestecare capacitivă a culorilor tactile. A se distra!

Recomandat: