İçin programa yazdın Arduino gibi bir şey:
lcd.print ("Merhaba Dünya!")
Kart itaatkâr bir şekilde komutu yerine getirdi ve ekranda metin belirdi. Ancak bir cihaz nasıl bir şey “dedi”, ikincisi “duydu” ve “anladı”? Bu, sanatçıdan portreni yapmasını istemek gibidir, ancak üzerinde nasıl çalıştığını görmez. Indoorgeek lakaplı Instructsbles'ın yazarı, “yaşayan Arduino” nun ayakkabılarında hissetmenize yardımcı olacak ve HD44780'i düşük bir seviyeye yönlendirecek bir stand ile geldi. Yarışmalardan birinde, bu ev yapımı ürün birincilik ödülünü kazandı.
Biraz detay gerektiriyor: HD44780 kontrol cihazındaki veya uyumlu herhangi bir modül (LCD, VLI veya PMOLED), sekiz açma / kapatma düğmesi, mandallama düğmesi, sürgülü anahtar, 1 kΩ değişken direnç, Mikro USB soketli bir kart ve bir kasa.
Fotoğrafta gösterilmeyenlerden ihtiyacımız var: 10 kOhm'luk bir direnç ve 100 μF ve en az 6,3 V'luk bir kapasitör.
Indoorgeek'in kendisi en yaygın tipte bir modül aldı: LCD, satır başına 16 karakter, iki satır. Ancak modüllerin geri kalanı aynı kontrol prensibine sahiptir, sadece pin çıkışı biraz farklı olabilir, bu nedenle veri sayfasına bakmak için çok tembel olmayın.
Her durumda, ortak kabloya bağlantı mantıksal sıfıra karşılık gelir ve +5 volt güç barasına bağlantı birliğe karşılık gelir.
Pim 1 ve 2 modüle güç vermek içindir. Birincisi her zaman ortak bir kabloya bağlanır ve ikincisi her zaman bir güç veriyoluyla.
Pim 3 kontrastı ayarlamak içindir. Ortak kabloya göre 0 ila 5 voltluk bir voltaj uygulandığında, kontrast sıfırdan maksimuma değişir.
Pin 4, bir veri kaydı ile bir talimat kaydı arasında seçim yapmanıza olanak tanır. Mantıksal bir sıfır veririz - talimatların kaydı (diğer bir deyişle komutlar) seçilir, birim veri kaydıdır.
Talimatlar, örneğin şunlar olabilir: denetleyiciyi başlatın, ekranı temizleyin, vb. Ve veriler göstergede göstereceğiniz işaretleri içerir.
Aksine, bazı kayıtlardaki verileri okuyabilirsiniz. Bunu yapmak için, pim 5'e yüksek bir seviye uygulamanız gerekir ve ekran mikrodenetleyicinize geri bilgi çıkış moduna geçer. Mikrodenetleyicinizden ekran denetleyicisine tekrar veri yazmaya başlamak için pin 5'e düşük seviye 5 göndermeniz gerekir. Oldukça sık, örneğin bu ev yapımı üründe olduğu gibi okuma modu hiç kullanılmaz.
7'den 14'e kadar olan pimlere göre, ekran 8 bit kodlamayla komutları ve verileri değiş tokuş edebilir. En düşük seviye, pim 7'ye, en yüksek - 14'e karşılık gelir.
Kapı için pim 6 gereklidir.7'den 14'e kadar olan pimlerdeki verileri yavaşça ayarlıyorsunuz, ancak pim 6 mantıklı bir sıfır olsa da modül buna hiç yanıt vermiyor. Daha sonra, pimlerin 7 ila 14'ü değiştirmeden, pim 7'ye yüksek seviyeli kısa süreli bir darbe gönderirsiniz - ve veriler iletilir.
Sonuçlar 15 ve 16 - varsa arka ışığın beslenmesi. 15 - artı, 16 - eksi.
İndorgeek için mevcut olan kasa 200x150x40 milimetre boyutundaydı. Bu dava, başka bir sökülüp ev yapımı olarak alındı ve içinde zaten delikler vardı. Master, mümkün olduğunca az ek yapmak için bunları yeni tasarımda maksimumda kullandı.
Veri / komut veri yolu hatlarının durumunu değiştirmek için sekiz adet geçiş anahtarı, kayıtlar arasında seçim yapmak için bir anahtar (yukarıya bakın), geçitleme için bir düğme, kontrastı sürekli ayarlamak için değişken bir direnç ayarladı.
Mikro USB jaklı yükseltici kart, kabloların bağlanmasını kolaylaştıran kullanışlı pimlere sahiptir. Burada bunlardan sadece ikisine ihtiyaç var: +5 V ve ortak bir tel. Böyle bir kartınız yoksa ve bir yerden lehimlenmiş bir Mikro USB soketi lehimleme için elverişsiz görünüyorsa, sadece USB konektörlü bir kablo alabilirsiniz. Her durumda, usta ve lehimden sonra böyle bir şema tekrar edelim:
Geçiş anahtarlarının kontakları üst konuma karşılık gelir, indorgeek birbirine bağlanır ve üzerlerine bir artı ekler. Aynı şeyi alt konuma karşılık gelen geçiş anahtarlarının kontakları ile de yaptı, sadece bir eksi verdi. Geçiş anahtarlarının hareketli kontaklarını birbiriyle değil, her ikisinin de “ağırlık” ına göre veri yolu / modül komutlarının sonuçlarıyla (D0 - pin 7 - düşük dereceli, D7 - pin 14 - yüksek) bağladı. Eğer ustalar çocukluğunda öfkeli pull-up dirençleri ısırmamış olsaydı, daha basit geçiş anahtarları kullanabilirdi - anahtarlama değil, normalde açık.
Ancak aynı dirençler, ancak temas sıçramasının baskılama devrelerinde asla rahatsız olmadı. Burada, ekran kontrolörünün flaş düğmesine birkaç kez basmaması için bu devre gereklidir. Strobe darbeleri alınmadığı sürece, diğer kontroller gevezelik bastırma gerektirmez, kalan hatlardaki veriler istediğiniz kadar çok değişebilir. Ana şey, geçiş düğmelerine ve düğmeye basıldığında anahtara dokunmamaktır. Böylece, 10 kOhm'luk bir dirençle, master pimi 6 ortak kabloya ve düğmeyi artı veriyoluna çekti. Düğmenin direnci çok daha düşük olduğu için, basıldığında “sürüklenir”. Serbest bırakıldığında direnci sonsuza yakın olur ve direnç onu zaten “çeker”. Artı veri yoluna bir artı ile ve dirence eksi ve ekranın altıncı çıkışına bağlanan 100 uF kapasitör (şemada gösterilmemiştir) gevezeliği bastırır. Elbette konuşmayı bir anahtar düğmesi ve RS-tetikleyicisi ile bastırmak daha iyidir.
Sürgülü anahtarda, sabit kontakların çıkışları geçiş anahtarları ile aynı şekilde bağlanır ve hareketli anahtar modülün 6 çıkışına bağlanır. Burada, geliştirici tekrar çekme dirençleri korkusu gösterdi. Bu anahtar, komutların (sıfır) ve veri (birim) iletim modları arasında seçim yapmak için gereklidir.
Indoorgeek, ortak telin minimum kontrastına karşılık gelen değişken direncin çıkışını, artı veri yolunun tersini ve orta (motor) modülün üçüncü çıkışına bağladı.
Sonuçlar 1, 5 ve 16 (sırasıyla, eksi güç, yazma / okuma ve eksi arka ışık) ortak bir kabloya bağlandığından, kayıt modu sürekli olarak seçilir. Sonuçlar 2 ve 15 (sırasıyla artı güç ve artı arka ışık), beş voltluk veri yoluna bağlandı. Ekran modülüne arka ışık LED'lerinden geçen bir akım sınırlama direnci entegre edilmiştir.
Tüm bunları topladıysanız, şimdi önünüzde - böyle bir şey:
Ön panel indoorgeek, aynı şeyi yapabileceğiniz şekilde tasarlanmıştır:
HD44780 denetleyici komutlarını ve bunları nasıl kontrol edeceğinizi öğrenebilirsiniz. veri sayfası. Ayrıca hazır komut dosyası örneklerini de görebilirsiniz. simülatör. Yeni başlayanlar için, HELLO'yu görüntülemek için indoorgeek'in arkasındaki adımları tekrarlayacağız!
Cihazı açın. Arka ışık yanacaktır. Kaydırma düğmesini mantıksal sıfıra karşılık gelen konuma getirin, böylece gösterge alma komutları moduna geçer. Açma / kapatma düğmelerini kullanarak komut / veri yolundaki ikili sayıyı 00001111 olarak ayarlayın ve kısa süreliğine flaş düğmesine basın. Bu komut şu anlama gelir: ekranı açın, imleci görünür ve yanıp sönen hale getirin; Aynı şekilde, 00110000 komutunu vereceğiz, yani: 8 bit biçiminde veri almak, ilk satırı ve yazı tipini 5 x 8 piksel seçin. Görsel olarak hiçbir şey olmayacak, ancak ekran denetleyicisinin içinde bir yerde gerekli anahtarlar oluşacak. Veri aktarabilirsiniz. Kaydırma anahtarını mantıksal birime karşılık gelen konuma çeviriyoruz, şimdi gösterge modülü bunları kabul etmeye hazır. H harfinin ASCII kodunu ayarlayın, yani 01001000, veriyolundaki geçiş anahtarlarını değiştirin ve flaş düğmesine basın. Ekranda karşılık gelen harf görünür ve imleç bir konum sağa hareket eder. Benzer şekilde, E, L, L, O harflerini ve ünlem işaretini geçeceğiz: 01000101, 01001100, 01001100, 01001111, 00100001. Aynı şeyi yaptıysanız, sadece monte ettiğiniz standda veya simülatörde önemli değil. ! Bunun gibi:
Arduino'nun sadece birkaç karakter görüntülemek için ne kadar yaptığını bu şekilde anladınız. Ve ilginç efektler elde edebileceğiniz, standart olmayan karakterleri tanımlayabileceğiniz, daha karmaşık eylemleri gerçekleştirecek ekipler var ...
Arduino kütüphanesi LiquidCrystal'in "mutfağına" geziniz yeni başlıyor ve eğlenceli olsun!