TM1638 4 haneli bir ekran nasıl kullanılır. Videoyu izleyin.
TM1638 modülü, sayıları ve karakterleri görüntüleyebilen ve aynı zamanda butonlarla kontrol edilebilen çok yönlü bir bileşendir. Bu eğitimde, bu ekranı sayılar ve hex değerleri dahil çeşitli değerleri gösterecek şekilde nasıl kuracağınızı ve programlayacağınızı öğreneceksiniz. Bu rehberin sonunda, buton basımlarına yanıt veren ve kullanıcı girişine göre görüntüleneni değiştiren tamamen işlevsel bir ekrana sahip olacaksınız. Videoda (videoda 00:00'da) bir gösterim görebilirsiniz.
Donanım Açıklaması
TM1638 modülü, bilgi görüntülemek ve butonlardan giriş almak için tasarlanmıştır. 8 haneli bir LED ekran ve 16 butondan oluşan bir matristen oluşur. Her buton, farklı işlevleri tetiklemek üzere programlanabilir ve kullanıcı dostu bir arayüz sağlar. Modül, bir mikrodenetleyiciye üç pin üzerinden bağlanır: bir veri giriş/çıkış pini, bir saat pini ve bir strobe pini. Bu kurulum, mikrodenetleyici ile TM1638 arasında verimli iletişim sağlar. TM1638 IC, ekranı ve buton girişlerini yönetir. Minimum kablolama ile ekranı kontrol etmesine ve buton durumlarını okumasına olanak tanıyan seri bir iletişim protokolü kullanır. Her buton basımı mikrodenetleyiciye bir sinyal gönderir ve mikrodenetleyici, hangi butona basıldığına bağlı olarak belirli eylemleri gerçekleştirebilir.Veri Sayfası Detayları
| Üretici | QYF |
|---|---|
| Parça numarası | TM1638 |
| Mantık/G/Ç voltajı | 5 V |
| Besleme voltajı | 5 V |
| Çıkış akımı (segment başına) | 20 mA |
| Tepe akımı (toplam) | 120 mA |
| Giriş mantık eşikleri | 0,2 V (düşük) / 0,8 V (yüksek) |
| Paket | DIP-28 |
- Optimum performans için besleme voltajının 5 V'ta sabit olduğundan emin olun.
- Ekrana zarar vermemek için çıkış akımını sınırlayın.
- LED'lerden aşırı akım geçmesini önlemek için dirençler kullanın.
- Birden fazla tetiklemeyi önlemek için yazılımda buton girişlerinde debounce uygulayın.
- İletişimdeki gürültüyü azaltmak için kablolamayı kısa tutun.
Bağlantı Talimatları
TM1638 modülünü bağlamak için mikrodenetleyicinize şu şekilde bağlayacaksınız:
VCC etiketli pini mikrodenetleyicinizin 5V güç kaynağına bağlayın.
- TM1638 üzerindeki GND pinini mikrodenetleyicinizin toprağına bağlayın.
- STB pinini (genellikle STROBE olarak etiketlenir) mikrodenetleyicinizdeki dijital pin 5'e bağlayın.
- CLK pinini (saat) mikrodenetleyicinizdeki dijital pin 2'ye bağlayın.
- DIO pinini (veri giriş/çıkış) mikrodenetleyicinizdeki dijital pin 3'e bağlayın.
Sistemi açmadan önce bağlantılarınızı kontrol ettiğinizden emin olun. Videoyu (videoda 02:30'da) takip ettiyseniz, kablolama ile ilgili sorun yaşamamanız gerekir.
Kod Örnekleri ve Açıklama
Aşağıdaki kod parçacığı TM1638 modülünü başlatır ve ekranı kurar.module tanımlayıcısı, ekranla etkileşim için oluşturulan TM1638 örneğini temsil eder.
TM1638QYF module(DIO, CLK, STB);
void setup()
{
module.setupDisplay(true, 7);
}
Bu parçacıkta ekran, maksimum parlaklığı (7) gösterecek şekilde ayarlanır. Kodun bir sonraki kısmı buton basımlarını yönetir ve hangi butona basıldığına bağlı olarak ekranı değiştirir.
void update(TM1638QYF* module, word* mode) {
word buttons = module->getButtons();
if (buttons != 0) {
*mode = buttons >> 1;
}
switch (*mode) {
case 0: module->setDisplayToString("press 1"); break;
// diğer durumlar devam eder
}
}
Bu işlev, getButtons() kullanarak hangi butona basıldığını kontrol eder ve ekranı buna göre günceller. mode değişkeni, basılan butona göre hangi metnin görüntüleneceğini belirler. Son olarak, ana döngü ekranı sürekli günceller.
void loop()
{
update(&module, &mode);
}
Bu döngü, update işlevini çağırır ve ekranın kullanıcı etkileşimine göre yenilenmesini sağlar. Tam bir anlayış için makalenin altında yüklenen tam koda bakın.
Gösterim / Beklentiler
Her şeyi bağladıktan ve kodu yükledikten sonra, butonlara basmak ekran metnini buna göre değiştirmelidir. Örneğin, buton 1'e basmak "press 1" görüntülerken, buton 2'ye basmak "press 2" olarak değiştirir. Herhangi bir sorun olursa, kablolamanızı tekrar kontrol edin ve belirtildiği gibi doğru pinlerin kullanıldığından emin olun. Videoyu (videoda 05:00'da) izlemek, her şeyin beklendiği gibi çalıştığını doğrulamanıza da yardımcı olacaktır.Video Zaman Damgaları
- 00:00 - Giriş
- 02:30 - Bağlantı Talimatları
- 05:00 - Kod Açıklaması ve Gösterim
28-This is the Arduino code for a TM1638 8-digit display with a 4x4 matrix button.
Dil: C++
/*
* This is the Arduino code for TM1638 8-digit display.
* with 16 matrix buttons.
* *
* Written by Ahmad Nejrabi for Robojax Video
* Date: Dec 10, 2017, in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purposes only.
*
*/
/*
// http://arduinolearning.com/code/qyf-tm1638-and-arduino-module.php#codesyntax_2
* Modified for Robojax video on Dec 10, 2017
*/
#include <TM1638.h>
#include <TM1638QYF.h>
#define STB 5
#define DIO 3
#define CLK 2
TM1638QYF module(DIO, CLK, STB);
word mode;
void setup()
{
module.setupDisplay(true, 7);
mode = 0;//initial button zero
}
void update(TM1638QYF* module, word* mode) {
word buttons = module->getButtons();
// button pressed - change mode
if (buttons != 0) {
*mode = buttons >> 1;
if (*mode < 0) {
module->clearDisplay();
delay(100);
}
}
switch (*mode) {
case 0://S1
module->setDisplayToString("press 1");
break;
case 1://S2
module->setDisplayToString("press 2");
break;
case 2://S3
module->setDisplayToString("press 3");
break;
case 4://S4
module->setDisplayToString("press 4");
break;
case 8://S5
module->setDisplayToString("press 5");
break;
case 16://S6
module->setDisplayToString("press 6");
break;
case 32://S7
module->setDisplayToString("press 7");
break;
case 64://S8
module->setDisplayToString("press 8");
break;
case 128://S9
module->setDisplayToString("press 9");
break;
case 256://S10
module->setDisplayToString("press 10");
break;
case 512://S11
module->setDisplayToString("press 11");
break;
case 1024://S12
module->setDisplayToString("press 12");
break;
case 2048://S13
module->setDisplayToString("press 13");
break;
case 4096://S14
module->setDisplayToString("press 14");
break;
case 8192://S15
module->setDisplayToString("press 15");
break;
case 16384://S16
module->setDisplayToString("robojax");
break;
default:// unknown button
module->setDisplayToString("?????");
break;
}
}
void loop()
{
update(&module, &mode);
}
İhtiyacın olabileceğini düşünüyor
-
AmazonTM1638 on Amazonamzn.to
-
AliExpressTM1638 Keypad module on AliExpresss.click.aliexpress.com
Kaynaklar ve referanslar
-
DışTM1638 Library (from GitHub)github.com
Dosyalar📁
Arduino Kütüphaneleri (zip)
Kullanım Kılavuzu
-
TM1638 Kılavuzu
robojax-TM1638_manual.pdf5.07 MB