İçindekiler:

Tam Gökkuşağı Efekti ve Daha Fazlası Olan Gökkuşağı Kelime Saati: 13 Adım (Resimlerle)
Tam Gökkuşağı Efekti ve Daha Fazlası Olan Gökkuşağı Kelime Saati: 13 Adım (Resimlerle)

Video: Tam Gökkuşağı Efekti ve Daha Fazlası Olan Gökkuşağı Kelime Saati: 13 Adım (Resimlerle)

Video: Tam Gökkuşağı Efekti ve Daha Fazlası Olan Gökkuşağı Kelime Saati: 13 Adım (Resimlerle)
Video: Hatay..! Sen benim..🤍 2024, Temmuz
Anonim
Tam Gökkuşağı Efektli Gökkuşağı Kelime Saati ve Daha Fazlası
Tam Gökkuşağı Efektli Gökkuşağı Kelime Saati ve Daha Fazlası

Hedefler

1) Basit

2) Pahalı değil

3) Mümkün olduğunca enerji verimli

Tam bir gökkuşağı efekti ile Gökkuşağı Kelime Saati.

Kelime Saatinde Bir Smiley.

Basit IR uzaktan kumanda

Neopiksellerin Parlaklık Kontrolü için 03-nov-18 LDR Güncellemesi

01-jan-19 Güncellemesi WS2812B güç tüketimini azaltma.

15-Ocak-19 Smiley'i güncelleyin.

23 Ocak-19 Kod 1.6 Güncellemesi

10-mar-19 Kitaplıkları bağlantılarını güncelle

Güncelleme 14-nisan-19 sürüm 1.7 Seçim gülen yüz açık/kapalı renk gökkuşağı/düzeltme enz.

Son güncelleme 01-haz-19 sürüm 2.0 IR uzaktan kumanda ve kod yeniden tasarımı

Adım 1: Saat Örneği

Saat Davası
Saat Davası
Saat Davası
Saat Davası
Saat Davası
Saat Davası

Bazı basit araçlar ve biraz da beceri ile harf saat yapmak zor değil. Elimdeki malzemeleri kullandım.

Durum için, içinde birkaç çerçeve gördüğüm sert bir çam çubuğu kullandım. Bunlar, kasanın birbirine yapıştırılmış ve köşelerde küçük bir tahta parçası ile güçlendirilmiş dört tarafını oluşturacaktı. Daha sonra ahşabın zımparalanması ve boyanması gerekir.

Harfler bir yazıcı tarafından ayna yazısında folyodan kesilir. Folyo cam plakanın arkasındadır ve daha iyi ışık dağılımı için çift katmanlı desenli kağıt ile kaplanmıştır. Cam silikon dolgu macunu ile sabitlenir.

2. Adım: Neopikseller

Neopikseller
Neopikseller
Neopikseller
Neopikseller
Neopikseller
Neopikseller
Neopikseller
Neopikseller

Neopixels LED'ler ahşap bir plaka üzerinde düzenlenmiştir. Bunda önce 3 mm'lik delikler açıyorsunuz. Önde, harf boyutuna 3/4 derinliğe kadar büyütülürler. Bundan sonra arkadaki 3 mm, 10 mm'ye yükseltilir, bu bir Neopiksel boyutudur. Diğerlerinin yanı sıra bazı karakterler için W, delik biraz ayarlanmalıdır.

Çabuk dağılan kontrplak kullandım, MDF daha iyi olabilir.

Tek tek LED'lerde, LED şeritlerinde olduğu gibi sabit bir mesafeye bağlı değilsiniz. LED'ler birbirine bağlı olmalıdır. Bunu tüm kısa tel parçalarıyla yapabilirsiniz. Ancak iki min (-) bağlantı, dahili olarak bağlanan iki artı (+) bağlantı gibidir, yani aynı bağlantı.

Sol LED'e ve ardından sağ LED'e bir parça tel lehimleyerek kendinize çok fazla iş kurtarabilirsiniz. Sonra ara olanları lehimleyin.

Veri çıkışı veri girişine gittiği için veri bağlantısı elbette kısa parçalarla yapılmalıdır.

Adım 3: Ön Metni Ayarlama

Ön Metni Ayarlama
Ön Metni Ayarlama
Ön Metni Ayarlama
Ön Metni Ayarlama
Ön Metni Ayarlama
Ön Metni Ayarlama

Ön plaka şimdi Hollandaca, ancak herhangi bir dile dönüştürmek için.

