268 ★★★☆☆
TM1638 8digit-LED&KEYs
TM1638を使用した8桁7セグLED表示+8プッシュボタンスキャナ
TM1638 datasheet
e-Bayだともっと安いかな eBay
7セグメントLEDの取り付け方向がちゃんと揃っていないのが安っぽい
ホビーで使う分にはいいけど製品などにはちょっと使えない感じですね
ボタンを複数同時に押してもちゃんとスキャンされるのは○です。
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進数の位取りに一致して数値が表示される }