ホーム » Elec » TM1638 8digit-LED&KEY

TM1638 8digit-LED&KEY

268 ★★★☆☆

TM1638 8digit-LED&KEYs

TM1638を使用した8桁7セグLED表示+8プッシュボタンスキャナ
TM1638 datasheet
e-Bayだともっと安いかな eBay

7セグメントLEDの取り付け方向がちゃんと揃っていないのが安っぽい
ホビーで使う分にはいいけど製品などにはちょっと使えない感じですね
ボタンを複数同時に押してもちゃんとスキャンされるのは○です。
LEDandKEY.png
LEDansKEY-2

Arduino-Library:
github.com/rjbatista/tm1638-library

参考資料:
回路図も掲載されてて詳しい
7 SEGMENT ARRAY LED & KEY – IC TM1638
穴の位置の寸法図
TM1638 8 Keys 8-Bit Digital Tube Common Cathode LED Display Module for Arduino
日本語のサイト
薄口なブログ 『Arduino』LED&KEY:TM1638で遊んでみた2

上記のサイトに載っていたスケッチを一部変更して
ボタンの位置と2進数の位取りをあわせてみた。

byte key, key1, key2; // unsigned 8bit int for button inversion

#include <TM1638.h>
// define a module on data pin 8, clock pin 9 and strobe pin 10
TM1638 module(8, 9, 10);

void setup() {
//  Serial.begin(9600);  // PCと9600bpsで通信する。Teratermのデフォルト
}

void loop() {
  key = module.getButtons(); // 押されているボタンの値を取得:返り値byte

  key1 = key;                 // key1,Key2を使ってbit逆順にする (key1は破壊される)
  key2 = key1 & B0000001;     // key2のbit7..1はクリアして bit0にkey1のbit0をコピー 
  for(byte bitpos = 1; bitpos < 8; bitpos++) { // bit1からbit7まで繰り返せば byteが上下順序反転
    key2 <<= 1;               // コピー先を1bit左シフト key1からコピーされたbit0が空く 
    key1 >>= 1;               // コピー元を1bit右シフト key2にコピーするbitがbit0に来る
    key2 |= key1 & B0000001;  // key2のbit7..1は残したまま bit0にkey1のbit0をコピー
  }

//  Serial.println(key);
//  Serial.println(key2); 

  module.setLEDs(key); // 上部のLEDは元のボタン位置のまま表示

// 7segLEDにボタン入力を2進数に見立てて入力したkey2を10進数として表示
// 2番めの引数は小数点を光らせる位置 1で一番右側 128で一番左側 255で全部光る
// 3番めの引数は空いた桁に0を表示するかどうかのフラグ
  module.setDisplayToDecNumber(key2,1,false); // ボタンが2進数の位取りに一致して数値が表示される
}

投稿アーカイブ