Obsah:

Interaktivní bezdotykové světlo: 7 kroků (s obrázky)
Interaktivní bezdotykové světlo: 7 kroků (s obrázky)

Video: Interaktivní bezdotykové světlo: 7 kroků (s obrázky)

Video: Interaktivní bezdotykové světlo: 7 kroků (s obrázky)
Video: CZ - Poznejte nové spektrofotometry X-Rite řady Ci6x! Nejdůležitější informace během 30 minut! 2024, Listopad
Anonim
Interaktivní bezdotykové světlo
Interaktivní bezdotykové světlo

Ahoj všichni! Rád bych se zde podělil o projekt, na kterém jsem pracoval. Inspiroval jsem se k experimentu s kapacitním dotykovým snímáním prostřednictvím projektu na mé univerzitě. Dozvěděl jsem se o této technologii prostřednictvím instrukcí a použil jsem věci, které jsem se naučil zde a z jiných míst na internetu, k vybudování vlastního bezdotykového ovladače, který používám k míchání různých hodnot RGB a vytváření zajímavých barev světla.

Pro začátek, když jsem zahájil tento projekt, nevěděl jsem téměř nic o elektronice ani kapacitním dotykovém snímání.

Některé problémy, se kterými jsem se setkal na začátku, byly způsobeny nepochopením toho, co se ve skutečnosti děje. Takže krátký úvod z toho, jak tomu rozumím:

Kapacitní senzor využívá více komponent, zejména:

Kondenzátor (v tomto projektu používáme hliníkovou fólii, ale je také možné použít vodivé kapaliny atd.), dráty (samozřejmě, jeho elektronika)

a odpor, cokoli pod 10 MOhm je příliš malý odpor pro více než přímý dotek.

funguje to tak, že se měří časový rozdíl mezi bodem A a bodem B. Z počátečního pinu vysílá signál na koncový kolík, čas, který zabere, se měří časovačem. Snížením hodnoty odporu (přesunutím kondenzátoru (v tomto případě vaší ruky) blíže ke kondenzátoru senzoru (hliníkové fólie) se tento čas zkrátí, rozdíl v čase je to, co senzor vrátí jako hodnotu.

Vzhledem k tomu, že je snímač ovlivněn kapacitními povrchy, mohou být data kvůli interferenci velmi nestálá. To lze z velké části vyřešit správnou izolací kondenzátoru a také použitím uzemnění (jak na to ukážu později).

Takže teď to není možné, můžeme začít inventarizovat vše, co potřebujeme:

Krok 1: Co potřebujeme?

Elektronika:

1. 2 x 22M Ohm + odpory (čím větší je hodnota odporu, tím dále reaguje váš senzor, osobně jsem použil 22M Ohm, minimum pro získání použitelných dat, které jsem zažil, bylo 10M Ohm)

2. 3x 330 Ohm odpory

3. Dráty

4. Breadboard

5. Deska s plošnými spoji (moje měla kontinosové měděné pásy)

6. Několik běžných LED Cathode RGB (použil jsem 8, ale můžete mít více nebo méně, záleží na tom, kolik světla chcete)

7. Hliníková fólie

8. Přilnavý obal

9. Arduino Uno

10. Páska

Pouzdro:

1. Dřevo Použil jsem MDF 50 x 50 x 1,8 CM (můžete použít opravdu cokoli. Záleží na požadovaném efektu a nástrojích, které máte k dispozici)

2. Akrylové plexisklo Použil jsem 50 x 50 x 0,3 CM (nebo jakýkoli jiný průhledný/průsvitný materiál, jako je rýžový papír)

3. Brusný papír (jemný brusný papír)

4. Lepidlo na dřevo

5. dýha (volitelně)

6. Akrylové lepidlo

Nástroje:

Odstraňovač drátů

Páječka + cín

Stanleyho nůž

vrtat

Pila (použil jsem stolní pilu)

Krok 2: Prototypování:

Prototypování
Prototypování
Prototypování
Prototypování

Nyní máme vše a můžeme začít vyrábět prototyp, abychom zjistili, jak funguje:

Přípravné práce:

Z hliníkové fólie vystřihněte 4 obdélníky (moje mají asi 10 cm x 5 cm), zabalte je do potravinářské fólie, abyste je izolovali přímým dotykem, a na hliníkovou fólii přilepte drát. Právě jsem nalepil odizolovaný konec na fólii (dokud zůstanou v kontaktu).

Abych se ujistil, že hliník je bezpečně izolován, zabalil jsem ho do lepicí fólie a zažehlil mezi papíry (jen na několik sekund, aby se úplně neroztavil).

Poté nastavte obvod, jak je vidět na obrázku.

Pin 4 se používá jako odesílací pin pro oba senzory, zatímco přijímací piny jsou pin 2 a 5. Můžete použít více odesílacích pinů, ale to způsobuje problémy, protože nejsou dokonale synchronizovány.

použijte toto nastavení pro účely ladění před pájením všeho dohromady, abyste se ujistili, že vše opravdu funguje tak, jak bylo zamýšleno.

Krok 3: Kód:

Nyní máme vše a můžeme začít ladit senzory.

Chcete -li použít můj kód, měli byste si stáhnout knihovnu kapacitního snímání z Arduina a nainstalovat ji podle pokynů uvedených na referenční stránce: Klikněte na mě

Kód: (Nejsem skvělý v kódování, takže pokud víte, jak to udělat lépe, udělejte to)

#include // importujte knihovnu kódů

CapacitiveSensor cs_4_2 = CapacitiveSensor (4, 2); // Odeslat pin = 4, příjem jsou 2 a 5 CapacitiveSensor cs_4_5 = CapacitiveSensor (4, 5); const int redPin = 11; const int greenPin = 10; const int bluePin = 9; const int numIndexR = 10; // velikost pole const int numIndexG = 10; int barvaR = 0; int barvaG = 0; float colorB = 0; int indexR [numIndexR]; int posIndexR = 0; long totalR = 0; // musí být dlouhý, protože součet mého pole byl pro celé číslo příliš velký. int průměrR = 0; int indexG [numIndexG]; int posIndexG = 0; dlouhý součet G = 0; int průměr G = 0; void setup () {pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT); for (int thisIndexR = 0; thisIndexR <numIndexR; thisIndexR ++) {// nastaví pole na 0 indexR [thisIndexR] = 0; } for (int thisIndexG = 0; thisIndexG = 4500) {// omezení hodnot senzoru na použitelné maximum, toto není stejné pro každou hodnotu rezistoru a také se může trochu lišit v závislosti na prostředí, ve kterém to budete muset upravit vaše vlastní potřeby. celkem1 = 4500; } if (total2> = 4500) {total2 = 4500; } totalR = totalR - indexR [posIndexR]; // toto zde vytvoří pole, které průběžně přidává výstup senzoru a vytváří průměr. indexR [posIndexR] = celkem1; totalR = totalR + indexR [posIndexR]; posIndexR = posIndexR + 1; if (posIndexR> = numIndexR) {posIndexR = 0; } averageR = totalR / numIndexR; // místo surových dat používáme průměr k vyhlazení výstupu, mírně to zpomaluje proces, ale také vytváří opravdu pěkný plynulý tok. totalG = totalG - indexG [posIndexG]; indexG [posIndexG] = total2; totalG = totalG + indexG [posIndexG]; posIndexG = posIndexG + 1; if (posIndexG> = numIndexG) {posIndexG = 0; } averageG = totalG / numIndexG; if (averageR> = 2000) {// nechceme, aby LED diody neustále měnily hodnotu, pokud nepřichází vstup z vaší ruky, takže je zajištěno, že nebudou zohledněny všechny nižší hodnoty prostředí. colorR = mapa (průměrR, 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 funguje trochu jinak, protože jsem použil pouze 2 senzory, takže jsem namapoval B na oba senzory colorB = mapa (colorR, 255, 125, 0, 127,5) + mapa (barva G, 255, 125, 0, 127,5); analogWrite (bluePin, colorB); } else {colorB = mapa (colorR, 255, 125, 127,5, 0) + mapa (colorG, 255, 125, 127,5, 0); if (colorB> = 255) {colorB = 255; } if (colorB <= 0) {colorB = 0; } analogWrite (bluePin, colorB); } Serial.print (millis () - start); // to je pro účely ladění Serial.print ("\ t"); Serial.print (colorR); Serial.print ("\ t"); Serial.print (colorG); Serial.print ("\ t"); Serial.println (colorB); zpoždění (1); }

Co tento kód dělá, je extrahování nezpracovaných dat ze senzoru (tato data budou vždy mírně nevyrovnaná kvůli všem různým faktorům, které ovlivňují senzor) a ukládá surová data nepřetržitě do pole, když pole dosáhne maximální hodnoty (v mém případě 10) vyčistí poslední hodnotu a přidá novou. Při každém přidání hodnoty vypočítá průměrnou hodnotu a vloží ji do nové proměnné. Tato průměrná proměnná se používá k mapování hodnoty na hodnotu od 0 do 255, což je hodnota, kterou zapisujeme na piny RGB, abychom zvýšili jas každého kanálu (kanály jsou R G a B).

Nyní, když nahrajete svůj kód do arduina a otevřete sériový monitor, měli byste vidět nižší hodnoty RGB, když umístíte ruku nad každý senzor, měla by se změnit také barva světla LED.

Krok 4: Nyní k případu:

Nyní k případu
Nyní k případu
Nyní k případu
Nyní k případu
Nyní k případu
Nyní k případu

Případ: Pouzdro jsem vytvořil pomocí nástrojů dostupných na mé univerzitě, takže tento pracovní postup není použitelný pro každého. Na tom však není nic příliš zvláštního, potřebuje na jedné straně otvor, aby se do něj vešel port USB, ale kromě toho je to jen otevřená krabice.

Rozměry jsou následující:

15 x 15 CM pro průhlednou desku

a

15 x 8 CM pro dřevěný podklad (pro mě byla tloušťka dřeva 1,8 CM).

Stolní pilou jsem nařezal desku z MDF na správné rozměry, které jsem potřeboval (což jsou 4 panely 15 x 8 CM a 1 15 x 15 CM zemní panel), načež jsem rozřezal rohy do úhlu 45 stupňů. Všechny díly jsem slepil lepidlem na dřevo a svorkami (nechal zaschnout alespoň 30 minut), použil jsem stejný postup pro plexisklo, ale se speciálním pilovým kotoučem.

1 dřevěná strana by měla mít uprostřed otvor ve výšce zástrčky arduino USB, aby bylo možné arduino zapojit.

Základnu jsem dokončil dýhou. Nakrájel jsem ho na kousky o něco větší než povrch každé strany.

Tu jsem nalepil, poté upnul 30 minut na každou stranu (lépe to udělat jednotlivě, abyste se ujistili, že neklouže, a po zaschnutí jsem odstřihl cokoli, co trčí.

Čepici jsem slepil lepidlem specifickým pro Acryl s názvem Acryfix.

Uvědomte si, že pokud použijete akrylový plexisklo, lepidlo plexisklo trochu rozpustí, buďte tedy co nejpřesnější a nejrychlejší (schne během několika minut, ale vystaven vzduchu během několika sekund).

Abych dokončil uzávěr, krychli jsem orazil pískovačem, ale můžete také použít jemný brusný papír, aby vypadal rovnoměrně, trvá to mnohem déle. Pamatujte však, že pokud používáte brusný papír, musí být jemně zrnitý a také slepit součásti dohromady po procesu polevy (Abyste jej nerozbili omylem působením velkého tlaku)

Aby se víčko moc neklouzlo, nalepil jsem na okraje dřevěné kostky pár malých dřevěných tyčí.

Krok 5: Konečný výsledek by měl vypadat nějak takto:

Konečný výsledek by měl vypadat nějak takto
Konečný výsledek by měl vypadat nějak takto

Krok 6: Pájení

Pájení!
Pájení!
Pájení!
Pájení!

Pokud máte desku s obvody, můžete začít pájet všechny součásti dohromady pomocí stejného nastavení, jaké má vaše deska.

Moje deska s obvody má souvislé měděné pásky pro snadné použití.

Pro každý senzor jsem odřízl malý čtverec, ke kterému pájím odpory a vodiče.

Odesílací vodiče (vodiče, které vedou od pinu 4 ke každému senzoru) jsou postupně připájeny k samostatnému čtverci s 1 vodičem, který jde do pinu 4.

Nechal jsem si dlouhý obdélník, abych vytvořil improvizovaný led proužek (změřte jej tak, aby se vešel dovnitř víčka, ale na okraje základny). Můžete pouze pájet diody postupně za sebou (mějte na paměti, že jsem omylem připájel ledky a odpory na špatnou stranu desky plošných spojů, měděné pásky by měly být vždy na spodní straně).

Až budete hotové pájet jednotlivé díly dohromady, vložte je do pouzdra. Nepájel jsem jednotlivé dráty dohromady, abych je mohl v případě potřeby snadno vyměnit.

Čas, aby se vše vešlo do základny: Toto je do značné míry nejjednodušší krok, arduino musí být na prvním místě s portem USB skrz otvor na zadní straně pouzdra. Nyní přidejte senzory a ujistěte se, že fólie senzoru přiléhá na dřevo na obou stranách, přičemž zemní fólie je přímo proti ní. Když to všechno dobře zapadne, zapojte LED diody RGB do správných kolíků (9, 10, 11) a nechte ji opřít o okraje základny.

Krok 7: Hotovo

Pokud jste to všechno zvládli, měli byste nyní mít pracovní světlo s kapacitním dotykovým mícháním barev. Bavte se!

Doporučuje: