Soek Kode

Hoe om 'n TM1638 4-syfer-skerm te gebruik. Kyk video

Hoe om 'n TM1638 4-syfer-skerm te gebruik. Kyk video

Die TM1638-module is 'n veelsydige komponent wat getalle en karakters kan vertoon terwyl dit deur knoppies beheer word. In hierdie tutoriaal sal jy leer hoe om hierdie vertoning op te stel en te programmeer om verskeie waardes te wys, insluitend getalle en heksadesimale waardes. Teen die einde van hierdie gids sal jy 'n ten volle funksionele vertoning hê wat op knoppiedrukke reageer en verander wat gewys word op grond van gebruikersinvoer. Jy kan 'n demonstrasie in die video sien (in video by 00:00).
TM1637 keypad display module-1

Hardeware Verduidelik

Die TM1638-module is ontwerp vir die vertoon van inligting en die ontvang van invoer van knoppies. Dit bestaan uit 'n 8-syfer LED-vertoning en 'n matriks van 16 knoppies. Elke knoppie kan geprogrammeer word om verskillende funksies te aktiveer, wat 'n gebruikersvriendelike koppelvlak moontlik maak. Die module verbind aan 'n mikrobeheerder via drie penne: 'n data-invoer/uitset-pen, 'n klokpen en 'n strobep-pen. Hierdie opstelling maak doeltreffende kommunikasie tussen die mikrobeheerder en die TM1638 moontlik. Die TM1638-IC bestuur die vertoning en knoppie-invoere. Dit gebruik 'n serieële kommunikasieprotokol wat dit toelaat om die vertoning te beheer en knoppietoestande te lees met minimale bedrading. Elke knoppiedruk stuur 'n sein na die mikrobeheerder, wat dan spesifieke aksies kan uitvoer op grond van watter knoppie gedruk is.

Datablad Besonderhede

VervaardigerQYF
DeelnommerTM1638
Logika/IO-spanning5 V
Toevoerspanning5 V
Uitsetstroom (per segment)20 mA
Piekstroom (totaal)120 mA
Invoerlogika-drempels0.2 V (laag) / 0.8 V (hoog)
PakketDIP-28
  • Verseker dat die toevoerspanning stabiel is op 5 V vir optimale werkverrigting.
  • Beperk die uitsetstroom om skade aan die vertoning te vermy.
  • Gebruik resistors om oormatige stroom deur die LED's te vermy.
  • Ontklits knoppie-invoere in sagteware om veelvuldige aktiverings te vermy.
  • Hou bedrading kort om geraas in kommunikasie te verminder.

Bedradingsinstruksies

Om die TM1638-module te bedraad, verbind jy dit aan jou mikrobeheerder soos volg:
Arduino wiring for TM1637 keypad display module
Arduino wiring for TM1637 keypad display module
- Verbind die pen gemerk VCC op die TM1638 aan die 5V-kragtoevoer van jou mikrobeheerder. - Verbind die GND-pen op die TM1638 aan die grond van jou mikrobeheerder. - Verbind die STB-pen (dikwels gemerk as STROBE) aan digitale pen 5 op jou mikrobeheerder. - Verbind die CLK-pen (klok) aan digitale pen 2 op jou mikrobeheerder. - Verbind die DIO-pen (data-invoer/uitset) aan digitale pen 3 op jou mikrobeheerder. Maak seker dat jy jou verbindings nagaan voordat jy die stelsel aanskakel. As jy die video by (in video by 02:30) gevolg het, behoort jy geen probleme met die bedrading te hê nie.

Kode Voorbeelde & Deurloop

Die volgende kodestuk initialiseer die TM1638-module en stel die vertoning op. Die identifiseerder module verteenwoordig die TM1638-instansie wat geskep is vir interaksie met die vertoning.
TM1638QYF module(DIO, CLK, STB);
void setup() 
{
  module.setupDisplay(true, 7);
}
In hierdie stuk word die vertoning opgestel om die maksimum helderheid (7) te wys. Die volgende deel van die kode bestuur knoppiedrukke en verander die vertoning op grond van watter knoppie gedruk is.
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;
    // ander gevalle volg
  }
}
Hierdie funksie kontroleer watter knoppie gedruk is met getButtons() en werk die vertoning dienooreenkomstig by. Die veranderlike mode bepaal watter teks vertoon word op grond van die knoppie wat gedruk is. Laastens werk die hoof-lus die vertoning voortdurend by.
void loop() 
{
  update(&module, &mode);
}
Hierdie lus roep die update-funksie aan, wat verseker dat die vertoning verfris word op grond van gebruikersinteraksie. Vir 'n volledige begrip, verwys na die volledige kode wat onder die artikel gelaai is.

Demonstrasie / Wat om te Verwags

Sodra jy alles bedraad het en die kode opgelaai is, behoort die druk van die knoppies die vertoningstekste dienooreenkomstig te verander. Byvoorbeeld, die druk van knoppie 1 sal "press 1" vertoon, terwyl die druk van knoppie 2 dit na "press 2" verander. As daar enige probleme is, kontroleer jou bedrading weer en verseker dat die korrekte penne gebruik word soos genoem. Die kyk van die video by (in video by 05:00) sal ook help om te bevestig dat alles na verwagting funksioneer.

Video Tydstempels

  • 00:00 - Inleiding
  • 02:30 - Bedradingsinstruksies
  • 05:00 - Kode Verduideliking en Demonstrasie

Beelde

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

Goedere wat jy dalk nodig het

Hulpbronne en verwysings

Lêers📁

Arduino Biblioteke (zip)

Gebruikershandleiding