İçindekiler:

Etkileşimli Temassız Işık: 7 Adım (Resimlerle)
Etkileşimli Temassız Işık: 7 Adım (Resimlerle)

Video: Etkileşimli Temassız Işık: 7 Adım (Resimlerle)

Video: Etkileşimli Temassız Işık: 7 Adım (Resimlerle)
Video: Adım at para kazan hîlesi ( Arapların taktiği 😅 ) 2024, Kasım
Anonim
Etkileşimli Temassız Işık
Etkileşimli Temassız Işık

Herkese selam! Üzerinde çalıştığım projeyi burada paylaşmak istiyorum. Üniversitemde bir proje aracılığıyla kapasitif dokunmatik algılamayı denemek için ilham aldım. Bu teknolojiyi talimatlar aracılığıyla öğrendim ve burada ve internetteki diğer yerlerden öğrendiğim şeyleri, ilginç ışık renkleri oluşturmak için farklı RGB değerlerini karıştırmak için kullandığım kendi dokunmasız denetleyicimi oluşturmak için kullandım.

Yeni başlayanlar için, bu projeye başladığımda ne elektronik ne de kapasitif dokunmatik algılama hakkında neredeyse hiçbir şey bilmiyordum.

Erken karşılaştığım bazı sorunlar, gerçekte ne olduğunu yanlış anlamamdan kaynaklanıyordu. Yani nasıl anladığımdan kısa bir giriş:

Kapasitif bir sensör, temel olarak aşağıdakiler olmak üzere birden fazla bileşen kullanır:

Bir kondansatör (bu projede alüminyum folyo kullanıyoruz, ancak iletken sıvılar vb. kullanmak da mümkündür), teller (elbette elektroniği)

ve bir direnç, 10 MOhm'nin altındaki herhangi bir şey, doğrudan dokunmadan daha fazlası için çok küçük bir dirençtir.

