Како да користите TM1638 4-цифрен дисплеј. Погледнете видео.
Модулот TM1638 е разновидна компонента која може да прикажува броеви и знаци додека е контролирана со копчиња. Во ова упатство, ќе научите како да го поставите и програмирате овој дисплеј за да прикажува различни вредности, вклучувајќи броеви и хексадецимални вредности. До крајот на овој водич, ќе имате целосно функционален дисплеј кој реагира на притискање на копчиња и го менува прикажаното врз основа на корисничкиот влез. Можете да видите демонстрација во видеото на (во видео на 00:00).
Објаснување на хардверот
Модулот 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, ќе го поврзете со вашиот микроконтролер на следниов начин:
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 - Објаснување на кодот и демонстрација
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);
}
Работи што можеби ќе ви требаат
-
AmazonTM1638 on Amazonamzn.to
-
AliExpressTM1638 keypad module on AliExpresss.click.aliexpress.com
Ресурси и референци
-
НадворешноTM1638 Library (from GitHub)github.com
Датотеки📁
Arduino библиотеки (zip)
Упатство за корисникот
-
TM1638 Manual
robojax-TM1638_manual.pdf5.07 MB