アップロードチャンネル







[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

Adafruit 16x8 LED Matrix Driver Backpack - HT16K33 Breakout
価格:907円(税込、送料別) (2021/3/17時点)



●LEDドライバー HT16K33の機能

●HT16K33

LEDマトリクスドライバー I2C接続で制御

このドライバーは、検索しても 詳しい情報があまりなく
良く掲載されているのは、ライブラリーのダウンロードが必要なスケッチ例
だけであり 専用ライブラリー関数コードが必要な記述しかない。
従って良く掲載されたサイトのソースコードをコピーしてもコンパイルエラーで動作しない。
それにライブラリー関数の詳細も不明なので ここでは、一切ライブラリー関数を使用せず
標準関数のみで制御する。

制御は、理屈が分かれば比較的簡単なのだが 理屈が分からないと
永遠に機能しないし表示もしないだろう。

ここに来た読者もきっと そういう方々であろう。

ここでは、完全に機能するので安心してほしい。

 
拝啓益々の事と存じます 掲載広告をご利用していただくと本サイトの収入になる事があります。



HT16K33

●HT16K33の電源





4.5〜5V
I2Cプルアップ抵抗 実装済み
アドレス設定が可能
13×3のマトリクスキースイッチとして利用可能
16段階の明るさ調整が可能

ROW 出力電流 定格20 最大 40 mA
COM 吸い込み電流 定格 200 最大 400 mA

PIN配置 1 GND    28 VDD 5V

     27 SDA 26 SCL
     
     2(C0)〜9(C7) COM カソード ‐
     10(A15)〜25(A0) ROW アノード +
     
     
     
     
     



[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

Grove ドライバ付き赤色LEDマトリクス
価格:1037円(税込、送料別) (2021/3/17時点)



●HT16K33の制御方法




制御は、コマンドとレジスタで制御する。

レジスタにデータを入力して コマンドで動作させる仕組みである。
I2C Addrese 0x70 ジャンパ無接続 

Command コマンド

Display data Addrese Pointer  ディスプレイデータアドレスポインター 0x00 I2Cアドレス選択時

System setup システムセットアップ 
0x20 system oscillator turn off システムオシレーターoff
0x21  system oscillator turn on  システムオシレーターon

Dispray setup ディスプレイセットアップ
0x80 Dispray off ディスプレイオフ
0x81 Dispray on  ディスプレイオン

Test mode テストモード
0xD9




HT16K33

●HT16K33の8x8マトリクスコード




#include <Wire.h>

#define adr 0x70


void setup() {
  Serial.begin(115200);
  int x=0;
  

   Wire.requestFrom(0x40,1);
    x = Wire.read();
    

    
   Serial.print("アドレス=");
    Serial.print(x, HEX);
    set();
}
 
void loop() {
  int a[8]{0x00,0x02,0x04,0x06,0x08,0x0A,0x0C,0x0E};
  int b[255]={0};
  Wire.begin();

 data(0x21,0);
 data(0x81,0);

   for(int i=0; i<8; i++){
    for(int j=0; j<255; j++){delay(10);
      data(a[i],j);delay(10); data(a[i],0);delay(1);
      }
    }

data(0x80,0);
 
}



void data(int command, int data) {
  Wire.beginTransmission(adr);
  Wire.write(command);
  Wire.write(data);
  Wire.endTransmission();
  delay(3);
}
void set() {
  data(0x21,0);
  data(0x81,0);
  data(0x00, 0xFF);
  data(0x02, 0xFF);
  data(0x04, 0xFF);
  data(0x06, 0xFF);
  data(0x08, 0xFF);
  data(0x0A, 0xFF);
  data(0x0C, 0xFF);
  data(0x0E, 0xFF);  
  
}



※ワンポイント 表示LEDを点灯させたまま軌跡移動するなら
 for(int i=0; i<8; i++){
    for(int j=0; j<255; j++){delay(10);
      data(a[i],j);delay(10);// data(a[i],0);delay(1);
      }
    }
    
    void set は、動作の確認表示テスト用である。








Powered by FC2ホームページ


inserted by FC2 system