Sisällysluettelo:

Interaktiivinen kosketusvapaa valo: 7 vaihetta (kuvilla)
Interaktiivinen kosketusvapaa valo: 7 vaihetta (kuvilla)

Video: Interaktiivinen kosketusvapaa valo: 7 vaihetta (kuvilla)

Video: Interaktiivinen kosketusvapaa valo: 7 vaihetta (kuvilla)
Video: Oras Eterna - Kylpyamme hana 2024, Marraskuu
Anonim
Interaktiivinen kosketusvapaa valo
Interaktiivinen kosketusvapaa valo

Hei kaikki! Haluan jakaa tänne projektin, jonka parissa olen työskennellyt. Sain inspiraation kokeilla kapasitiivista kosketustunnistusta yliopistoni projektin kautta. Opin tästä tekniikasta ohjeiden avulla ja käytin täällä ja muualta Internetistä opittuja asioita rakentaakseni oman kosketuksettoman ohjaimen, jolla sekoitan eri RGB-arvoja luodakseni mielenkiintoisia vaaleita värejä.

Aloittelijoille, kun aloitin tämän projektin, tiesin lähes mitään elektroniikasta tai kapasitiivisesta kosketustunnistuksesta.

Jotkut ongelmat, joihin törmäsin varhain, johtuivat väärinkäsityksestä siitä, mitä todella tapahtuu. Joten lyhyt johdanto siitä, miten ymmärrän sen:

Kapasitiivinen anturi käyttää useita komponentteja, pääasiassa:

Kondensaattori (tässä projektissa käytämme alumiinifoliota, mutta on myös mahdollista käyttää johtavia nesteitä jne.), johdot (tietysti sen elektroniikka)

ja vastus, kaikki alle 10 MOhm on liian pieni vastus enemmän kuin suora kosketus.

