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).
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
| Producent | QYF |
|---|---|
| Numer części | TM1638 |
| Napięcie logiki/IO | 5 V |
| Napięcie zasilania | 5 V |
| Prąd wyjściowy (na segment) | 20 mA |
| Prąd szczytowy (całkowity) | 120 mA |
| Progi logiczne wejścia | 0,2 V (niski) / 0,8 V (wysoki) |
| Obudowa | DIP-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:
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. Identyfikatormodule 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
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ć
-
AmazonTM1638 on Amazonamzn.to
-
AliExpressTM1638 keypad module on AliExpresss.click.aliexpress.com
Zasoby i odniesienia
-
ZewnętrznyTM1638 Library (from GitHub)github.com
Pliki📁
Biblioteki Arduino (zip)
Instrukcja obsługi
-
Podręcznik TM1638
robojax-TM1638_manual.pdf5.07 MB