NeoPixels ledleri burada 0-167 arasında sırayla değiştirilir. Numaralandırma, sol üstteki ilk satırdan sağa ve ardından ikinci satıra sağdan sola vb. gider. Kendi ihtiyaçlarınıza göre ayarlama yapılabilir. NeoPixels sayısı, karakter miktarına göre belirlenir. Aşağıdaki satırda daha az veya daha fazla Neopiksel ayarlanabilir

#define NUMPIXELS 168 // Arduino'ya kaç NeoPiksel bağlı?

168 başka bir sayıdan daha fazladır. Numaralandırma 0'dan başlar. Herhangi bir metin yapabilirsiniz. Metni değiştirirseniz, karşılık gelen kelimeleri de ayarlamanız gerekir. Numaralandırma aynı kalır.

Örnek olarak, tutanakların DRIE'si kodda belirlenir.

geçersiz zetmDrie () {

Led_Aan[56]=1, Led_Aan[57]=1, Led_Aan[58]=1, Led_Aan[59]=1; // dakika-kuru

}

Arduino kelimesini yapmak istiyorsanız, şöyle devam eder:

geçersiz zetArduino () {

Led_Aan [38] = 1, Led_Aan [50] = 1, Led_Aan [56] = 1, Led_Aan [93] = 1;

Led_Aan [120] = 1, Led_Aan [135] = 1, Led_Aan [147] = 1; //Kelime-arduino

}

Böylece arada kelimeler yapabilirsiniz.

Saat kelimeleri için, bitişik bir kelime oluşturmaları yararlıdır, ancak kesinlikle gerekli değildir. Kullanılmayan harfler Neonpiksele ihtiyaç duymaz. Zamanın gösterilmesinden başka gelecekteki olasılıkların kullanımı için hepsini doldurdum.

Başlangıç noktasını değiştirirseniz veya ardışık sırayı değiştirirseniz, numaralandırma buna göre değişmelidir.

Adım 4: Tam Gökkuşağı Etkisi

Tam Gökkuşağı Etkisi
Tam Gökkuşağı Etkisi

Saat artık öyle programlanmıştır ki, saniyede kaç kez açıldığı sayılmaktadır.

Toplam spektrum, bölünen ve sonra hafifçe kaydırılanların sayısıyla ilgilidir. Sonuç olarak, her Neopiksel sürekli değişen farklı bir renktir. Neopixel nr 1 ve nr 167, bazı renk içeriklerinde birbirini takip eder.

Aynı anda daha az farklı renk tercih ederseniz, bunu ayarlamak kolaydır. Renk hala tüm spektrumda kayıyor, ancak daha küçük bir kısmı var. Neopixel nr 1 ve nr 167 artık birbirini takip etmiyor, bazı renkler içeriyor.

Parlaklık aşağıdaki satırda ayarlanabilir, piksel.setBrightness(150);

Daha küçük bir sayı daha az ve daha büyük bir sayı daha fazla parlaklıktır.

Adım 5: Çeşitli Bileşenler

Çeşitli Bileşenler
Çeşitli Bileşenler
Çeşitli Bileşenler
Çeşitli Bileşenler
Çeşitli Bileşenler
Çeşitli Bileşenler

Kullandığım aşağıdaki bileşenler

Arduino Pro Mini ATMEGA328 5V/16MHz

Saat Modülü DS3231

168 adet Neopiksel led'ler WS2812 LED Chip & Soğutucu 5V 5050 RGB WS2811 IC Dahili

Folyo mektup şablonu

DCF77 alıcısı

Adım 6: Saat Kodu

İşte kod. Bir parlaklık kontrolü eklendi ve kimse yokken ve gece kapandı.

RCWL-0516 Radar Mikrodalga Hareket Sensörü eklendi (RADAR arayın)

10 dakika boyunca hareketsiz kaldıktan sonra NeoPixels söner.

Sürüm 2.0 hakkında

Derleyicide bellek yetersiz uyarıları ile bellek kullanımı çok fazlaydı. Bu yüzden kodu tamamen değiştirdim, ancak işlem aynı kaldı ve bir IR alıcı eklendi.

EEPROM'a veri sağlamak için bir kod parçası vardır. / * ve * / işaretlerini geçici olarak kaldırarak bunu bir kez çalıştırın. Ara => EEPROM'a veri sağlamak için bunu bir kez çalıştırın

