TM1637 Modül 4 Haneli 7 Segment Display ve Arduino
Bir sonraki projenizde bir saat, zamanlayıcı veya sayaç tasarlamak istiyorsanız, 4 basamaklı yedi bölümlü bir ekrana ihtiyacınız olacak. Ancak, çıplak 4 basamaklı 7 segmentli bir ekran genellikle 12 bağlantı pini gerektirir. Bu oldukça fazladır ve diğer modüllere ve sensörlere yer bırakmaz.
Sonuçta, tonlarca kablo olmadan 4 basamaklı yedi segmentli bir ekranı kontrol edebilseydiniz harika olmaz mıydı? TM1637 modülünün devreye girdiği yer burasıdır. TM1637 modülü, pin bağlantılarını dörde düşürür. Güç bağlantıları için iki pin kullanılır ve diğer iki pin segmentleri kontrol etmek içindir.
7 Segmentli Görüntü Temelleri
7 segmentli ekranlar, aslında belirli bir düzende ('8' şekli) sıralanan yedi LED'dir. Yedi LED'in her birine segment adı verilir, çünkü yandığında segment sayısal bir basamağın (hem ondalık hem de onaltılık) bir parçasını oluşturur.
Bu ayrı segmentler, her bir LED'i temsil eden "A" dan "G" ye kadar etiketlenmiştir. Belirli segmenti YÜKSEK veya DÜŞÜK olarak ayarlayarak, istenen bir karakter modeli oluşturulur.
TM1637 Modüle Genel Bakış
Modülün merkezinde, Titan MicroElectronics - TM1637'den ucuz bir seri LED sürücüsü bulunmaktadır .
TM1637, LED'lerin AÇIK / KAPALI ve parlaklık kontrolünün yanı sıra her bir segmente erişim dahil olmak üzere birçok işlevi destekler. Ayrıca, LED'lerin parlaklığını yazılım düzeyinde ayarlamanıza da olanak tanır.
Ve bir başka güzel şey de, ekran mikro denetleyici tarafından güncellendiğinde, TM1637 daha sonra ekranı yenilemek için gereken tüm işi hallediyor. Böylece mikrodenetleyiciden ek yük kaldırılır, bu da diğer önemli şeyleri yapmayabilir.
TM1637 modülü, sensör verilerini veya sıcaklığı görüntülemek için dört adet 0.36 segmentli 7 segmentli ekran içerir. Dört 7 segmente ek olarak, modülün merkezinde saat veya zaman tabanlı projeler oluşturmayı çok kolaylaştıran bir 'kolon' vardır.
TM1637 modülü, 3,3 ila 5 voltluk bir besleme voltajında çalışır ve iki kablolu bir veri yolu üzerinden iletişim kurar, bu nedenle yalnızca iki veri pini artı VCC ve toprak gerektirir. Veri yolu bu cihaza özeldir, ancak Arduino için karmaşıklıkları gizleyen ve ekranla iletişim kurmayı kolaylaştıran kitaplıklar vardır.
TM1637 Modül Bağlantı Düzeni
Modül üzerinde bağlantı yapmak için 4 pinli dik açılı erkek başlık bulunmaktadır.
CLKbir saat giriş pinidir. Arduino'daki herhangi bir dijital pime bağlayın.
DIObir Veri G / Ç pinidir. Arduino'daki herhangi bir dijital pime bağlayın.
VCCpin modüle güç sağlar. 3.3V ila 5V güç kaynağına bağlayın.
GND bir toprak pimidir.
Arduino UNO ile Bağlantı TM1637 Modülü
TM1637'yi bir Arduino'ya bağlamak çok basit. Yalnızca dört kabloyu bağlamanız gerekir: ikisi güç için ve ikisi ekranı kontrol etmek için.
Modül, Arduino'nun 5 voltluk çıkışından güvenli bir şekilde beslenir. CLK ve DIO pinleri, Arduino'nun 2 ve 3 numaralı dijital pinlerine bağlanır.
TM1637 ile deneyler için bağlantı aşağıdadır:
Arduino'da kullanılan pinlerin hiçbiri kritik değildir çünkü modül herhangi bir pime özgü özellik gerektirmez, bu nedenle farklı pinler kullanmak istiyorsanız bunu güvenle yapabilirsiniz. Kablolardaki herhangi bir değişikliği yansıtmak için koddaki pin numaralarını değiştirdiğinizden emin olun.
Kütüphane Kurulumu
TM1637 yongasıyla konuşmak için bir kitaplık kullanmanız gerekir. Avishay Orpaz, TM1637 ekranlar için mükemmel bir kütüphane olan TM1637 Ekran kütüphanesi yazmıştır . Bu kitaplık, ekranı kontrol etmeyi oldukça kolaylaştıran birçok yerleşik işleve sahiptir. Sadece hangi numaranın görüntüleneceğini belirlersiniz ve sizin için işlenir.
Kitaplığı kurmak için Sketch> Dahil Et> Kitaplıkları Yönet'e gidin … Kitaplık Yöneticisinin kitaplıklar dizinini indirmesini ve kurulu kitaplıkların listesini güncellemesini bekleyin.
Aramanızı ' tm1637 ' yazarak filtreleyin . Avishay Orpaz'ın kütüphanesini arayın . Bu girişe tıklayın ve ardından Yükle'yi seçin.
Temel Arduino Kodu
Aşağıda, bir dizi farklı rutinden geçen temel bir test programı bulunmaktadır. Devam edin ve Arduino'nuza yükleyin.
Kod Açıklaması:
Çizim, kitaplığın dahil edilmesi ve TM1637 ekranını bağlamak için kullanılan pimlerin tanımlanmasıyla başlar.
Ardından, işlevle TM1637Display sınıfının yeni bir örneği oluşturulur TM1637Display()
. Bu fonksiyon iki parametre gerektirir, ilki CLK pini ve ikincisi DIO pini.
Ekranın ayrı bölümlerini ayarlamanın iki yolu vardır. Görüntünün ayrı bölümlerini ayarlayan kodun kurulum bölümünden önce birkaç dizi tanımlanır. Fonksiyonu setSegments()
daha sonra ekrana yazmak için kullanacağız.
Ayrı segmentleri ayarlamak için ilk seçenek, onaltılık sayılar kullanmaktır. Onaltılık 0xFF, ikili olarak 11111111'e çevrilir ve tüm segmentleri AÇIK hale getirir. Örneğin 0xEF, 11101111'e çevirir ve E segmenti dışındaki tüm segmentleri AÇIK hale getirir, 0x00 ise tüm segmentleri KAPATIR.
Saymanın sağdan sola gittiğini, bu nedenle 11111111 segmentinin (nokta) GFEDCBA'ya karşılık geldiğini unutmayın.
Ayrı segmentleri ayarlamak için başka bir seçenek, açmak istediğiniz segmentleri belirlemektir. Bu seçenek biraz daha kolaydır. Aşağıdaki koda bakın. İlk parçacık "dOnE" sözcüğünün ekranda yazdırılmasına yardımcı olurken, ikinci parçacık ekranda "° C" yazdırılmasına yardımcı olur.
Ayarlanacak hiçbir şey olmadığından kurulum bölümü boş tutulur.
Kodun döngü bölümünde birçok kütüphane işlevi kullandık. Onları tek tek öğrenelim.
setBrightness ( parlaklık , açık )
Bu işlev, ekranın parlaklığını ayarlamak için kullanılır. 0 (en düşük parlaklık) ile 7 (en yüksek parlaklık) arasında bir parlaklık seviyesi belirleyebilirsiniz. İkinci argüman isteğe bağlıdır ve ekranı AÇMAK veya KAPATMAK için kullanılabilir. Doğru (ekran AÇIK) veya yanlış (ekran KAPALI) olarak iletebilirsiniz.
Örneğin , ekranı kapatırken display.setBrightness(5)
parlaklığı 5 olarak ayarlar display.setBrightness(5, false)
.
setSegments ( segmentler [] , uzunluk , konum )
Bu işlev, bir ekranın ayrı bölümlerini ayarlamak için kullanılabilir. İlk argüman, segment bilgilerini içeren dizidir. İkinci bağımsız değişken güncellenecek basamak sayısını (0-4) belirtir. "DOnE" kelimesini yazdırmak istiyorsanız, 4 olacaktır, "° C" sembolü için 2 olacaktır. Üçüncü bağımsız değişken, yazdırmak istediğiniz konumu belirler (0-en sol, 3-en sağ) .
İşlevin ikinci ve üçüncü bağımsız değişkeninin isteğe bağlı olduğuna dikkat edin. Bu nedenle, ekranın tüm rakamlarını güncellemek istiyorsanız, bunları atlayabilirsiniz. Örneğin, aşağıdaki kod parçacığı önce ekranın tüm bölümlerini açacak ve ardından "dOnE" yazdıracaktır.
Bununla birlikte, "° C" sembolünü yazdırmak için ekranın yalnızca son iki basamağını güncellemek istiyorsanız, şunu kullanmalısınız:
showNumberDec ( sayı , baştaki_ sıfır , uzunluk , konum )
Bu, en çok kullanacağınız işlevdir. İlk argüman, ekranda görüntülemek istediğiniz bir sayıdır. Argümanların geri kalanı isteğe bağlıdır.
Örneğin, aşağıdaki kod parçacığı 0'dan 9'a kadar sayacak ve ardından ekranda -12 ve -999 yazdıracaktır.
İkinci bağımsız değişken, bir sayıyı baştaki sıfırlarla doldurmak için kullanılabilir. Bunu true olarak ayarlamak bir sayıya baştaki sıfırları ekler ve bunu false olarak ayarlamak sayıyı olduğu gibi yazdırır. Örneğin,
Üçüncü ve dördüncü argüman, önceki işlevdeki ile aynıdır. uzunluk güncellenecek basamak sayısını (0-4) belirtir ve konum yazdırmak istediğiniz konumu belirler (0-en sol, 3-en sağ).
Bu nedenle, sayıyı ekranın ortasında göstermek isterseniz şunu yazarsınız:
showNumberDecEx ( sayı , noktalar , baştaki_ sıfırlar , uzunluk , konum )
Bu, showNumberDec()
işlevin genişletilmiş bir sürümüdür . Sadece ikinci argümanın farklı olduğunu görebilirsiniz. Bu argüman, ekranın noktalarını kontrol etmenizi sağlar. Aşağıdaki değerleri kullanabilirsiniz.
Her rakam arasında noktalar bulunan TM1637 ekranlar için:
Yalnızca iki nokta üst üste işaretli TM1637 ekranlar için:
Nokta ve iki nokta üst üste bulunan TM1637 ekranlar için:
Bu nedenle, orta kolon etkinleştirilmiş bir saat görüntülemek istiyorsanız, aşağıdaki gibi bir şey kullanırsınız:
Arduino Projesi - TM1637 ve DHT11 / DHT22 ile Termometre Oluşturma
TM1637 ekranının en iyi kullanımı sıcaklık, nem, voltaj veya hız gibi sensör okumalarını görüntülemektir. Aşağıdaki proje, TM1637 ekranında DHT11 / DHT22'den sıcaklık okumalarını görüntüler.
DHT11 / DHT22 modülüne aşina değilseniz, bu öğreticiyi okumayı (en azından gözden geçirmeyi) düşünün.
Aşağıdaki bağlantı şeması, DHT11 / DHT22 sensörünü TM1637 ekranıyla birlikte Arduino'ya nasıl bağlayabileceğinizi gösterir.
Aşağıdaki çizim DHT11 / DHT22 sensörüyle iletişim kurar ve ekranda sıcaklık okumalarını gösterir. Sıcaklık, 2 saniye aralıklarla Celius ve Fahrenheit cinsinden görüntülenir. Kod, Adafruit DHT sensörünü ve Adafruit Birleşik Sensör kitaplıklarını kullanır, bu nedenle lütfen bunları da kurun.
Arduino Projesi - TM1637 ve DS3231 ile saat oluşturma
TM1637 ekranının diğer bir tipik kullanımı, onu DS3231 RTC modülüyle eşleştirmek ve 24 saatlik bir saat oluşturmaktır.
DS3231 RTC modülüne aşina değilseniz, öğreticiyi okumayı düşünün.
Ardından, aşağıda gösterildiği gibi DS3231'e bir bağlantı yapmamız gerekiyor. TM1637 ekranının öncekiyle aynı şekilde bağlandığını unutmayın.
Aşağıdaki çizim, saati 24 saatlik zaman biçiminde göstermektedir. Kod, ' RTClib ' arayarak Arduino IDE'deki Kitaplık Yöneticisi aracılığıyla kurabileceğiniz Adafruit RTC kitaplığını kullanır .