» elektronik » Arduino »WS2812'de Led Matris

WS2812'de Led Matrix

WS2812'de Led Matrix

İyi günler, bir tane daha paylaşmak istiyorum homebrewleri dal. Bu kez Led matris üretimi için talimatlar yazmaya karar verdim. Boyut küçük 10x10 diyottur. Ancak bu talimata göre, matrisler ve büyük boyutlar yapmak mümkündür. Güzellik için arka ışık eklendi. Temel, metrede 60 diyotta bir banda monte edilen WS2812 adreslenebilir LED'ler tarafından alınmıştır. Onları yöneteceğiz Arduino Pro Mini. Matrisi kullanmak için birçok seçenek vardır. Örneğin, bir sıcaklık sensörü ekledim ve RTC'siz saat yazılımını yazdım.

İhtiyacımız olacak:
- 120 LED'li WS2812 bant, metre başına 60 parça
-
- 5V 1A için güç kaynağı
- ds18b20 sıcaklık sensörü
- Direnç 4.7 Kom 0.25 W
- sunta 10 mm kalınlığında
- Mat veya "Süt" plastik
- Kalın karton
- elektrik bandı
- bağlantı telleri
- devre kartı
- Düğmeler
- Kendiliğinden kılavuzlanan vidalar 19 mm
- havya
- Lehim, reçine
- Çift taraflı bant
- USB-TTL
- Matkap veya tornavida
- Elektrikli oyma testeresi
- Ağaç matkapları

Adım 1 Diyotların Hazırlanması
Yoğun bir karton alıp “astarlı”, yani aralarında 16 mm mesafe olan yatay çizgiler çiziyoruz. Bantımızdan 100 diyot sayıyoruz. Bu 100 diyot, 10 diyottan oluşan segmentlere ayrılır. Kalan 20 bir diyot kesilir. Bu, kesik çizgiler boyunca dikkatlice ve kesinlikle yapılmalıdır. Açıklamama izin verin: Matris için toplam 10 diyotun 10 segmenti gereklidir, kalan 20'si arkadan aydınlatmalıdır. 10 diyotun bölümleri, çizgiler boyunca kartonun üzerine yapıştırılır. Diyotlar için kontrol sinyalinin yönüne dikkat edin! Kontrol sinyali doğru yönde verilmelidir, bu amaçla ok şerit yönünde gösterilir. İlk şeridi soldan sağa yapıştırın, yani banttaki IN (giriş) solda ve OUT (sağda) olmalıdır. Bu nedenle, ilk şeridin IN (girişi) sol üst köşede olmalıdır! Bir sonraki şeridi aksine sağdan sola yapıştırın. Üçüncüsü yine soldan sağa. Daha ileri. Kontrol sinyalinin yönünü izlerken, sol üst köşeden başlayarak bir zikzak çizgisi almalıyız. Ana şey, hiçbir şeyi karıştırmamaktır.

Birinci ve ikinci şerit arasında, başlangıca daha yakın, teller için bir delik açar. Kabloları karıştırmamak için tercihen çok renkli birinci şeride lehimleyin. Onları açılan delikten geçiriyoruz. Sonra, şeritlerimizi kısa tellerle lehimleyin. İlk boşluktan +5 ikinciye +5. GND'den GND'ye. Birinci şeridin OUT değerinden ikinci şeridin IN değerine, ikinci şeridin OUT değerinden üçüncü şeridin IN değerine vb. Sonuç aşağıdaki gibi olmalıdır:


Adım 2 Davayı yapma.
Dava üç bölümden oluşmaktadır. İlk olarak, çerçeveyi 10 mm kalınlığında suntadan kesmeniz gerekir. Bir yapbozla kesmek en iyisidir, ancak yokluğunda manuel olarak alınabilir. Dış karenin kenarı 190 mm'dir.Dahili - 170 mm. Güzellik için köşeleri yuvarlamak daha iyidir. Böylece, 190 x 190 mm ebadında ve et kalınlığı 10 mm olan bir çerçeve elde edilmelidir. Kesmeden sonra ince zımpara kağıdı ile temizleriz.


İkinci parçanın üretimine geçiyoruz. Çerçevemizi sunta levhaya tutturuyoruz ve dış kenarın etrafına bir kalem çiziyoruz. Çerçeveyi kaldırıyoruz. Her iki tarafta 30 mm'yi karenin içine geri çekiyor ve bir iç kare çiziyoruz. 190 x 190 ölçülerinde, ancak 30 mm kenar kalınlığına sahip başka bir çerçeve almalısınız. Bu çerçevenin dış kenarından 5 mm mesafede ve birbirinden eşit mesafede 3 mm çapında delikler açıyoruz. Her iki tarafta 2 delik. Vidalar için gereklidirler. Ayrıca üst kısmın nerede olacağına karar vermelisiniz ve iç karenin sol üst köşesinde teller için bir yuva yapın.


İkinci çerçevenin ters tarafında, iç tarafın çevresi boyunca, aynı suntadan 10 mm kalınlığında segmentler vidalamak gerekir. Sonuç şöyle görünmelidir:


Meclise git. İkinci çerçeveyi masaya koyduk. Üstte, diyotlar yukarı, diyotlu bir karton kutu koyun. Ve hepsini ilk çerçeveyle kaplıyoruz. Kartonları, diyotlar çerçevenin kenarlarına paralel ve kenarlardan eşit mesafede olacak şekilde çerçeveler arasına yerleştirin. Diyotları yıkmamak ve hepsini birlikte bükmemek için çok dikkatli bir şekilde döndürüyoruz. Bundan sonra, fazla kartonu kestik.


Arka ışığa git. Diyotların yanında, sondan bir önceki ve son şerit arasında, sol kenara daha yakın, teller için bir delik açmanız gerekir. Kabloları son şeridin sonuna lehimleyin ve bu kabloları delikten geçirin. Kalan ve kesilen her seferinde 20 diyot, arka tarafa eşit bir mesafede yapıştırılmalıdır. Her iki tarafta 5 adet. Kontrol sinyalinin yönü sağ alt köşeden başlayan saatlik ibredir. Matrisin yanı sıra onları lehimliyoruz. Matrisin ucundan türetilmiş teller ilk diyota lehimlenir. İlk diyottan ikincisinin +5'ine + 5. GND'den GND'ye. Birinci diyotun OUT değerinden ikincinin IN değerine, ikincinin OUT değerinden üçüncünün IN değerine vb.

Arduino Pro Mini'yi matrisin arkasına arka çerçevenin içine yerleştiriyoruz. Güç için stabilize edilmiş 5 voltluk bir güç kaynağı kullanın. En az 1 Amper akım gücü ile. Diyotlar oldukça obur ve bunları bir kerede ve uzun süre açmayı planlıyorsanız, güç kaynağına daha güçlü ihtiyaç duyulur, 1,5 - 2 amper öneririm. Tüm bunları +5 güç kaynağından +5 Arduino ve +5 WS2812'ye bağlarız. GND Arduino ve GND WS2812 ile -5 güç kaynağı. IN WS2812 kontrol kablosu “pin 6” Arduino ya bağlıdır.


Diyotlar çok parlak ve estetik açıdan hoş görünmüyorlar. Bu nedenle, bir difüzör üretmek ve kurmak gerekir. Mat plastik buna en uygun veya "süt" olarak adlandırılır. Matrisi plastiğe ve bir kalemle daireye bağlamak gerekir. Ardından ön çerçevedeki çift taraflı bandı kesin ve sabitleyin. Böyle bir plastiği hızlı bir şekilde bulmak her zaman mümkün değildir, ancak ürünü gerçekten başlatmak istiyorum. Bu durumda, plastik yerine beyaz karton veya yatay kağıt kullanabilirsiniz.


Aynı prensiple, büyük boyutlarda bir matris yapmak mümkündür. Sadece davanın boyutlarını anlatmak gerekir.

Adım 3 Sıcaklık sensörünü bağlayın.
Sadece bu saat ilginç değil, bu yüzden ona bir sıcaklık sensörü ekleyin. Sıcaklığı ölçmek için DS18B20 entegre sensörünü kullanacağız. Yüksek ölçüm doğruluğuna sahiptir, hata 0,5 ° C'den fazla değildir. Zaten fabrikadayken, sensör kalibre edilir ve ek ayar gerekmez. Geniş sıcaklık ölçüm aralığı -55 ... + 125 ° C Herhangi bir odada kullanılabilir. Sokakta ise, nemden korunmaya dikkat etmeniz gerekir. İki çalışma modu vardır: harici güç kaynağı ve “sahte güç” ile. Harici güçle kullanmanızı öneririm.


Bir iletişim hattına birkaç sensör dahil edilebilir. Ama bizim için bir tane yeterli. +5 güç kaynağından alıyoruz. GND -5'e. “DQ” ds18b20 piminden “pim 9” ​​Arduino ya bağlayın.4.7 kOhm'da “DQ” ile +5 arasına bir çekme direnci koymayı unutmayın. Bence bunu sensörün kendisinde yapmak en uygunudur. Sağ üst köşede görüntüleriz:


Adım 4 düğmeleri ile bir tahta hazırlama.
Bu durumda, matrisi saat olarak kullanırız. Zaman, Arduino'nun bilgisayara bağlanmasıyla seri port kullanılarak ayarlanabilir. Bu her zaman uygun değildir. Bu nedenle, zamanı ayarlamak için üç düğmeli bir tahta üreteceğiz. Buna ek olarak, matris başka amaçlar için kullanılabilir, sadece başka bir çizim yazın. Daha sonra düğmeler başka amaçlar için kullanılabilir.


Bunları şu şekilde bağlarız: her üç düğmede de ortak teli “GND” Arduino ya bağlayın. İlk düğme, zaman ayar moduna girmek ve zaman ve tarih arasında geçiş yapmak için hizmet vermektedir, "Pin 2". İkincisi, değeri artırmak için düğme "Pim 3" ve üçüncüsü, değeri azaltmak için düğme "Pim 4" tir. Düğmeleri matrisin arkasındaki çift taraflı banda tutuyoruz:


Adım 5 Bellenim.
Dediğim gibi, matris farklı amaçlar için kullanılabilir. Şu anda sadece saatler için bir taslak yazdım. Sonraki düzen ve diğer eskizlerde. Yazma ve doldurma için Arduino IDE 1.8.5 kullanıyorum. Matrisi çeşitli şekillerde kontrol edebilirsiniz. Her diyotu ayrı ayrı veya tek bir matris olarak kontrol edin. Eskizimde ilk seçeneği kullanıyorum. Bunu yapmak için, Adafruit'ten NeoPixel-master adlı bir kütüphaneye ihtiyacınız var:
adafruit_neopixel-master.rar [27.83 Kb] (indirmeler: 71)


Adafruit_NeoMatrix-master ve Adafruit-GFX-Library-master matris matrisinde olduğu gibi diyotlarla çalışmak için:
matrix_libraries.rar [282.01 Kb] (indirmeler: 80)


Bir sıcaklık sensörü için OneWire kütüphanesi gerekir.
onewire.rar [16.75 Kb] (indirmeler: 64)


Çizimi düzenlemek ve doldurmak için, önce Arduino IDE'yi Arduino.cc'nin resmi web sitesinden ve ardından tüm bu kütüphanelerden kurmalısınız. Bu arşivleri açmak ve paketinden çıkarılmış dosyaları Arduino IDE'nin yüklü olduğu klasördeki “kütüphaneler” klasörüne yerleştirmek gerekir. Kütüphaneleri doğrudan Arduino IDE'ye kurmak da mümkündür. İndirilen arşivleri açmadan, Arduino IDE'de Sketch - Connect Library menüsünü seçin. Açılır listenin en üstünde ".Zip Kütüphanesi Ekle" yi seçin. Görünen iletişim kutusunda eklemek istediğiniz kitaplığı seçin. Tüm manipülasyonlardan sonra, Arduino IDE'yi yeniden başlatmalısınız.

Sıcaklık sensörünün her cihaz için benzersiz bir adresi vardır - 64 bit kod. Bu kodu bulmak zorlu bir iştir. Bu nedenle, önce sensörü Arduino'ya bağlamalısınız, Dosya - Örnekler - Dallas Sıcaklığı - OneWireSearch menüsünde bulunan çizimi doldurmalısınız. Ardından, Araçlar - Bağlantı Noktası İzleyicisi'ni çalıştırın. Arduino sensörünüzü bulmalı ve adresini yazmalıdır. Sensörünüzün adresini kopyalıyor veya yazıyoruz. Ard_Tic_Tak_WS2812_Matrix_10x10_Serial_Knopki_Term çizimini açın, satırı arayın:

bayt adresi [8] = {0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97}; // sensörünümün adresi 


Sensörünüzün adresini değiştirerek, sensörünüzün adresini diş telleri arasında yazıyoruz.

Bu saat RTC modülünü kullanmaz. Bu nedenle, acele veya arkadalarsa, çizgideki değeri değiştirmelisiniz:

eğer (micros () - prevmicros> 494000) {// ayarlama için diğerine geçmek 500.000


Bu sayıyı ampirik olarak belirlemek gerekir. Saatiniz acelesi varsa, bu sayıyı artırmalısınız; eğer arkadaysam, azaltın.

Krokiyi doldurun.


Özür dilerim, ancak diyotlar açıkken fotoğraf çekmeyi başaramadım. Işıklarla ve ışıksız denedim. Ama eminim ki daha iyi görünüyorlar.




0
0
0

Yorum ekle

    • gülümsegülümsemelerxaxatamamdontknowyahoonea
      patronçizikaptalevetevet-evetagresifgizli
      üzgünümdansdance2dance3pardonyardımiçecekler
      Durarkadaşlariyigoodgooddüdükbaygınlıkdil
      dumanzırıltıcraybeyanalaycıDon-t_mentionindir
      ısıöfkelilaugh1mdatoplantımoskingnegatif
      Not_ipatlamış mısırcezalandırmakokumakkorkutmakkorkutuyorarama
      alaythank_youbuto_clueumnikakutanlaşmak
      kötübeeeblack_eyeblum3kızarmakövünçcan sıkıntısı
      sansürlüşakasecret2tehdit etmekzaferyusun_bespectacled
      shokrespektlolPrevedkarşılamaKrutoyya_za
      ya_dobryiyardımcıne_huliganne_othodiFludyasakyakın

Okumanızı tavsiye ederiz:

Akıllı telefon için verin ...