Çalışma şekli, A noktası ile B noktası arasındaki zaman farkını ölçmektir. Başlangıç piminden bir bitiş pimine bir sinyal gönderir, geçen süre bir zamanlayıcı ile ölçülür. Direnç değerini azaltarak (bir kondansatörü (bu durumda elinizi) sensörün kondansatörüne (alüminyum folyo) yaklaştırarak bu süre kısalır, zaman farkı sensörün değer olarak geri verdiği şeydir.

Sensörün kapasitif yüzeylerden etkilenmesi nedeniyle, parazit nedeniyle veriler çılgınca düzensiz olabilir. Bu, büyük ölçüde kapasitörün doğru şekilde yalıtılmasıyla ve ayrıca bir topraklama kullanılarak çözülebilir (nasıl olduğunu daha sonra göstereceğim).

Artık bu, ihtiyacımız olan her şeyi envanterlemeye başlayabiliriz:

Adım 1: Neye İhtiyacımız Var?

Elektronik:

1. 2 x 22M Ohm + dirençler (direnç değeri ne kadar büyük olursa, sensörünüz o kadar uzak tepki verir, şahsen 22M Ohm kullandım, kullanılabilir veri elde etmek için minimum 10M Ohm yaşadım)

2. 3x 330 Ohm dirençler

3. Teller

4. Breadboard

5. Devre kartı (benimkinde sürekli bakır şeritler vardı)

6. Çoklu ortak Katot RGB Ledleri (8 kullandım, ancak ne kadar ışık istediğinize bağlı olarak daha fazla veya daha az olabilir)

7. Alüminyum folyo

8. Sarılmak

9. Arduino Uno

10. Bant

Dosya:

1. Ahşap 50 x 50 x 1.8 CM MDF kullandım(gerçekten her şeyi kullanabilirsiniz. İstediğiniz efekte ve elinizdeki araçlara bağlıdır)

2. Akrilik pleksiglas 50 x 50 x 0,3 CM kullandım (veya pirinç kağıdı gibi herhangi bir şeffaf/yarı saydam malzeme)

3. Zımpara kağıdı (ince zımpara kağıdı)

4. Ahşap tutkalı

5. kaplama (isteğe bağlı)

6. Akrilik yapıştırıcı

Aletler:

tel striptizci

Havya + kalay

Stanley bıçağı

delmek

Testere (masa testeresi kullandım)

Adım 2: Prototipleme:

Prototipleme
Prototipleme
Prototipleme
Prototipleme

Artık her şeye sahibiz ve nasıl çalıştığını görmek için bir prototip yapmaya başlayabiliriz:

Hazırlık çalışması:

Alüminyum folyodan 4 dikdörtgen kesin (Benimkiler yaklaşık 10 cm x 5 cm), bunları doğrudan temastan korumak için streç filme sarın ve alüminyum folyoya bir tel yapıştırın. Folyoya soyulmuş bir ucunu bantladım (temas halinde kaldıkları sürece).

Alüminyumun güvenli bir şekilde yalıtıldığından emin olmak için streç filme sardım ve kağıtlar arasında ütüledim (tamamen erimemesi için sadece birkaç saniye).

Daha sonra devreyi resimdeki gibi kurunuz.

Pin 4 her iki sensör için de gönderme pini olarak kullanılırken, alma pinleri pin 2 ve 5'tir. Birden fazla gönderme pini kullanabilirsiniz ancak tam olarak senkronize olmadıkları için sorun yaratır.

Her şeyin gerçekten amaçlandığı gibi çalıştığından emin olmak için her şeyi birbirine lehimlemeden önce bu kurulumu hata ayıklama amacıyla kullanın.

Adım 3: Kod:

Artık her şeye sahibiz ve sensörlerde hata ayıklamaya başlayabiliriz.

Kodumu kullanmak için Arduino'dan kapasitif algılama kütüphanesini indirmeli ve referans sayfasında verilen talimatlara göre kurmalısınız: Beni tıkla

Kod: (Kodlama konusunda pek iyi değilim, bu yüzden nasıl daha iyi yapılacağını biliyorsanız lütfen yapın)

#include //kod kitaplığını içe aktar

KapasitifSensör cs_4_2 = KapasitifSensör(4, 2); //Gönder pin = 4, alma 2 ve 5 KapasitifSensör cs_4_5 = KapasitifSensör(4, 5); const int redPin = 11; const int yeşilPin = 10; const int bluePin = 9; const int numIndexR = 10; // dizi boyutu const int numIndexG = 10; int renkR = 0; int renkG = 0; kayan renkB = 0; int indeksR [numIndexR]; int posIndexR = 0; uzun toplamR = 0; //uzun olması gerekiyor çünkü dizimin toplamı bir tamsayı için büyüktü. int ortalamaR = 0; int indeksG [numIndexG]; int posIndexG = 0; uzun toplamG = 0; int ortalamaG = 0; void setup() { pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT); pinMode(bluePin, ÇIKIŞ); for (int thisIndexR = 0; thisIndexR < numIndexR; thisIndexR++) { //diziyi 0'a ayarlar indexR [thisIndexR] = 0; } for (int thisIndexG = 0; thisIndexG = 4500){ //sensör değerlerini kullanılabilir bir maksimum ile sınırlandırın, bu her direnç değeri için aynı değildir ve ayrıca ortamdan ortama biraz farklılık gösterebilir, bunu ayarlamak için ayarlamanız gerekebilir kendi ihtiyaçların. toplam1 = 4500; } if (toplam2 >= 4500){ toplam2 = 4500; } toplamR = toplamR - indeksR[posIndexR]; //bu, sürekli olarak bir sensör çıktısı ekleyen ve ortalamayı üreten bir dizi oluşturur. indexR[posIndexR] = toplam1; toplamR = toplamR + indeksR[posIndexR]; posIndexR = posIndexR + 1; if (posIndexR >= numIndexR){ posIndexR = 0; } ortalamaR = toplamR / numIndexR; //çıktıyı yumuşatmak için ham veri yerine ortalamayı kullanıyoruz, süreci biraz yavaşlatıyor ama aynı zamanda gerçekten güzel ve düzgün bir akış yaratıyor. toplamG = toplamG - indeksG[posIndexG]; indexG[posIndexG] = toplam2; toplamG = toplamG + indeksG[posIndexG]; posIndexG = posIndexG + 1; if (posIndexG >= numIndexG){ posIndexG = 0; } ortalamaG = toplamG / numIndexG; if (averageR >= 2000){ // elinizden bir girdi olmadıkça ledlerin sürekli olarak değer değiştirmesini istemiyoruz, bu da tüm düşük çevresel okumaların dikkate alınmamasını sağlar. colorR = harita(ortalamaR, 1000, 4500, 255, 0); analogWrite (redPin, colorR); } else if (averageR = 1000){ colorG = map(averageG, 1000, 4500, 255, 0); analogWrite (greenPin, colorG); } else if (ortalamaG <= 1000){ colorG = 255; analogWrite (greenPin, colorG); } if (colorR <= 125 && colorG <= 125){ //B biraz farklı çalışıyor çünkü sadece 2 sensör kullandım, bu yüzden B'yi her iki sensörde de eşledim colorB = map(colorR, 255, 125, 0, 127.5) + map (renkG, 255, 125, 0, 127.5); analogWrite (bluePin, colorB); } başka{ colorB = map(colorR, 255, 125, 127.5, 0) + map(colorG, 255, 125, 127.5, 0); if (colorB>= 255){ colorB = 255; } if (renkB <= 0){ renkB = 0; } analogWrite (bluePin, colorB); } Serial.print(millis() - başlat); //bu hata ayıklama amaçlıdır Serial.print("\t"); Seri.baskı(renkR); Seri.print("\t"); Seri.baskı(renkG); Seri.print("\t"); Seri.println(renkB); gecikme(1); }

Bu kodun yaptığı şey, sensörden ham veriyi çıkarmaktır (bu veri, sensörü etkileyen tüm farklı faktörler nedeniyle her zaman biraz düzensiz olacaktır) ve dizi maksimum değere ulaştığında ham verileri sürekli olarak bir diziye koyar (benim durumumda 10) son değeri temizler ve yeni bir tane ekler. Her değer eklendiğinde, ortalama değeri hesaplar ve yeni bir değişkene koyar. Bu ortalama değişken, 0 ile 255 arasında bir değere bir değer eşlemek için kullanılır, bu, her kanalın parlaklığını artırmak için RGB pinlerine yazdığımız değerdir (kanallar R G ve B'dir).

Şimdi kodunuzu arduinoya yüklerseniz ve seri monitörü açarsanız, elinizi her sensörün üzerine getirdiğinizde RGB değerlerinin düştüğünü görmelisiniz, ayrıca ledin ışık rengi de değişmelidir.

Adım 4: Şimdi Vaka için:

Şimdi Dava için
Şimdi Dava için
Şimdi Dava için
Şimdi Dava için
Şimdi Dava için
Şimdi Dava için

Vaka: Vakayı üniversitemde bulunan araçları kullanarak hazırladım, dolayısıyla bu iş akışı herkes için geçerli değil. Bununla birlikte, çok özel bir yanı yok, USB bağlantı noktasının geçmesi için bir tarafında bir deliğe ihtiyacı var, bunun dışında sadece üstü açık bir kutu.

Boyutlar aşağıdaki gibidir:

Şeffaf üst kısım için 15 x 15 CM

ve

Ahşap taban için 15 x 8 CM (ahşabın kalınlığı benim için 1.8 CM idi).

Bir masa testeresi kullanarak bir MDF plakasını ihtiyacım olan doğru boyutlara (ki bu 4 panel 15 x 8 CM ve 1 15 x 15 CM zemin paneli) kesmek için kullandım ve ardından köşeleri 45 derecelik bir açıyla kestim. Tüm parçaları ahşap tutkalı ve kelepçelerle birbirine yapıştırdım (en az 30 dakika kurumasını bekleyin), Pleksiglas için de aynı işlemi uyguladım ama özel testere ile.

Arduino'nun fişe takılabilmesi için ahşap kenarlardan 1 tanesinin ortasında arduino USB fişinin yüksekliğinde bir delik olmalıdır.

Tabanı kaplama ile bitirdim. Her iki tarafın yüzeyinden biraz daha büyük parçalar halinde kestim.

Bunu üzerine yapıştırdım, sonra her iki taraf için 30 dakika sıkıştırdım (tek tek yapmak daha iyi, böylece kaymadığından emin olun ve kuruduktan sonra dışarı çıkanları kestim.

Acryfix adlı Acryl'e özel bir yapıştırıcı kullanarak yapıştırdığım kapak.

Akrilik pleksiglas kullanırsanız, yapıştırıcının pleksiglası biraz çözdüğünü unutmayın, bu nedenle mümkün olduğunca hassas ve hızlı olun (birkaç dakika içinde kurur, ancak saniyeler içinde havaya maruz kalır).

Kapağı bitirmek için küpü bir kumlama makinesiyle buzladım, ancak ince zımpara kağıdı da kullanabilirsiniz, düzgün görünmesi çok daha fazla zaman alır. Yine de zımpara kullanacaksanız, ince taneli olması ve buzlanma işleminden sonra parçaları birbirine yapıştırmanız gerektiğini unutmayın (Böylece fazla baskı uygulayarak kazara kırılmazsınız)

Kapağın fazla kaymaması için tahta küpün kenarlarına birkaç küçük tahta çubuk yapıştırdım.

Adım 5: Son Sonuç Şuna Benzer Görünmelidir:

Nihai Sonuç Şuna Benzer Bir Şey Görünmelidir
Nihai Sonuç Şuna Benzer Bir Şey Görünmelidir

Adım 6: Lehimleme

Lehimleme!
Lehimleme!
Lehimleme!
Lehimleme!

Bir devre kartınız varsa, devre tahtanızın sahip olduğu aynı kurulumu kullanarak tüm parçaları birlikte lehimlemeye başlayabilirsiniz.

Devre kartımda kullanım kolaylığı için sürekli bakır şeritler var.

Her sensör için dirençleri ve kabloları lehimlemek için küçük bir kare kestim.

Gönderme telleri (pim 4'ten her sensöre giden teller), pin 4'e giden 1 tel ile ayrı bir kareye sırayla lehimlenir.

Doğaçlama bir led şerit yapmak için uzun bir dikdörtgen tuttum (kapağın içine ancak tabanın kenarlarına sığacak şekilde ölçün). Ledleri sırasıyla sırayla lehimleyebilirsiniz (resimde unutmayın ki ledleri ve dirençleri yanlışlıkla devre kartının yanlış tarafında lehimledim, bakır şeritler her zaman alt tarafta olmalıdır).

Tek tek parçaları birbirine lehimlemeyi bitirdiğinizde, bunları kasaya yerleştirin. Tek tek kablolarımı birlikte lehimlemedim, böylece gerektiğinde kolayca değiştirebilirim.

Her şeyi tabana yerleştirme zamanı: Bu hemen hemen en kolay adımdır, arduino'nun ilk önce kasanın arkasındaki delikten USB bağlantı noktasıyla yerleştirilmesi gerekir. Şimdi sensörleri ekleyin, sensör folyosunun zemin folyosu düz olacak şekilde ahşaba her iki taraftan da oturduğundan emin olun. Her şey yerine oturduğunda RGB ledlerini sağdaki pinlere (9, 10, 11) takın ve tabanın kenarlarına yaslanmasını sağlayın.

Adım 7: Bitirdik

Bunların hepsini yaptıysanız, artık kapasitif dokunmatik renk karışımına sahip bir çalışma ışığınız olmalıdır. İyi eğlenceler!

Önerilen: