Satura rādītājs:

Interaktīva bezkontakta gaisma: 7 soļi (ar attēliem)
Interaktīva bezkontakta gaisma: 7 soļi (ar attēliem)

Video: Interaktīva bezkontakta gaisma: 7 soļi (ar attēliem)

Video: Interaktīva bezkontakta gaisma: 7 soļi (ar attēliem)
Video: Leap Motion SDK 2024, Novembris
Anonim
Interaktīva bezkontakta gaisma
Interaktīva bezkontakta gaisma

Sveiki visiem! Es vēlos šeit dalīties ar projektu, pie kura strādāju. Es iedvesmojos eksperimentēt ar kapacitatīvo pieskārienu uztveršanu, izmantojot projektu savā universitātē. Es uzzināju par šo tehnoloģiju, izmantojot pamācības, un izmantoju šeit un citur internetā iemācītās lietas, lai izveidotu savu bezkontakta kontrolieri, ko izmantoju dažādu RGB vērtību sajaukšanai, lai radītu interesantas gaišas krāsas.

Iesākumam, uzsākot šo projektu, es gandrīz neko nezināju ne par elektroniku, ne par kapacitatīvo pieskārienu noteikšanu.

Dažas problēmas, ar kurām es saskāros agri, izraisīja pārpratums par to, kas patiesībā notiek. Tātad īss ievads no tā, kā es to saprotu:

Kapacitīvais sensors izmanto vairākus komponentus, galvenokārt:

Kondensators (šajā projektā mēs izmantojam alumīnija foliju, bet ir iespējams izmantot arī vadošus šķidrumus utt.), vadi (protams, tā elektronika)

un rezistors - viss, kas mazāks par 10 MOhm, ir pārāk maza pretestība vairāk nekā tiešam pieskārienam.

tas darbojas, izmērot laika starpību starp punktu A un punktu B. No sākuma tapas tas nosūta signālu uz gala tapu, laiku, kas nepieciešams, mēra ar taimeri. Samazinot pretestības vērtību (pārvietojot kondensatoru (šajā gadījumā roku) tuvāk sensora kondensatoram (alumīnija folijai), šis laiks saīsinās, laika starpība ir tā, ko sensors atdod kā vērtību.

Sakarā ar to, ka sensoru ietekmē kapacitatīvās virsmas, traucējumi var izraisīt neparastu kļūdu. Lielai daļai to var atrisināt, pareizi izolējot kondensatoru un arī izmantojot zemējumu (kā būs, es parādīšu vēlāk).

Tāpēc tagad mēs varam sākt inventarizēt visu nepieciešamo:

1. darbība. Kas mums vajadzīgs?

Elektronika:

1. 2 x 22M omi + rezistori (jo lielāka pretestības vērtība, jo tālāk jūsu sensors reaģē, es personīgi izmantoju 22M omus, minimums, lai iegūtu man noderīgos datus, bija 10M omi)

2. 3x 330 Ohm rezistori

3. Vadi

4. Maizes dēlis

5. shēmas plate (manējā bija nepārtrauktas vara sloksnes)

6. Vairākas izplatītas katoda RGB gaismas diodes (es izmantoju 8, bet jums var būt vairāk vai mazāk atkarīgs no tā, cik daudz gaismas vēlaties)

7. Alumīnija folija

8. Cling wrap

9. Arduino Uno

10. Lente

Lieta:

1. Koks Es izmantoju 50 x 50 x 1,8 CM MDF (jūs varat izmantot jebko patiešām. Tas ir atkarīgs no vēlamā efekta un jūsu rīcībā esošajiem instrumentiem)

2. Es izmantoju akrila plexiglas 50 x 50 x 0,3 CM (vai jebkuru citu caurspīdīgu/caurspīdīgu materiālu, piemēram, rīspapīru)

3. Smilšpapīrs (smalks smilšpapīrs)

4. Koka līme

5. elnene (pēc izvēles)

6. Akrila līme

Rīki:

Stiepļu noņēmējs

Lodāmurs + alva

Stenlija nazis

urbis

Zāģis (es izmantoju galda zāģi)

2. solis: prototipēšana:

Prototipēšana
Prototipēšana
Prototipēšana
Prototipēšana

Tagad mums ir viss, un mēs varam sākt veidot prototipu, lai redzētu, kā tas darbojas:

Sagatavošanas darbs:

Izgrieziet no alumīnija folijas 4 taisnstūrus (manējie ir apmēram 10 x 5 cm), ietiniet tos pārtikas plēvē, lai izolētu tos no tieša pieskāriena, un pielīmējiet vadu pie alumīnija folijas. Es tikko pielīmēju folijai noņemtu galu (ja vien tie paliek kontaktā).

Lai pārliecinātos, ka alumīnijs ir droši izolēts, es ietinu pārtikas plēvē un gludināju to starp papīriem (tikai dažas sekundes, lai tas pilnībā neizkustu).

Pēc tam iestatiet ķēdi, kā parādīts attēlā.

4. tapu izmanto kā sūtīšanas tapu abiem sensoriem, bet uztveršanas tapas ir 2. un 5. tapas. Jūs varētu izmantot vairākas sūtīšanas tapas, taču tas rada problēmas, jo tās nav pilnīgi sinhronizētas.

izmantojiet šo iestatījumu atkļūdošanas nolūkos pirms visu lodēšanas kopā, lai pārliecinātos, ka viss patiešām darbojas kā paredzēts.

3. darbība: kods:

Tagad mums ir viss, un mēs varam sākt sensoru atkļūdošanu.

Lai izmantotu manu kodu, jums vajadzētu lejupielādēt kapacitīvo sensoru bibliotēku no Arduino un instalēt to saskaņā ar atsauces lapas norādījumiem: Noklikšķiniet uz manis

Kods: (es neprotu kodēt, tāpēc, ja jūs zināt, kā to izdarīt labāk, lūdzu, dariet to)

#include // importēt kodu bibliotēku

CapacitiveSensor cs_4_2 = CapacitiveSensor (4, 2); // Sūtīt pin = 4, saņemt ir 2 un 5 CapacitiveSensor cs_4_5 = CapacitiveSensor (4, 5); const int redPin = 11; const int greenPin = 10; const int bluePin = 9; const int numIndexR = 10; // masīva lielums const int numIndexG = 10; int krāsaR = 0; int krāsaG = 0; pludiņa krāsaB = 0; int indeksR [numIndexR]; int posIndexR = 0; garš kopāR = 0; // tam jābūt garam, jo mana masīva kopsumma bija veselam skaitlim pārāk liela. int vidējiR = 0; int indekssG [numIndexG]; int posIndexG = 0; garš kopāG = 0; int vidējiG = 0; void setup () {pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT); for (int thisIndexR = 0; thisIndexR <numIndexR; thisIndexR ++) {// nosaka masīvu uz 0 indexR [thisIndexR] = 0; } attiecībā uz (int thisIndexG = 0; thisIndexG = 4500) {// ierobežojiet sensora vērtības līdz izmantojamam maksimumam, tas nav vienāds katrai rezistora vērtībai, kā arī var nedaudz atšķirties dažādās vidēs, iespējams, to vajadzēs pielāgot savas vajadzības. kopā1 = 4500; } ja (kopā2> = 4500) {kopā2 = 4500; } totalR = totalR - indexR [posIndexR]; // šeit tiek izveidots masīvs, kas nepārtraukti pievieno sensora izeju un rada vidējo. indekssR [posIndexR] = kopā1; totalR = totalR + indexR [posIndexR]; posIndexR = posIndexR + 1; ja (posIndexR> = numIndexR) {posIndexR = 0; } vidējiR = kopāR / numIndexR; // izejas datu izlīdzināšanai mēs izmantojam vidējo, nevis izejas datus, tas nedaudz palēnina procesu, bet arī rada patiešām jauku vienmērīgu plūsmu. totalG = totalG - indekssG [posIndexG]; indekssG [posIndexG] = kopā2; totalG = totalG + indexG [posIndexG]; posIndexG = posIndexG + 1; ja (posIndexG> = numIndexG) {posIndexG = 0; } vidējiG = kopāG / numIndexG; ja (vidējiR> = 2000) {// mēs nevēlamies, lai gaismas diodes nepārtraukti mainītu vērtību, ja vien jūs neesat saņēmis informāciju, tāpēc tas nodrošina, ka netiek ņemti vērā visi zemākie vides rādījumi. colorR = karte (vidējiR, 1000, 4500, 255, 0); analogWrite (redPin, colorR); } cits if (vidējiR = 1000) {colorG = karte (vidējiG, 1000, 4500, 255, 0); analogWrite (zaļaPin, krāsaG); } cits if (vidējiG <= 1000) {colorG = 255; analogWrite (zaļaPin, krāsaG); } ja (colorR <= 125 && colorG <= 125) {// B darbojas nedaudz savādāk, jo izmantoju tikai 2 sensorus, tāpēc abos sensoros kartēju B colorB = map (colorR, 255, 125, 0, 127.5) + karte (krāsa G, 255, 125, 0, 127,5); analogWrite (zilsPin, krāsaB); } cits {colorB = karte (colorR, 255, 125, 127,5, 0) + karte (colorG, 255, 125, 127,5, 0); ja (krāsaB> = 255) {krāsaB = 255; } ja (krāsaB <= 0) {krāsaB = 0; } analogWrite (zilsPin, krāsaB); } Sērijas nospiedums (milis () - sākums); // tas ir paredzēts atkļūdošanai Serial.print ("\ t"); Sērijas nospiedums (colorR); Serial.print ("\ t"); Sērijas nospiedums (colorG); Serial.print ("\ t"); Serial.println (colorB); kavēšanās (1); }

Šis kods veic neapstrādātu datu iegūšanu no sensora (šie dati vienmēr būs nedaudz kļūdaini, ņemot vērā dažādus faktorus, kas ietekmē sensoru), un tas nepārtraukti ievieto neapstrādātus datus masīvā, kad masīvs sasniedz maksimālo vērtību (manā gadījumā 10) tas attīra pēdējo vērtību un pievieno jaunu. Katru reizi, kad tiek pievienota vērtība, tā aprēķina vidējo vērtību un ievieto to jaunā mainīgajā. Šo vidējo mainīgo izmanto, lai kartētu vērtību līdz vērtībai no 0 līdz 255. Šī ir vērtība, ko mēs rakstām uz RGB tapām, lai palielinātu katra kanāla spilgtumu (kanāli ir R G un B).

Tagad, augšupielādējot kodu arduino un atverot seriālo monitoru, novietojot kursoru virs katra sensora, vajadzētu redzēt zemākas RGB vērtības, kā arī jāmaina gaismas diodes gaismas krāsa.

4. solis. Tagad par lietu:

Tagad par lietu
Tagad par lietu
Tagad par lietu
Tagad par lietu
Tagad par lietu
Tagad par lietu

Lieta: Es izveidoju lietu, izmantojot rīkus, kas pieejami universitātē, tāpēc šī darbplūsma nav piemērota visiem. Tomēr tajā nav nekā pārāk īpaša, tai ir nepieciešams caurums vienā pusē, lai USB ports varētu iziet cauri, izņemot to, ka tā ir tikai atvērta kastīte.

Izmēri ir šādi:

15 x 15 CM caurspīdīgai virsmai

un

15 x 8 CM koka pamatnei (koka biezums man bija 1,8 CM).

Es izmantoju galda zāģi, lai sagrieztu MDF plāksni vajadzīgajos izmēros (kas ir 4 paneļi 15 x 8 CM un 1 15 x 15 CM zemes panelis), pēc tam es sagriezu stūrus 45 grādu leņķī. Visas detaļas es salīmēju kopā, izmantojot koka līmi un skavas (ļaujiet tai nožūt vismaz 30 minūtes), es izmantoju to pašu procedūru plexiglas, bet ar īpašu zāģa asmeni.

1 no koka malām jābūt caurumam centrā arduino USB spraudņa augstumā, lai arduino varētu pievienot.

Es pabeidzu pamatni ar finieri. Es to sagriezu gabalos, kas ir nedaudz lielāki par katras puses virsmu.

Es to pielīmēju, pēc tam saspiedu 30 minūtes katrā pusē (labāk to darīt atsevišķi, lai jūs pārliecinātos, ka tas neslīd, un pēc žāvēšanas es nogriezu visu, kas iestrēdzis.

Vāciņu salīmēju kopā, izmantojot Acryl īpašo līmi Acryfix.

Ņemiet vērā: ja izmantojat akrila plexiglas, līme nedaudz izšķīdina plexiglas, tāpēc esiet pēc iespējas precīzāks un ātrāks (tas izžūst pāris minūšu laikā, bet dažu sekunžu laikā tiek pakļauts gaisam).

Lai pabeigtu vāciņu, es sasmalcināju kubu ar smilšu strūklu, bet jūs varat arī izmantot smalku smilšpapīru, tas prasa daudz vairāk laika, lai tas izskatītos vienmērīgi. Tomēr, ja izmantojat smilšpapīru, tam jābūt smalki graudainam un pēc matēšanas procedūras arī jāpielīmē detaļas kopā (lai jūs to nejauši nesalauztu, izdarot lielu spiedienu)

Lai pārliecinātos, ka vāciņš neslīd pārāk daudz, es koka kuba malās pielīmēju pāris mazus koka stieņus.

5. darbība. Galarezultātam vajadzētu izskatīties apmēram šādi:

Galarezultātam vajadzētu izskatīties apmēram šādi
Galarezultātam vajadzētu izskatīties apmēram šādi

6. solis: lodēšana

Lodēšana!
Lodēšana!
Lodēšana!
Lodēšana!

Ja jums ir shēmas plate, varat sākt lodēt visas detaļas kopā, izmantojot to pašu iestatījumu, kāds ir jūsu maizes plāksnei.

Manai shēmas platei ir nepārtrauktas vara sloksnes, kas atvieglo lietošanu.

Katram sensoram es nogriezu nelielu kvadrātu, lai pielodētu rezistorus un vadus.

Nosūtīšanas vadi (vadi, kas iet no 4. tapas uz katru sensoru) ir pielodēti secīgi uz atsevišķu kvadrātu, ar 1 vadu, kas nonāk 4. tapā.

Es turēju garu taisnstūri, lai izveidotu improvizētu LED sloksni (izmēriet tā, lai tā ietilptu vāciņa iekšpusē, bet pamatnes malās). Jūs varat vienkārši lodēt gaismas diodes pēc kārtas (paturiet prātā attēlā es nejauši pielodēju gaismas diodes un rezistorus shēmas plates nepareizajā pusē, vara sloksnēm vienmēr jābūt apakšpusē).

Kad esat pabeidzis lodēt atsevišķas detaļas kopā, ievietojiet tās korpusā. Es nelodēju kopā savus atsevišķos vadus, lai vajadzības gadījumā tos varētu viegli nomainīt.

Laiks visu ievietot pamatnē: tas ir diezgan vienkāršākais solis, vispirms arduino ir jāatrodas ar USB portu caur caurumu korpusa aizmugurē. Tagad pievienojiet sensorus, pārliecinieties, ka sensora folija abās pusēs pieguļ kokam, un zemes folija ir taisni pret to. Kad tas viss labi iederas, pievienojiet RGB gaismas diodes labajām tapām (9, 10, 11) un ļaujiet tām atbalstīties uz pamatnes malām.

7. solis: mēs esam pabeiguši

Ja esat to izdarījis, tagad jums ir jābūt darba gaismai ar kapacitatīvu pieskārienu krāsu sajaukšanu. Izklaidējieties!

Ieteicams: