フォト
2017年7月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
無料ブログはココログ

« Android-x86 4.4-r2(VirtualBox)の画面解像度の変更 | トップページ | HT16K33を2つ使ってLEDドットマトリックスを制御してみた »

2015年1月14日 (水)

HT16K33を使った8x16 LEDドットマトリックスの表示

Aliexpressで購入して放置していた LEDドライバ HT16K33 を使ってみました。
8x8 LEDドットマトリックス を2個(8x16) 直接制御できます。
arduinoからはI2Cバスで接続して制御できます。

Dscn3515

01

ブレレッドボードで使うには1.27mm 28pin SOP がちょっと面倒です。
今回は2.54mmに変換する基板を利用しました。

Dscn3513

配線が多いですが、部品は少なくて意外と楽です。

取りあえずデーターシートを読んで、簡単なサンプルプログラムを作成しました。
I2Cでのやり取りのコマンドも簡単でシンプルで使いやすいです。

ライブラリも公開されているので試してみました(トップの写真)。
 ライブラリ: adafruit/Adafruit-LED-Backpack-Library

ただし、利用しているLEDドットマトリックスの都合上、
そのままでは利用出来ませんでした。

データシード上のROWとCOLは次のような配線を要求しています。

02

これに従って私の持つ8x8 LED ドットマトリックスを使うには、次のように配置します。
(黒い●は接続ピンヘッダです)

03

しかしブレッドボード上に載せる都合上、こんな感じにしないとダメです。

       04
そこで、表示用パターンを出力する前に、パターンデータを変換するよう、
Adafruit_LEDBackpack.cpp のwriteDisplay()を修正しました(下記)。

void Adafruit_LEDBackpack::writeDisplay(void) {
 
  // <<-- 追加 ここから
  uint8_t raw[16];
  uint8_t d;
  uint16_t msk;
  uint8_t t = 0;

  msk = 0x8000;
  for (uint8_t x=0; x <16;x++) {
   d = 0;
    for (uint8_t y=0; y < 8; y++) {
      if (msk & displaybuffer[y]) {
        d |= _BV(y);
      }
    }
    raw[t] = d;
    msk >>=1;
    t++;
  }
  // 追加 ここまで -->>
	
 Wire.beginTransmission(i2c_addr);
  Wire.write((uint8_t)0x00); // start at address $00

  for (uint8_t i=0; i<8; i++) {

/* 2行を差し換え
    Wire.write(displaybuffer[i] & 0xFF);    
    Wire.write(displaybuffer[i] >> 8);    
*/
    Wire.write(raw[i+8]);    
    Wire.write(raw[i]);    
  }
	
  Wire.endTransmission();  
}

adafruit/Adafruit-LED-Backpack-Library はちょっと多機能でデカすぎなので、
自作のライブラリを制作しています。

製作中の16x16ドットマトリックスの実装、このIC使った方が楽そうです。
使うICは2個だけで済みますし..

« Android-x86 4.4-r2(VirtualBox)の画面解像度の変更 | トップページ | HT16K33を2つ使ってLEDドットマトリックスを制御してみた »

arduino」カテゴリの記事

AVR」カテゴリの記事

表示器制御関連」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/571408/60974874

この記事へのトラックバック一覧です: HT16K33を使った8x16 LEDドットマトリックスの表示:

« Android-x86 4.4-r2(VirtualBox)の画面解像度の変更 | トップページ | HT16K33を2つ使ってLEDドットマトリックスを制御してみた »