Szukaj kodu

Jak używać wyświetlacza 4-cyfrowego TM1638. Obejrzyj wideo.

Jak używać wyświetlacza 4-cyfrowego TM1638. Obejrzyj wideo.

Moduł TM1638 to wszechstronny komponent, który może wyświetlać liczby i znaki, będąc jednocześnie sterowanym za pomocą przycisków. W tym samouczku dowiesz się, jak skonfigurować i zaprogramować ten wyświetlacz, aby pokazywał różne wartości, w tym liczby i wartości szesnastkowe. Po ukończeniu tego przewodnika będziesz mieć w pełni działający wyświetlacz, który reaguje na naciśnięcia przycisków i zmienia to, co jest pokazywane, w zależności od danych wprowadzanych przez użytkownika. Demonstrację można zobaczyć na filmie (na filmie o 00:00).
TM1637 keypad display module-1

Objaśnienie sprzętu

Moduł TM1638 jest zaprojektowany do wyświetlania informacji i odbierania danych wejściowych z przycisków. Składa się z 8-cyfrowego wyświetlacza LED oraz matrycy 16 przycisków. Każdy przycisk można zaprogramować tak, aby wyzwalał różne funkcje, co pozwala na stworzenie przyjaznego dla użytkownika interfejsu. Moduł łączy się z mikrokontrolerem za pomocą trzech pinów: pinu wejścia/wyjścia danych, pinu zegara oraz pinu strobu. Taka konfiguracja umożliwia wydajną komunikację między mikrokontrolerem a modułem TM1638. Układ TM1638 zarządza wyświetlaczem i wejściami przycisków. Wykorzystuje protokół komunikacji szeregowej, który pozwala mu sterować wyświetlaczem i odczytywać stany przycisków przy minimalnym okablowaniu. Każde naciśnięcie przycisku wysyła sygnał do mikrokontrolera, który może następnie wykonać określone działania w zależności od tego, który przycisk został naciśnięty.

Szczegóły z karty katalogowej

ProducentQYF
Numer częściTM1638
Napięcie logiki/IO5 V
Napięcie zasilania5 V
Prąd wyjściowy (na segment)20 mA
Prąd szczytowy (całkowity)120 mA
Progi logiczne wejścia0,2 V (niski) / 0,8 V (wysoki)
ObudowaDIP-28
  • Upewnij się, że napięcie zasilania jest stabilne i wynosi 5 V dla optymalnej wydajności.
  • Ogranicz prąd wyjściowy, aby uniknąć uszkodzenia wyświetlacza.
  • Użyj rezystorów, aby uniknąć nadmiernego prądu przez diody LED.
  • Wykonaj eliminację drgań styków przycisków w oprogramowaniu, aby uniknąć wielokrotnych wyzwalaczy.
  • Utrzymuj krótkie okablowanie, aby zmniejszyć szumy w komunikacji.

Instrukcje dotyczące okablowania

Aby podłączyć moduł TM1638, połącz go z mikrokontrolerem w następujący sposób:
Arduino wiring for TM1637 keypad display module
Arduino wiring for TM1637 keypad display module
- Podłącz pin oznaczony VCC na module TM1638 do zasilania 5 V mikrokontrolera. - Podłącz pin GND na module TM1638 do masy mikrokontrolera. - Podłącz pin STB (często oznaczany jako STROBE) do pinu cyfrowego 5 na mikrokontrolerze. - Podłącz pin CLK (zegar) do pinu cyfrowego 2 na mikrokontrolerze. - Podłącz pin DIO (wejście/wyjście danych) do pinu cyfrowego 3 na mikrokontrolerze. Przed włączeniem systemu sprawdź wszystkie połączenia. Jeśli postępowałeś zgodnie z filmem (na filmie o 02:30), nie powinieneś mieć problemów z okablowaniem.

Przykłady kodu i omówienie

Poniższy fragment kodu inicjalizuje moduł TM1638 i konfiguruje wyświetlacz. Identyfikator module reprezentuje instancję TM1638 utworzoną do interakcji z wyświetlaczem.
TM1638QYF module(DIO, CLK, STB);
void setup() 
{
  module.setupDisplay(true, 7);
}
W tym fragmencie wyświetlacz jest ustawiony na maksymalną jasność (7). Następna część kodu obsługuje naciśnięcia przycisków i zmienia wyświetlacz w zależności od tego, który przycisk został naciśnięty.
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;
    // pozostałe przypadki poniżej
  }
}
Ta funkcja sprawdza, który przycisk został naciśnięty, za pomocą getButtons() i odpowiednio aktualizuje wyświetlacz. Zmienna mode określa, jaki tekst jest wyświetlany w zależności od naciśniętego przycisku. Na koniec główna pętla ciągle aktualizuje wyświetlacz.
void loop() 
{
  update(&module, &mode);
}
Ta pętla wywołuje funkcję update, zapewniając odświeżanie wyświetlacza w oparciu o interakcję użytkownika. Aby w pełni zrozumieć działanie, zapoznaj się z pełnym kodem zamieszczonym poniżej artykułu.

Demonstracja / Czego się spodziewać

Po podłączeniu wszystkiego i wgraniu kodu naciśnięcie przycisków powinno zmieniać tekst na wyświetlaczu. Na przykład naciśnięcie przycisku 1 spowoduje wyświetlenie „press 1", a naciśnięcie przycisku 2 zmieni go na „press 2". W przypadku jakichkolwiek problemów sprawdź ponownie okablowanie i upewnij się, że użyto właściwych pinów, jak wspomniano wcześniej. Obejrzenie filmu (na filmie o 05:00) również pomoże potwierdzić, że wszystko działa zgodnie z oczekiwaniami.

Znaczniki czasu w filmie

  • 00:00 - Wprowadzenie
  • 02:30 - Instrukcje dotyczące okablowania
  • 05:00 - Wyjaśnienie kodu i demonstracja

Obrazy

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.
Język: 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);
}

Rzeczy, których możesz potrzebować

Zasoby i odniesienia

Pliki📁

Biblioteki Arduino (zip)

Instrukcja obsługi