検索コード

TM1638 4桁ディスプレイの使い方。動画をご覧ください

TM1638 4桁ディスプレイの使い方。動画をご覧ください

TM1638モジュールは、ボタンで操作できる数字や文字を表示する多用途のモジュールです。このチュートリアルでは、このディスプレイをセットアップしてプログラムし、数字や16進数の値などさまざまな値を表示する方法を学びます。ガイドの終わりには、ボタン操作に反応し、ユーザー入力に応じて表示内容を変更する完全に動作するディスプレイが手に入ります。デモはビデオの00:00でご覧いただけます。

TM1637 keypad display module-1

ハードウェア解説

TM1638モジュールは、情報の表示とボタンからの入力受け取り用に設計されています。8桁のLED表示と16個のボタンのマトリクスで構成されており、各ボタンは異なる機能をトリガーするようにプログラム可能で、使いやすいインターフェースを実現します。モジュールはマイコン(マイクロコントローラ)と3本のピンで接続されます:データ入出力ピン、クロックピン、ストローブピン。この構成によりマイコンとTM1638間で効率的な通信が可能になります。 TM1638 ICは表示とボタン入力を管理します。シリアル通信プロトコルを使用しており、最小限の配線で表示を制御しボタンの状態を読み取ることができます。各ボタンの押下はマイコンに信号を送り、どのボタンが押されたかに応じて特定の動作を実行できます。

データシートの詳細

製造者QYF
部品番号TM1638
ロジック/入出力電圧5 V
供給電圧5 V
出力電流(セグメントごと)20 mA
ピーク電流(合計)120 mA
入力論理閾値0.2 V(低) / 0.8 V(高)
パッケージデュアル・インライン・パッケージ(28ピン)
  • 最適な性能のために、供給電圧が5 Vで安定していることを確認してください。
  • ディスプレイが損傷しないよう、出力電流を制限してください。
  • LEDに過剰な電流が流れないように抵抗を使用してください。
  • 複数回のトリガーを避けるために、ソフトウェアでボタン入力をデバウンスしてください。
  • 通信のノイズを減らすため、配線は短くしてください。

配線手順

TM1638モジュールを配線するには、以下のようにマイクロコントローラに接続します:

Arduino wiring for TM1637 keypad display module
Arduino wiring for TM1637 keypad display module
- ラベル付きのピンを接続してくださいVCCTM1638上の端子をマイコンの5V電源に接続してください。 - 接続:GNDTM1638のピンをマイコンのグラウンドに接続します。 - 接続するSTBピン(しばしば「in」と表記される)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;
    // other cases follow
  }
}

この関数は、どのボタンが押されているかをチェックします。getButtons()そして表示をそれに応じて更新します。変数mode押されたボタンに応じて表示されるテキストを決定します。最後に、メインループは表示を継続的に更新します。

void loop() 
{
  update(&module, &mode);
}

このループは...を呼び出しますupdateユーザーの操作に応じて表示が更新されるようにする関数です。完全に理解するには、記事の下に読み込まれている完全なコードを参照してください。

デモンストレーション/何が期待できるか

すべて配線してコードをアップロードしたら、ボタンを押すと表示されるテキストがそれに応じて変わるはずです。例えば、ボタン1を押すと「press 1」と表示され、ボタン2を押すと「press 2」に変わります。問題がある場合は配線を再確認し、前述のとおり正しいピンが使用されているか確認してください。ビデオの05:00を確認すると、すべてが期待通りに動作していることを確かめるのに役立ちます。

動画のタイムスタンプ

  • 00:00- はじめに
  • 午前2: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++
/*
 * これはTM1638の8桁ディスプレイ用のArduinoコードです。16のマトリックスボタン付きです。
 * 
 * Ahmad NejrabiによってRobojax動画のために書かれました
 * 日付:2017年12月10日、カナダのオンタリオ州エイジャックスにて
 * このコードを共有するための許可は、この
 * メモがコードと一緒に保持されることを条件とします。
 * 免責事項:このコードは「現状のまま」で、教育目的のみに使用されます。
 */
#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; // 初期ボタンゼロ
}

void update(TM1638QYF* module, word* mode) {
  word buttons = module->getButtons();

 // ボタンを押しました - モードを変更する
  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: // 不明なボタン
      module->setDisplayToString("?????");
      break;
  }
}

void loop()
{
  update(&module, &mode);
}

必要かもしれないもの

リソースと参考文献

ファイル📁

Arduinoライブラリ(zip)

ユーザーマニュアル