Caută cod

Cum să folosești un afișaj cu 4 cifre TM1638. Urmărește videoclipul.

Cum să folosești un afișaj cu 4 cifre TM1638. Urmărește videoclipul.

Modulul TM1638 este o componentă versatilă care poate afișa numere și caractere, fiind controlat prin butoane. În acest tutorial, vei învăța cum să configurezi și să programezi acest afișaj pentru a afișa diverse valori, inclusiv numere și valori hexazecimale. La finalul acestui ghid, vei avea un afișaj complet funcțional care răspunde la apăsările de butoane și schimbă ceea ce este afișat în funcție de intrarea utilizatorului. Poți vedea o demonstrație în videoclipul de la (în videoclip la 00:00).
TM1637 keypad display module-1

Hardware Explicat

Modulul TM1638 este proiectat pentru afișarea informațiilor și primirea intrărilor de la butoane. Acesta constă dintr-un afișaj LED cu 8 cifre și o matrice de 16 butoane. Fiecare buton poate fi programat să declanșeze diferite funcții, permițând o interfață ușor de utilizat. Modulul se conectează la un microcontroler prin trei pini: un pin de date intrare/ieșire, un pin de ceas și un pin de strobe. Această configurare permite o comunicare eficientă între microcontroler și TM1638. Circuitul integrat TM1638 gestionează afișajul și intrările de la butoane. Acesta utilizează un protocol de comunicare serială care îi permite să controleze afișajul și să citească stările butoanelor cu un minim de cabluri. Fiecare apăsare de buton trimite un semnal către microcontroler, care poate executa apoi acțiuni specifice în funcție de butonul apăsat.

Detalii din Fișa Tehnică

ProducătorQYF
Număr de piesăTM1638
Tensiune logică/IO5 V
Tensiune de alimentare5 V
Curent de ieșire (per segment)20 mA
Curent de vârf (total)120 mA
Praguri logice de intrare0,2 V (jos) / 0,8 V (sus)
PachetDIP-28
  • Asigură-te că tensiunea de alimentare este stabilă la 5 V pentru performanță optimă.
  • Limitează curentul de ieșire pentru a evita deteriorarea afișajului.
  • Folosește rezistențe pentru a evita curentul excesiv prin LED-uri.
  • Debouncează intrările butoanelor în software pentru a evita declanșările multiple.
  • Păstrează cablurile scurte pentru a reduce zgomotul în comunicare.

Instrucțiuni de Cablare

Pentru a cabla modulul TM1638, îl vei conecta la microcontrolerul tău astfel:
Arduino wiring for TM1637 keypad display module
Arduino wiring for TM1637 keypad display module
- Conectează pinul etichetat VCC de pe TM1638 la sursa de alimentare de 5V a microcontrolerului tău. - Conectează pinul GND de pe TM1638 la masa microcontrolerului tău. - Conectează pinul STB (adesea etichetat ca STROBE) la pinul digital 5 de pe microcontrolerul tău. - Conectează pinul CLK (ceas) la pinul digital 2 de pe microcontrolerul tău. - Conectează pinul DIO (date intrare/ieșire) la pinul digital 3 de pe microcontrolerul tău. Asigură-te că verifici conexiunile înainte de a alimenta sistemul. Dacă ai urmărit videoclipul de la (în videoclip la 02:30), nu ar trebui să ai probleme cu cablarea.

Exemple de Cod și Explicații

Fragmentul de cod următor inițializează modulul TM1638 și configurează afișajul. Identificatorul module reprezintă instanța TM1638 creată pentru interacțiunea cu afișajul.
TM1638QYF module(DIO, CLK, STB);
void setup() 
{
  module.setupDisplay(true, 7);
}
În acest fragment, afișajul este configurat să afișeze luminozitatea maximă (7). Următoarea parte a codului gestionează apăsările de butoane și schimbă afișajul în funcție de butonul apăsat.
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;
    // alte cazuri urmează
  }
}
Această funcție verifică ce buton este apăsat folosind getButtons() și actualizează afișajul în consecință. Variabila mode determină ce text este afișat în funcție de butonul apăsat. În final, bucla principală actualizează continuu afișajul.
void loop() 
{
  update(&module, &mode);
}
Această buclă apelează funcția update, asigurând că afișajul este reîmprospătat în funcție de interacțiunea utilizatorului. Pentru o înțelegere completă, consultă codul complet încărcat mai jos în articol.

Demonstrație / Ce să Te Aștepți

Odată ce ai totul cablat și codul încărcat, apăsarea butoanelor ar trebui să schimbe textul afișat în consecință. De exemplu, apăsarea butonului 1 va afișa "press 1", în timp ce apăsarea butonului 2 îl schimbă în "press 2". Dacă există probleme, verifică din nou cablarea și asigură-te că pinii corecți sunt folosiți așa cum s-a menționat. Vizionarea videoclipului de la (în videoclip la 05:00) te va ajuta, de asemenea, să confirmi că totul funcționează conform așteptărilor.

Marcaje Temporale din Videoclip

  • 00:00 - Introducere
  • 02:30 - Instrucțiuni de Cablare
  • 05:00 - Explicația Codului și Demonstrație

Imagini

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.
Limba: 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);
}

Lucruri de care ai putea avea nevoie

Resurse și referințe

Fișiere📁

Biblioteci Arduino (zip)

Manualul utilizatorului