Se toimii mittaamalla ajan ero pisteen A ja pisteen B välillä. Alustapista se lähettää signaalin päätytappiin, ja sen aika mitataan ajastimella. Pienentämällä vastusarvoa (siirtämällä kondensaattoria (tässä tapauksessa kättäsi) lähemmäksi anturin kondensaattoria (alumiinifoliota) tämä aika lyhenee, aikaero on se, mitä anturi antaa takaisin arvona.

Koska kapasitiiviset pinnat vaikuttavat anturiin, tiedot voivat olla häiriöistä johtuen villiä. Tämä voidaan ratkaista suurelta osin eristämällä kondensaattori oikein ja myös käyttämällä maadoitusta (näytän kuinka myöhemmin).

Joten nyt se on poissa tieltä, voimme alkaa inventoida kaikkia tarvitsemiamme tavaroita:

Vaihe 1: Mitä tarvitsemme?

Elektroniikka:

1. 2 x 22 M ohmia + vastukset (mitä suurempi vastusarvo, sitä kauemmas anturi reagoi, käytin henkilökohtaisesti 22 M ohmia, minimi käyttökelpoisten tietojen saamiseksi oli 10 M ohmia)

2. 3x 330 ohmin vastukset

3.johdot

4. Leipälauta

5. Piirilevy (kaivoksessani oli jatkuvia kupariliuskoja)

6. Useita yhteisiä katodisia RGB -ledejä (käytin 8, mutta voit saada enemmän tai vähemmän riippuen siitä, kuinka paljon valoa haluat)

7. alumiinifolio

8. Kiinnike

9. Arduino Uno

10. Nauha

Tapaus:

1. Puu Käytin 50 x 50 x 1,8 cm: n MDF -levyä (voit käyttää mitä tahansa. Se riippuu haluamastasi vaikutuksesta ja käytettävistä työkaluista)

2. Käytin akryylipleksilasia 50 x 50 x 0,3 CM (tai mitä tahansa muuta läpinäkyvää/läpikuultavaa materiaalia, kuten riisipaperia)

3. hiekkapaperi (hieno hiekkapaperi)

4. puuliima

5. harrastaja (valinnainen)

6. akryyliliimaa

Työkalut:

Langanpoistaja

Juotin + tina

Stanley veitsi

porata

Saha (käytin pöytäsahaa)

Vaihe 2: Prototyyppien luominen:

Prototyyppien luominen
Prototyyppien luominen
Prototyyppien luominen
Prototyyppien luominen

Nyt meillä on kaikki ja voimme alkaa tehdä prototyyppiä nähdäksemme, miten se toimii:

Valmistelutyöt:

Leikkaa alumiinifoliosta 4 suorakulmiota (omani ovat noin 10 x 5 cm), kiedo ne kiinni kääreeseen eristääksesi ne suorasta kosketuksesta ja kiinnitä lanka alumiinifolioon. Teipasin juuri irrotetun pään kalvoon (niin kauan kuin ne pysyvät kosketuksissa).

Varmistaakseni, että alumiini on turvallisesti eristetty, käärin sen kääreeseen ja silitin sen paperien väliin (vain muutaman sekunnin ajan, jotta se ei sula kokonaan).

Aseta sitten piiri kuvan mukaisesti.

Nasta 4 toimii lähettimenapina molemmille antureille, kun taas vastaanottotapit ovat nastat 2 ja 5. Voit käyttää useita lähetystappeja, mutta se aiheuttaa ongelmia, koska ne eivät ole täysin synkronoituja.

käytä tätä asetusta virheenkorjaustarkoituksiin ennen kaiken juottamista yhteen varmistaaksesi, että kaikki todella toimii suunnitellulla tavalla.

Vaihe 3: Koodi:

Nyt meillä on kaikki ja voimme aloittaa antureiden vianetsinnän.

Jotta voisin käyttää koodiani, lataa kapasitiivinen tunnistuskirjasto Arduinosta ja asenna se viitesivun ohjeiden mukaisesti: Napsauta minua

Koodi: (En ole hyvä koodauksessa, joten jos tiedät kuinka tehdä se paremmin, tee se)

#include // tuo koodikirjasto

CapacitiveSensor cs_4_2 = Kapasitiivinen anturi (4, 2); // Lähetä pin = 4, vastaanota 2 ja 5 CapacitiveSensor cs_4_5 = CapacitiveSensor (4, 5); const int redPin = 11; const int vihreäPin = 10; const int bluePin = 9; const int numIndexR = 10; // taulukon koko const int numIndexG = 10; int väriR = 0; int väriG = 0; kellukkeen väriB = 0; int indeksiR [numIndexR]; int posIndexR = 0; pitkä yhteensäR = 0; // sen on oltava pitkä, koska matriisin kokonaismäärä oli liian suuri kokonaisluvulle. int keskiarvoR = 0; int -indeksiG [numIndexG]; int posIndexG = 0; pitkä yhteensäG = 0; int keskiarvoG = 0; void setup () {pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT); for (int thisIndexR = 0; thisIndexR <numIndexR; thisIndexR ++) {// asettaa taulukon arvoksi 0 indexR [thisIndexR] = 0; } for (int thisIndexG = 0; thisIndexG = 4500) {// rajaa anturien arvot käyttökelpoiseen maksimiin, tämä ei ole sama jokaiselle vastuksen arvolle ja saattaa myös vaihdella hieman eri ympäristöissä, joita sinun on ehkä muokattava omat tarpeesi. yhteensä1 = 4500; } jos (yhteensä2> = 4500) {yhteensä2 = 4500; } totalR = totalR - indexR [posIndexR]; // tämä luo taulukon, joka lisää jatkuvasti anturilähtöä ja tuottaa keskiarvon. indeksiR [posIndexR] = yhteensä1; totalR = yhteensäR + indeksiR [posIndexR]; posIndexR = posIndexR + 1; jos (posIndexR> = numIndexR) {posIndexR = 0; } keskiarvoR = yhteensäR / numIndexR; // käytämme raakadatan sijasta keskiarvoa tasoittaaksesi tuotoksen, se hidastaa prosessia hieman, mutta luo myös todella mukavan tasaisen virtauksen. totalG = totalG - indexG [posIndexG]; indeksiG [posIndexG] = yhteensä2; totalG = yhteensäG + indeksiG [posIndexG]; posIndexG = posIndexG + 1; jos (posIndexG> = numIndexG) {posIndexG = 0; } keskiarvoG = yhteensäG / numIndexG; jos (keskiarvoR> = 2000) {// emme halua ledien muuttavan jatkuvasti arvoa, ellei sinun kättäsi syötetä, joten tämä varmistaa, että kaikkia pienempiä ympäristön lukemia ei oteta huomioon. colorR = kartta (keskiarvoR, 1000, 4500, 255, 0); analogWrite (punainenPin, väriR); } muu jos (keskiarvoR = 1000) {väriG = kartta (keskiarvoG, 1000, 4500, 255, 0); analogWrite (vihreäPin, väriG); } muu jos (keskiarvoG <= 1000) {väriG = 255; analogWrite (vihreäPin, väriG); } if (colorR <= 125 && colorG <= 125) {// B toimii hieman eri tavalla, koska käytin vain 2 anturia, joten kartoitin B: n molempiin antureihin colorB = map (colorR, 255, 125, 0, 127.5) + kartta (väriG, 255, 125, 0, 127,5); analogWrite (sininenPin, väriB); } else {colorB = kartta (colorR, 255, 125, 127,5, 0) + kartta (colorG, 255, 125, 127,5, 0); jos (väriB> = 255) {väriB = 255; } jos (väriB <= 0) {väriB = 0; } analogWrite (sininenPin, väriB); } Sarjajälki (millis () - alku); // tämä on virheenkorjausta varten Serial.print ("\ t"); Sarjanjälki (colorR); Serial.print ("\ t"); Sarjanjälki (väriG); Serial.print ("\ t"); Sarja.println (väriB); viive (1); }

Tämä koodi tekee raakadatan poimimisen anturista (nämä tiedot ovat aina hieman epätarkkoja kaikkien anturiin vaikuttavien eri tekijöiden vuoksi) ja se asettaa raakatiedot jatkuvasti matriisiin, kun matriisi saavuttaa maksimiarvon (minun tapauksessani 10) se puhdistaa viimeisen arvon ja lisää uuden arvon. Aina kun arvo lisätään, se laskee keskiarvon ja laittaa sen uuteen muuttujaan. Tätä keskimääräistä muuttujaa käytetään arvon kartoittamiseen arvoon 0–255. Tämä on arvo, jonka kirjoitamme RGB -nastoihin kunkin kanavan kirkkauden lisäämiseksi (kanavat RG ja B).

Jos lataat koodisi arduinoon ja avaat sarjamonitorin, sinun pitäisi nähdä RGB -arvot pienemmiksi, kun viet hiiren käden jokaisen anturin päälle, myös ledin valon värin pitäisi muuttua.

Vaihe 4: Nyt tapaukselle:

Nyt tapauksesta
Nyt tapauksesta
Nyt tapauksesta
Nyt tapauksesta
Nyt tapauksesta
Nyt tapauksesta

Tapaus: Tein tapauksen yliopistoni kautta saatavilla työkaluilla, joten tämä työnkulku ei sovellu kaikille. Siinä ei kuitenkaan ole mitään liian erikoista, se tarvitsee reiän toiselle puolelle, jotta USB -portti mahtuu, mutta muuten se on vain avoin laatikko.

Mitat ovat seuraavat:

15 x 15 CM läpinäkyvälle yläosalle

ja

15 x 8 CM puupohjalle (puun paksuus oli minulle 1,8 CM).

Leikkasin pöytäsahalla MDF -levyn tarvitsemiini mittoihin (joka on 4 paneelia 15 x 8 CM ja 1 15 x 15 CM pohjalevyä), minkä jälkeen leikkasin kulmat 45 asteen kulmaan. Kaikki osat, jotka kiinnitin yhteen puuliimalla ja puristimilla (anna kuivua vähintään 30 minuuttia), käytin samaa menettelyä pleksilasille, mutta erityisellä sahanterällä.

Yhdessä puupuolella pitäisi olla reikä keskellä arduino -USB -pistokkeen korkeudella, jotta arduino voidaan kytkeä.

Viimeistelin pohjan viilulla. Leikkasin sen hieman suuremmiksi paloiksi kuin kummankin puolen pinta.

Tämän liimasin sen päälle ja sitten puristin sen 30 minuutiksi kummallekin puolelle (parempi tehdä se erikseen, jotta varmistat, ettei se liuku ja kuivumisen jälkeen leikkasin kaikki kiinni.

Korkki liimasin yhteen Acryl -liimalla nimeltä Acryfix.

Huomaa, että jos käytät akryylipleksilasia, liima liuottaa pleksilasia hieman, joten ole mahdollisimman tarkka ja nopea (se kuivuu muutamassa minuutissa, mutta altistuu ilmalle muutamassa sekunnissa).

Lopettaaksesi korkin, himmennin kuution hiekkapuhaltimella, mutta voit myös käyttää hienoa hiekkapaperia, vain kestää paljon enemmän aikaa, jotta se näyttää tasaiselta. Muista kuitenkin, että jos käytät hiekkapaperia, sen on oltava hienorakeista ja liimaa myös osat yhteen kuorrutusprosessin jälkeen (joten et riko sitä vahingossa kohdistamalla paljon painetta)

Varmistaakseni, että korkki ei liukua liikaa, liimasin pari pientä puupalkkia puukuution reunoille.

Vaihe 5: Lopputuloksen pitäisi näyttää tältä:

Lopputuloksen pitäisi näyttää suunnilleen tältä
Lopputuloksen pitäisi näyttää suunnilleen tältä

Vaihe 6: Juotos

Juotos!
Juotos!
Juotos!
Juotos!

Jos sinulla on piirilevy, voit aloittaa kaikkien osien juottamisen yhteen käyttämällä samaa asetusta kuin leipälevylläsi.

Piirilevyssä on jatkuvia kupariliuskoja käytön helpottamiseksi.

Leikkasin jokaiselle anturille pienen neliön vastusten ja johtojen juottamiseksi.

Lähetysjohdot (johdot, jotka kulkevat nastasta 4 jokaiseen anturiin) juotetaan peräkkäin erilliseen neliöön, jossa on 1 johdin, joka menee nastaan 4.

Pidin pitkän suorakulmion tehdäkseni improvisoidun led -nauhan (mittaa se niin, että se sopii korkin sisälle, mutta pohjan reunoihin). Voit vain juottaa ledit peräkkäin peräkkäin (muista kuvassa, että juotin vahingossa ledit ja vastukset piirilevyn väärälle puolelle, kupariliuskojen tulisi aina olla alapuolella).

Kun olet juottanut yksittäiset osat yhteen, aseta ne koteloon. En juottanut yksittäisiä johtoja yhteen, jotta voin vaihtaa ne helposti tarvittaessa.

Aika sovittaa kaikki pohjaan: Tämä on melkein helpoin vaihe, arduino on asetettava ensin USB -portin kanssa kotelon takana olevan reiän läpi. Lisää nyt anturit ja varmista, että anturikalvo sopii puuta vasten molemmin puolin ja maadoituskalvo suoraan sitä vasten. Kun kaikki sopii hyvin, kytke RGB -ledit oikeisiin nastoihin (9, 10, 11) ja anna niiden nojata alustan reunoihin.

Vaihe 7: Valmis

Jos olet noudattanut tätä kaikkea, sinulla pitäisi nyt olla työvalo, jossa on kapasitiivinen kosketusvärisekoitus. Pidä hauskaa!

Suositeltava: