Indholdsfortegnelse:
- Trin 1: Hvad har vi brug for?
- Trin 2: Prototyping:
- Trin 3: Kode:
- Trin 4: Nu til sagen:
- Trin 5: Slutresultatet skal se sådan ud:
- Trin 6: Lodning
- Trin 7: Vi er færdige
Video: Interaktivt berøringsfrit lys: 7 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
Hej allesammen! Jeg vil gerne dele det projekt, jeg har arbejdet på her. Jeg blev inspireret til at eksperimentere med kapacitiv berøringsfølelse gennem et projekt på mit universitet. Jeg fandt ud af om denne teknologi gennem instruktioner og brugte de ting, jeg lærte her og andre steder på internettet til at bygge min egen berøringsfri controller, som jeg bruger til at blande forskellige RGB-værdier til at skabe interessante lyse farver.
Til at begynde med vidste jeg, da jeg startede dette projekt, næsten ingenting om hverken elektronik eller kapacitiv berøringsføling.
Nogle problemer, jeg løb ind tidligt, var forårsaget af misforståelse af, hvad der rent faktisk sker. Så en kort introduktion fra hvordan jeg forstår det:
En kapacitiv sensor bruger flere komponenter, hovedsageligt:
En kondensator (i dette projekt bruger vi aluminiumsfolie, men det er også muligt at bruge ledende væsker osv.), ledninger (naturligvis dets elektronik)
og en modstand, alt under 10 MOhm er en for lille modstand til mere end direkte berøring.
måden det fungerer på er ved at måle en tidsforskel mellem punkt A og punkt B. Fra startnålen sender det et signal til en endepind, den tid det tager måles med en timer. Ved at reducere modstandsværdien (ved at flytte en kondensator (i dette tilfælde din hånd) tættere på sensorens kondensator (aluminiumsfolien) denne gang forkortes, er forskellen i tid, hvad sensoren giver tilbage som en værdi.
På grund af at sensoren påvirkes af kapacitive overflader, kan dataene være vildt uregelmæssige på grund af interferens. Dette kan løses for en stor del ved korrekt at isolere kondensatoren og også ved at bruge en jord (jeg vil vise hvordan senere).
Så nu er det ude af vejen, at vi kan begynde at opgøre alle de ting, vi har brug for:
Trin 1: Hvad har vi brug for?
Elektronik:
1. 2 x 22M Ohm + modstande (jo større modstandsværdi jo længere væk din sensor reagerer, jeg brugte personligt 22M Ohm, minimum for at få brugbare data, jeg oplevede, var 10M Ohm)
2. 3x 330 Ohm modstande
3. ledninger
4. Brødbræt
5. Printkort (mit havde kontinuerlige kobberstrimler)
6. Flere almindelige katode RGB -lysdioder (jeg brugte 8, men du kan have mere eller mindre afhænger af, hvor meget lys du vil have)
7. aluminiumsfolie
8. Cling wrap
9. Arduino Uno
10. Tape
Sagen:
1. Træ Jeg brugte 50 x 50 x 1,8 CM MDF (du kan virkelig bruge alt. Det afhænger af den effekt, du ønsker, og de værktøjer, du har til rådighed)
2. Akryl plexiglas Jeg brugte 50 x 50 x 0,3 CM (eller andet gennemsigtigt/gennemskinneligt materiale som rispapir)
3. Papir (fint sandpapir)
4. Træ-lim
5.veneer (valgfri)
6. akryl lim
Værktøjer:
Wire stripper
Loddejern + tin
Stanley kniv
bore
Sav (jeg brugte en bordsav)
Trin 2: Prototyping:
Nu har vi alt, og vi kan begynde at lave en prototype for at se, hvordan det fungerer:
Forberedelse:
Skær 4 rektangler ud af aluminiumsfolien (mine er ca. 10 cm x 5 cm), pak dem ind i plastfolie for at isolere dem fra direkte berøring og klæb en ledning til aluminiumsfolien. Jeg har lige tapet en strippet ende til folien (så længe de forbliver i kontakt).
For at sikre, at aluminiumet er sikkert isoleret, pakkede jeg det ind i plastfolie og strygte det mellem papirerne (bare et par sekunder, så det ikke smeltede helt).
Konfigurer derefter kredsløbet som vist på billedet.
Pin 4 bruges som en sendestift til begge sensorer, mens modtagerstifterne er pin 2 og 5. Du kan bruge flere sendestifter, men det forårsager problemer, da de ikke er perfekt synkroniserede.
brug denne opsætning til fejlfindingsformål, før du lodder alt sammen, for at sikre, at alt virkelig fungerer efter hensigten.
Trin 3: Kode:
Nu har vi alt, og vi kan begynde at debugge sensorerne.
For at bruge min kode skal du downloade det kapacitive sensorbibliotek fra Arduino og installere det i henhold til anvisningerne fra referencesiden: Klik på mig
Koden: (Jeg er ikke god til at kode, så hvis du ved, hvordan du gør det bedre, skal du gøre det)
#include // importer kodebiblioteket
CapacitiveSensor cs_4_2 = CapacitiveSensor (4, 2); // Send pin = 4, modtag er 2 og 5 CapacitiveSensor cs_4_5 = CapacitiveSensor (4, 5); const int redPin = 11; const int greenPin = 10; const int bluePin = 9; const int numIndexR = 10; // array -størrelse const int numIndexG = 10; int colorR = 0; int colorG = 0; float colorB = 0; int indexR [numIndexR]; int posIndexR = 0; lang totalR = 0; // det skal være langt, fordi det samlede antal af mit array var for stort for et helt tal. int gennemsnitR = 0; int indexG [numIndexG]; int posIndexG = 0; lang totalG = 0; int gennemsnitG = 0; void setup () {pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT); for (int thisIndexR = 0; thisIndexR <numIndexR; thisIndexR ++) {// sætter arrayet til 0 indexR [thisIndexR] = 0; } for (int thisIndexG = 0; thisIndexG = 4500) {// cap sensorværdierne til et anvendeligt maksimum, dette er ikke det samme for hver modstandsværdi og kan også variere en smule fra miljø til miljø, du skal muligvis justere dette til dine egne behov. total1 = 4500; } hvis (total2> = 4500) {total2 = 4500; } totalR = totalR - indexR [posIndexR]; // dette skaber her en matrix, der løbende tilføjer en sensoroutput og producerer gennemsnittet. indexR [posIndexR] = total1; totalR = totalR + indexR [posIndexR]; posIndexR = posIndexR + 1; hvis (posIndexR> = numIndexR) {posIndexR = 0; } gennemsnitR = totalR / numIndexR; // vi bruger gennemsnittet i stedet for rådataene til at udjævne outputtet, det bremser processen en anelse, men det skaber også en rigtig flot glat flow. totalG = totalG - indexG [posIndexG]; indexG [posIndexG] = total2; totalG = totalG + indexG [posIndexG]; posIndexG = posIndexG + 1; hvis (posIndexG> = numIndexG) {posIndexG = 0; } gennemsnitG = totalG / numIndexG; hvis (averageR> = 2000) {// vi ikke ønsker, at lysdioderne konstant ændrer værdi, medmindre der er input fra din hånd, så dette sikrer, at alle lavere miljømålinger ikke tages i betragtning. colorR = kort (gennemsnit R, 1000, 4500, 255, 0); analogWrite (redPin, colorR); } ellers hvis (gennemsnitR = 1000) {colorG = kort (gennemsnitG, 1000, 4500, 255, 0); analogWrite (greenPin, colorG); } ellers hvis (gennemsnitG <= 1000) {colorG = 255; analogWrite (greenPin, colorG); } hvis (colorR <= 125 && colorG <= 125) {// B virker lidt anderledes, fordi jeg kun brugte 2 sensorer, så jeg kortlagde B på begge sensorer colorB = map (colorR, 255, 125, 0, 127.5) + kort (colorG, 255, 125, 0, 127,5); analogWrite (bluePin, colorB); } ellers {colorB = map (colorR, 255, 125, 127.5, 0) + map (colorG, 255, 125, 127.5, 0); hvis (colorB> = 255) {colorB = 255; } hvis (colorB <= 0) {colorB = 0; } analogWrite (bluePin, colorB); } Serial.print (millis () - start); // dette er til fejlfindingsformål Serial.print ("\ t"); Serial.print (colorR); Serial.print ("\ t"); Serial.print (colorG); Serial.print ("\ t"); Serial.println (colorB); forsinkelse (1); }
Hvad denne kode gør, er at udtrække rådataene fra sensoren (disse data vil altid være lidt uberegnelige på grund af alle de forskellige faktorer, der påvirker sensoren), og det placerer rådataene kontinuerligt i et array, når arrayet når maksimumværdien (i mit tilfælde 10) det renser den sidste værdi og tilføjer en ny. Hver gang en værdi tilføjes, beregner den gennemsnitsværdien og sætter den i en ny variabel. Denne gennemsnitlige variabel bruges til at kortlægge en værdi til en værdi fra 0 til 255, det er den værdi, vi skriver til RGB -benene for at øge lysstyrken på hver kanal (kanalerne er R G og B).
Hvis du nu uploader din kode til arduinoen, og du åbner den serielle skærm, skal du se RGB -værdierne lavere, når du holder din hånd over hver sensor, og lysfarven på LED'en bør ændre sig.
Trin 4: Nu til sagen:
Sagen: Jeg stillede sagen ved hjælp af værktøjer til rådighed via mit universitet, så denne arbejdsgang er ikke gældende for alle. Men der er ikke noget for specielt ved det, det har brug for et hul på den ene side for at USB -porten kan passe igennem, men andet end at det bare er en åben boks med top.
Dimensionerne er som følger:
15 x 15 CM til den gennemsigtige top
og
15 x 8 CM til træbunden (træets tykkelse var 1,8 CM for mig).
Jeg brugte en bordsav til at skære en plade af MDF i de korrekte dimensioner, jeg havde brug for (som er 4 paneler 15 x 8 CM og 1 15 x 15 CM jordpanel), hvorefter jeg skar hjørnerne i en 45 graders vinkel. Alle de dele, jeg satte sammen ved hjælp af trælim og klemmer (lad det tørre i mindst 30 minutter), brugte jeg den samme procedure til plexiglas, men med et specielt savblad.
1 af træsiderne skal have et hul i midten i højden af arduino USB -stikket, så arduinoen kan sættes i.
Jeg sluttede bunden af med finer. Jeg skar det i stykker, der var lidt større end overfladen på hver side.
Dette limede jeg på det og klemte det derefter 30 minutter til hver side (bedre at gøre det individuelt, så du sørger for, at det ikke glider, og efter at det tørrede, skar jeg det af, der stak ud.
Hætten limede jeg sammen ved hjælp af en lim, der var specifik for Acryl, kaldet Acryfix.
Vær opmærksom på, at hvis du bruger akrylplexiglas, opløser limen plexiglaset lidt, så vær så præcis og hurtig som muligt (det tørrer inden for et par minutter, men udsættes for luft inden for få sekunder).
For at afslutte hætten frostede jeg terningen med en sandblæser, men du kan også bruge fint sandpapir, det tager bare meget mere tid at få den til at se jævn ud. Vær dog opmærksom på, at hvis du bruger sandpapir, skal det være finkornet og limes også delene sammen efter frostproceduren (Så du ikke bryder det ved et uheld ved at lægge for meget pres)
For at sikre, at hætten ikke glider for meget, limede jeg et par små træstænger på kanterne af træterningen.
Trin 5: Slutresultatet skal se sådan ud:
Trin 6: Lodning
Hvis du har et printkort, kan du begynde at lodde alle delene sammen ved hjælp af den samme opsætning som dit brødbræt har.
Mit printkort har kontinuerlige kobberstrimler til brugervenlighed.
For hver sensor skar jeg en lille firkant af for at lodde modstande og ledninger til.
Sendtrådene (ledningerne, der går fra pin 4 til hver sensor) loddes i rækkefølge til en separat firkant med 1 wire, der går ind i pin 4.
Jeg beholdt et langt rektangel for at lave en improviseret ledstrimmel (mål den, så den passer ind i hætten, men på kanterne af bunden). Du kan bare lodde lysdioderne i rækkefølge efter hinanden (husk på billedet jeg ved et uheld lodde lysdioderne og modstandene på den forkerte side af kredsløbskortet, kobberstrimlerne skulle altid være på undersiden).
Når du er færdig med at lodde de enkelte dele sammen, skal du passe dem ind i kassen. Jeg lodde ikke mine individuelle ledninger sammen, så jeg kan nemt skifte dem ud, hvis det er nødvendigt.
Tid til at passe alt ind i basen: Dette er stort set det letteste trin, arduinoen skal først placeres med USB -porten gennem hullet på bagsiden af sagen. Tilføj nu sensorerne, sørg for at sensorfolien passer mod træet på begge sider, med jorden folie lige mod den. Når det hele passer godt ind, skal du sætte RGB -lysdioderne i de rigtige ben (9, 10, 11) og lade det læne sig op på kanterne af basen.
Trin 7: Vi er færdige
Hvis du har fulgt op med alt dette, skal du nu have et arbejdslys med kapacitiv touchfarveblanding. Hav det sjovt!
Anbefalede:
Berøringsfrit IR-termometer: 8 trin (med billeder)
Berøringsfri IR-termometer: Mit lokale sundhedsministerium tog kontakt til mig, fordi de havde brug for en måde at spore kropstemperaturen for deres medarbejders helbred dagligt under Covid-19-krisen i 2020. Normalt begyndte IR -termometre på hylden at være knappe
Interaktivt 3D -trykt stof med en bærbar, Lilypad, Accelerometer, lys: 13 trin
Interaktivt 3D-trykt stof med en bærbar, Lilypad, Accelerometer, lys: Hvad du har brug for: 3D-printer + filamentTyrapsStofDraad i samme farve som stoffet Politik trådNaaldenLilypad en arduino unoPowerbankApple usb snoer3mm led lampe TangetjesSchaarSoldeerbout en tin5 man-woman
Musikreaktivt lys -- Sådan laves superenkelt musikreaktivt lys til at gøre skrivebordet fantastisk: 5 trin (med billeder)
Music Reactive Light || Sådan laver du Super Simple Music Reactive Light for Making Desktop Awsome .: Hey whats up guys, I dag vil vi bygge et meget interessant projekt. I dag bygger vi musik reaktivt lys. LED'en ændrer dens lysstyrke iht. basen, der faktisk er lavfrekvent lydsignal. Det er meget enkelt at bygge.Vi vil
Interaktivt omgivende lys: 8 trin
Interaktivt omgivende lys: Dette er min første instruerbare! Vær venlig at holde ud med mig, mens jeg kæmper for at skrive ordentligt engelsk. Ret mig gerne! Jeg startede dette projekt lige efter konkurrencen 'Lad det lyse' startede. Jeg ville ønske, jeg havde lavet meget mere og færdiggjort det, jeg ville
Interaktivt legetøj til børn. (lys og lyd): 6 trin
Interaktivt legetøj til børn. (lys og lyd): Dette er et kredsløb, jeg bruger på små børn (1-3), det bruger lysdioder og en summer. Når barnet trykker på en knap, sker der noget. Se videoen for at se mere. (skru op for lyden for at høre summeren, den er helt i videoen)