Search Code

TM1638 4 haneli bir ekran nasıl kullanılır. Videoyu izleyin.

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.
TM1637 keypad display module-1

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ı

ÜreticiQYF
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şikleri0,2 V (düşük) / 0,8 V (yüksek)
PaketDIP-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:
Arduino wiring for TM1637 keypad display module
Arduino wiring for TM1637 keypad display module
- TM1638 üzerindeki 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

Görseller

TM1637 keypad display module-1
TM1637 keypad display module-1
TM1637 keypad display module-2
TM1637 keypad display module-2
TM1637 keypad display module-3
TM1637 keypad display module-3
TM1637 keypad display module
TM1637 keypad display module
Arduino wiring for TM1637 keypad display module
Arduino wiring for TM1637 keypad display module
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

Kaynaklar ve referanslar

Dosyalar📁

Arduino Kütüphaneleri (zip)

Kullanım Kılavuzu