Void döngüsünün başında kendi uzaktan kumandanızdan kodu okumak için kod bulunur. Bunu / * ve * / işaretlerini geçici olarak kaldırarak çalıştırabilirsiniz, daha sonra geri koymayı unutmayın. Ayrıca kendi düğmelerinizi de tanımlayabilirsiniz. Okunan kod => Burada kendi düğmelerinizi tanımlayın alanına girilmelidir.

Samsung uzaktan kumandası (çok ucuz) basit olandan daha iyi çalışır.

7. Adım: Donanım Açıklaması

Donanım Açıklaması
Donanım Açıklaması
Donanım Açıklaması
Donanım Açıklaması
Donanım Açıklaması
Donanım Açıklaması

Arduino Pro Mini'nin farklı versiyonları vardır. Lütfen bağlantıların farklı olabileceğini unutmayın.

RCWL-0516 Mikrodalga Hareket Sensörü eklendi.

Saatin çevresinde hareket olduğu sürece NeoPixel açık kalır.

ve daha fazla hareket olmadığında, NeoPixel birkaç dakika sonra söner.

Sürüm 2.0'da DCF77 alıcısına pin 13 üzerinden güç verilir. Bu pin çıkış olarak tanımlanır ve DCF77 rutini adreslendiğinde yüksek olarak ayarlanır. DCF77 alıcısı 0,28 mA kullanır ve günde yalnızca birkaç dakika gereklidir.

tasarrufları kapatmak

5 Volt * 0,28 mA / 1000 * 24 saat * 365 gün * 1 / 0,85 verimli güç kaynağı = yılda 14,4 watt.

Bu çok fazla görünmüyor, ancak her bit yardımcı oluyor.

Adım 8: Neopiksellerin Parlaklık Kontrolü için LDR

Neopiksellerin Parlaklık Kontrolü için LDR
Neopiksellerin Parlaklık Kontrolü için LDR
Neopiksellerin Parlaklık Kontrolü için LDR
Neopiksellerin Parlaklık Kontrolü için LDR

Neopiksellerin parlaklık kontrolü için bir LDR eklendi.

LDR'yi neopiksel 103'ün alanına yapıştırdım. Bu, zaman göstergesinde kullanılmaz ve bu nedenle düzenlemeyi etkilemez. Kağıt gelen ışığı söndürür, ancak bu sorun değil.

LDR ve 20 kohm rezistörün voltaj bölücüsü Arduino Pro Mini'nin A0'ına gider. Voltaj, ışık yoğunluğunun bir göstergesidir ve dolayısıyla neopiksellerin vermesi gereken ışık miktarının bir göstergesidir.

Kullandığım formül bana iyi bir ışık kontrolü sağlıyor, şartlara göre ayarlanabiliyor. Işık miktarına bağlı olarak, voltaj 0 ila 5 volt arasında değişebilir ve bu, "LDRValue" içindeki 0 ila 1024 sayıya dönüştürülür.

Yeni ölçülen değer son hesaplanan değerden büyükse yoğunluk 1 artırılır, 1 azaltılan değerden düşük ise eşitse hiçbir şey yapılmaz. Yanıp sönme efekti olmaması için değerin yavaş ilerlemesini sağlamak için sadece 1 artırılır veya azaltılır ve hesaplama döngüde olduğu için ancak döngü 25 kez geçildikten sonra yeniden hesaplanır.

Yoğunluk teorik olarak minimum 20 ve maksimum 1024/7 + 45 = 191'dir. Ölçtüğüm maksimum değer 902 idi, bu da 173 yoğunluğa denk geliyor. Bu, varsayılan değer olarak belirlediğim 150 ile iyi uyuyor. (bkz. piksel.setBrightness(150))

Sürüm 2.0'da kontrolü uzaktan kumanda ile ayarlayabilirsiniz. Aşağıdaki parametreler minimum olarak Brightness_min ve maksimum ayar olarak Brightness_max ve ayar parametresi olarak Brightness_Offset eklenmiştir. Brightness_min ve _max, kendi durumunuza bağlı olabilecek değerlerdir. Brightness_Offset, uzaktan kumanda ile ayarlanabilen ve az ya da çok parlaklık ayarlanabilen bir değerdir.

Ayrıca ölçülen LDRValue ile hesaplanan BerLDRValue değerleri arasında 3'lük bir ölü bant vardır.

Parlaklık ayarını kontrol etmek için void BrightnessControl içindeki yazdırma ifadelerini kullanın.

Adım 9: WS2812B Güç Tüketiminin Azaltılması

WS2812B Güç Tüketiminin Azaltılması
WS2812B Güç Tüketiminin Azaltılması

WS2812B adreslenebilir neopiksellerdeki sürücüler, neopikseller kapalı, renk 0'a ayarlanmış (neopiksel öğeleri yanmıyor) olduğunda bile akım çekiyor.

169 neopikselin tümü bittiğinde, neopiksellere 69 mA ölçüyorum. Saatin günde 12 saat kapalı olduğunu varsayarsak, toplam kapatma şu tasarrufu sağlar: 5 (Volt güç kaynağı) * 69/1000 (Miliamper / 1000 = Amper) * 12 (Günlük saat sayısı) * 365 (Günlük gün sayısı) yıl) = 1511 Watt saat. Yani yıllık bazda 1.5 Kwh. Katılıyorum, kendi başına çok fazla değil, ama birçok küçük, büyük bir tane yapar.

Devre basittir. Güç kaynağının artısı bir P-kanalı MosFet tarafından değiştirilir. Radar sensörü, neopiksellerin açık mı yoksa kapalı mı olduğunu belirler. MosFet'lerin kaybı nedeniyle AÇIK direncini mümkün olduğunca düşük tutmak için iki MosFet parrelel koydum. Normal kullanımda MosFets üzerinden 4,5 mili volt ölçüyorum. Kapı, Arduino'dan 470 Kohm direnci aracılığıyla çıkış 4 tarafından kontrol edilir. Çıkış dijital olarak düşük (0)'a giderse, neopikseller açıktır ve yüksek (1)'de kapalıdırlar.

Adım 10: Kelime Saatinde Smiley

Kelime Saatinde Gülen Yüz
Kelime Saatinde Gülen Yüz
Kelime Saatinde Gülen Yüz
Kelime Saatinde Gülen Yüz

Kelime Saatinde Bir Smiley.

Saatte ara sıra bir Smiley belirir. Ancak bu sizi mutlu eder.

Smiley, radar sensörü tarafından tetiklenir. Hareket sayısı (ayarlanabilir), Smiley'in görünümünün bir ölçüsüdür. % işaretleri hareketin algılandığını gösterir. Her onuncu (ayarlanabilir) hareketle, Smiley Kırpık Yüz ile gelir ve üç defadan sonra Kırpık Yüz, dördüncü kez dilini dışarı çıkaran bir Gülen Yüz gelir.

Smiley, kodda küçük bir değişikliktir.

Adım 11: Hangi Kitaplıklar Kullanılır

Hangi Kütüphaneler kullanılır.

Bunları Windows 7'de Arduino IDE 1.6 ile kullanıyorum ve ayrıca Windows 10'da Adruino IDE 1.8.8 ile test edildiler.

RTClib-master

Arduino-DS3231-master

Adafruit_NeoPixel-master

Arduino-DCF77-master

Ken Shirriff'in IRremote Kütüphanesi

Kullanılan kitaplık konusunda her zaman kafa karışıklığı olduğu için kullandığımı ekliyorum.

IRremote kitaplığı çok fazla bellek kullanır. IRremote.h'de kullanılmayan herhangi bir protokolü devre dışı bırakabileceğiniz belirtilir.

// Eklediğiniz her protokol hafızaya ve kod çözme sırasında zamana mal olur// İhtiyacınız olmayan/istemediğiniz tüm protokolleri devre dışı bırakın (0'a ayarlayın!

NEC ve Samsung protokolü dışında her şeyi devre dışı bıraktım. Bu, %10'luk bir bellek tasarrufu sağlar. Şu anda bellek miktarıyla ilgili bir sorun yok, dolayısıyla şimdilik devre dışı bırakma gerekli değil.

Adım 12: Basit IR Uzaktan Kumanda

Basit IR Uzaktan Kumanda
Basit IR Uzaktan Kumanda
Basit IR Uzaktan Kumanda
Basit IR Uzaktan Kumanda
Basit IR Uzaktan Kumanda
Basit IR Uzaktan Kumanda

Meclis

Fotoğraflarda da görebileceğiniz gibi, LED 132'nin deliği biraz fazla büyük çıkmış. Bundan iyi yararlandım ve IR alıcısını buna ekledim. IR alıcısı VS1838'in veri pinini Arduino'nun 7 pinine bağlayın. Ayrıca artı ve eksi güç kaynağını bağlayın. IR alıcı 0,21 mA kullanır ve FET anahtarından sonra artı güç kaynağına da bağlanabilir. Bu, saat zamanın %50'sinde 5 Volt * 0,21 mA / 1000 * 12 saat * 365 gün * 1 / 0,85 verimli güç kaynağı = yılda 5,4 watt'lık bir tasarruf sağlar. Bu çok fazla görünmüyor, ancak her bit yardımcı oluyor.

İşlem aşağıdaki gibidir

IR uzaktan kumanda üzerindeki herhangi bir tuşa ve ardından OK tuşuna basın. İlk kez bastığınızda, IR işlemine gireceksiniz ve ikinci kez bunun haklı bir talep olup olmadığını tespit edeceksiniz. İkinci kez OK, ilk tuşa basışı hızlı bir şekilde takip etmelidir, aksi takdirde tekrar geri döner. Bu yapıyı, ilk kodun kodunun doğru bir şekilde çözülmesini zorlaştıracak şekilde yaptım ve bu nedenle IR işlemede sona ermedi.

IR işlemeye girdikten sonra bilgi için bir dizi LED yanar, açıklama için daha fazla okuyun ve ilk resmi görüntüleyin.

Açıklama basit uzaktan kumanda içindir, ancak herhangi bir uzaktan kumandayı kullanabilir ve kendi anahtarlarınızı tanımlayabilirsiniz. Ayrıca bir Samsung uzaktan kumanda kullandım.

İlk dört tuş, LED'lerin en üstteki dört sırasına karşılık gelir. Ayara bağlı olarak dört LED sola veya sağa döner. 1 ile 4 arasındaki tuşlara basıldığında durum tersine çevrilir ve hafızaya kaydedilir.

1 sabit renk veya gökkuşağı efekti

2 saniye flaş kapalı veya ikinci flaş açık

3 gülen yüz kapalı gülen açık

4 DCF77 kapalı veya DCF77 açık

Anahtarın numarası aşağıdaki tuşlarda görüntülenir

5 gülen sayaç

6 gökkuşağı spektrum genişliği

7 kırmızı ayarı düzelt

8 yeşil ayarı düzelt

9 mavi ayarı düzelt

LED'lerin 6., 7. ve 8. satırı artık ayarlanan değere karşılık gelir, 6. satır birimleri, 7. satır onlukları ve 8. satır yüzleri gösterir. Her satır sıfır değeriyle başlar. Yani sıradaki ilk led 0, ikincisi 1 vs.

0 zaman ayarı

/\ parlaklık ayarı

0 tuşuna basıldığında saat ayarlamak istediğinizi belirtmek için "on" LED'i yanar ve 0'a ikinci kez bastığınızda ayarlanan saat ekrana gelir.

Artık saat ayarlanabilir ve ekranda gösterilir.

Doğru zamanı ayarlayın ve ardından referans saatteki dakika aynıysa, OK düğmesine basın.

Zaman ayarlanır.

Dakika veya saat butonunu çalıştırmazsanız saat değişikliği yapılmayacaktır. Onlara basarsanız, saat hemen ayarlanacaktır.

5 ile 9 arasındaki tuşların değeri, tuşları ile değiştirilebilir.

sağ artı 1

sol eksi 1

ileri artı 10

tersi eksi 10'dur.

ve zaman ayarı için

sağ artı 1 dakika

sol eksi 1 dakika

ileri artı 1 saat

ters eksi 1 saat

Bazen tuşa basma tanınmaz veya iki kez yapılır. Bu nedenle, ayar iyi giderse dikkat edin, aksi takdirde tekrar deneyin veya düzeltin. Benim de test ettiğim Samsung uzaktan kumandası, (çok ucuz) basit uzaktan kumandadan çok daha iyi çalıştı.

Rengi ayarlarken, değişikliği doğrudan tüm ekranda görürsünüz. Renklere genel bakış içeren bir site için bkz. https://www.helderester.nl/kleurentabel.html. Elbette herhangi bir değer belirleyebilirsiniz.

Gökkuşağı spektrum genişliği 0 değerine sahipse, spektrum çok dardır ve ekranda sürekli değişen bir renk vardır.

Saati bu şekilde ayarlamanın dezavantajı ise tarih yanlış olduğu için yaz/kış geçişi hesaplayamamanızdır. Saatin kendisi için önemli değil çünkü artık kullanmıyoruz.

Adım 13: Sırada Ne Var?

Sırada Neler Var?
Sırada Neler Var?

Ardından, boş hafıza hala yeterliyse ses çıkar.

Hoparlör kutularına zaten sahibim. Onlar eski bir dizüstü bilgisayardan.

Önerilen: