Пребарување код

Како да користите TM1638 4-цифрен дисплеј. Погледнете видео.

Како да користите TM1638 4-цифрен дисплеј. Погледнете видео.

Модулот TM1638 е разновидна компонента која може да прикажува броеви и знаци додека е контролирана со копчиња. Во ова упатство, ќе научите како да го поставите и програмирате овој дисплеј за да прикажува различни вредности, вклучувајќи броеви и хексадецимални вредности. До крајот на овој водич, ќе имате целосно функционален дисплеј кој реагира на притискање на копчиња и го менува прикажаното врз основа на корисничкиот влез. Можете да видите демонстрација во видеото на (во видео на 00:00).
TM1637 keypad display module-1

Објаснување на хардверот

Модулот TM1638 е дизајниран за прикажување информации и примање влез од копчиња. Се состои од LED дисплеј со 8 цифри и матрица од 16 копчиња. Секое копче може да се програмира да активира различни функции, овозможувајќи кориснички интерфејс. Модулот се поврзува со микроконтролер преку три пина: пин за влез/излез на податоци, пин за часовник и пин за стробирање. Оваа поставка овозможува ефикасна комуникација помеѓу микроконтролерот и TM1638. Интегрираното коло TM1638 управува со дисплејот и влезовите од копчињата. Користи сериски комуникациски протокол кој му овозможува да го контролира дисплејот и да ги чита состојбите на копчињата со минимално жицирање. Секое притискање на копче испраќа сигнал до микроконтролерот, кој потоа може да изврши специфични дејства врз основа на тоа кое копче е притиснато.

Детали од техничката документација

ПроизводителQYF
Број на делTM1638
Логички/IO напон5 V
Напон на напојување5 V
Излезна струја (по сегмент)20 mA
Врвна струја (вкупно)120 mA
Прагови на влезна логика0,2 V (ниско) / 0,8 V (високо)
ПакетDIP-28
  • Осигурете се дека напонот на напојување е стабилен на 5 V за оптимални перформанси.
  • Ограничете ја излезната струја за да избегнете оштетување на дисплејот.
  • Користете отпорници за да избегнете прекумерна струја низ LED диодите.
  • Отстранете го отскокнувањето на копчињата во софтверот за да избегнете повеќекратни активации.
  • Чувајте ги жиците кратки за да го намалите шумот во комуникацијата.

Инструкции за жицирање

За да го жицирате модулот TM1638, ќе го поврзете со вашиот микроконтролер на следниов начин:
Arduino wiring for TM1637 keypad display module
Arduino wiring for TM1637 keypad display module
- Поврзете го пинот означен како VCC на TM1638 со напојувањето од 5V на вашиот микроконтролер. - Поврзете го пинот GND на TM1638 со заземјувањето на вашиот микроконтролер. - Поврзете го пинот STB (често означен како STROBE) со дигиталниот пин 5 на вашиот микроконтролер. - Поврзете го пинот CLK (часовник) со дигиталниот пин 2 на вашиот микроконтролер. - Поврзете го пинот DIO (влез/излез на податоци) со дигиталниот пин 3 на вашиот микроконтролер. Проверете ги вашите врски пред да го вклучите системот. Ако сте го следеле видеото на (во видео на 02:30), не би требало да имате проблеми со жицирањето.

Примери на код и објаснување

Следниот фрагмент од код го иницијализира модулот TM1638 и го поставува дисплејот. Идентификаторот module ја претставува инстанцата на TM1638 создадена за интеракција со дисплејот.
TM1638QYF module(DIO, CLK, STB);
void setup() 
{
  module.setupDisplay(true, 7);
}
Во овој фрагмент, дисплејот е поставен да ја прикажува максималната осветленост (7). Следниот дел од кодот управува со притискањата на копчињата и го менува дисплејот врз основа на тоа кое копче е притиснато.
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;
    // други случаи следат
  }
}
Оваа функција проверува кое копче е притиснато користејќи getButtons() и соодветно го ажурира дисплејот. Променливата mode одредува кој текст се прикажува врз основа на притиснатото копче. Конечно, главната јамка континуирано го ажурира дисплејот.
void loop() 
{
  update(&module, &mode);
}
Оваа јамка ја повикува функцијата update, осигурувајќи дека дисплејот се освежува врз основа на корисничката интеракција. За целосно разбирање, погледнете го целиот код вчитан под статијата.

Демонстрација / Што да очекувате

Откако ќе имате сè жицирано и кодот поставен, притискањето на копчињата треба да го менува текстот на дисплејот соодветно. На пример, притискањето на копче 1 ќе прикаже „press 1", додека притискањето на копче 2 го менува на „press 2". Ако има какви било проблеми, проверете го жицирањето и осигурете се дека се користат правилните пинови како што е споменато. Гледањето на видеото на (во видео на 05:00) исто така ќе помогне да потврдите дека сè функционира како што се очекува.

Временски ознаки на видеото

  • 00:00 - Вовед
  • 02:30 - Инструкции за жицирање
  • 05:00 - Објаснување на кодот и демонстрација

Слики

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.
Јазик: 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);
}

Работи што можеби ќе ви требаат

Ресурси и референци

Датотеки📁

Arduino библиотеки (zip)

Упатство за корисникот