フォト
2017年12月
          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            
無料ブログはココログ

« 4連8x8ドットLEDマトリックスを試してみる | トップページ | IchigoJamでMAX7219 8x8ドットLEDマトリックスを制御する »

2016年7月 5日 (火)

4連8x8ドットLEDマトリックスを試してみる 続編

前回の続きです。

4連8x8ドットLEDマトリックス2つを連結して32x16ドット表示にしてみました。
スケッチは前回からの少々の改造で実装出来ました。

01

1つめの出力を2つめの入力に接続しいます。増やしても5線のみので制御できます。

16x16ドットの日本語文を表示するため、自作フォントライブラリを利用しました。
フォントをmicroSDカードから読むため3.3V稼働させています。
(Arduino Unoも3.3V稼働出来るものを利用)

MAX7219としては3.3Vは動作保証外ですが問題なく動作しました。
3.3VでもOKなので、ARMやESP-WROOM-02でも利用出来ますね。

動作の様子


下段のモジュールのLEDが不良のため1点だけ点灯しませんが
動作としては期待以上に動いてくれました。

ただ、Arduino標準のshiftOut()関数によるシリアルデータの送り出しが遅いようです。
早いスクロール表示が出来ませんでした。そのため高速版のshiftOut()に置き換えました。

8個もLEDマトリックスを使用しているので消費電流が気になり、計ってみました。

Dscn5391

表示部(Arduino Unoを除く)は、最大35.1mAでした。まあ、こんなもんですかね。
バッテリー駆動も可能なレベルですかね。

このモジュールなかなか使いやすですね。用途に応じて、連結して利用出来ます。
更に、4連基板をカットして利用することも出来るみたいです。

基板の裏はこんな感じ

Dscn5380

今回作成したスケッチ(プログラム)  ダウンロード max7219_test3.zip (6.2K)

いくつかのファイルに別れますが、取りあえずメイン部はこんな感じです。

// max7219_test3.ino
// MAX7179ドライバーライブラリ動作チェック 32x16ドットバージョン
// 2016/07/05 たま吉さん

#include <string.h>
#include <sdfonts.h>

#include "MAX7219_matrix.h"
#include "libmatrix.h"

// MAX7219接続
#define MAX7219_DIN   2 // DIN
#define MAX7219_CLK   4 // CLK
#define MAX7219_LOAD  3 // LOAD

// SDカード接続
#define MOSI_SD   11    // SDカードのMOISへ接続
#define MISO_SD   12    // SDカードのMISOへ接続
#define CLK_SD    13    // SDカードのCLKへ接続
#define CS_SD     10    // SDカードモジュールCSへ接続

#define  SCREENS   8    // MAX7219カスケード接続数
#define  BRT       0    // LEDの輝度(0~7)
#define  SC_WIDTH  32   // マトリック表示横ドット数
#define  SC_HIGHT  16   // マトリック表示縦ドット数

uint8_t fbuf[SC_WIDTH*SC_HIGHT/8];  // 表示用バッファ

// 表示用バッファを表示
// (フレームバッファ32x16ドットをMAX7219用バッファ64x8にマッピング)
void update_screen() {
  uint8_t* ptr = MAX7219_getBuffer();
  for (uint8_t i=0; i < 8; i++) {
    memcpy(&ptr[i*8],&fbuf[i*4+32], 4);
    memcpy(&ptr[i*8+4],&fbuf[i*4], 4);
  }
  MAX7219_update();  
}

// デモ
void demo() {
  uint8_t font[MAXFONTLEN];
  SDfonts.open();            // フォントのオープン
  SDfonts.setFontSize(16);    // フォントサイズの設定

  char* str = "こんにちは埼玉県!熱いぞ!埼玉県!";

  MAX7219_clear();
  while(1) {
    str = SDfonts.getFontData(font, str);  // フォントデータの取得
    if (!str)
      break;
    scrollInFont(fbuf, font, 30);
  }
  SDfonts.close(); 
}

// 1文字分スクロール挿入表示
void scrollInFont(uint8_t*ptr, uint8_t *fnt, uint16_t dt) {
  for (int8_t t = 0; t < 16; t++) {
    scrollBitmap(ptr, SC_WIDTH, SC_HIGHT, B0001); // 左スクロール
    clearBitmapAt(ptr, SC_WIDTH, SC_HIGHT, SC_WIDTH-t-1, 0, SC_HIGHT, SC_HIGHT);
    setBitmapAt(ptr, SC_WIDTH, SC_HIGHT, SC_WIDTH-t-1, 0, fnt, SC_HIGHT, SC_HIGHT);
    update_screen();
    delay(dt);
  }  
}

void setup() {
  //Serial.begin(115200);
  SDfonts.init(10);     // フォント管理の初期化
  
  // マトリック表示ドライバの初期化
  MAX7219_init(MAX7219_DIN, MAX7219_CLK, MAX7219_LOAD, SCREENS, BRT);
}

void loop() {
  MAX7219_clear();
  demo();
  delay(1000);
}

別途自作ライブラリ sdfonts を利用しています。
  ・sdfonts : Arduino用漢字フォントライブラリ SDカード版
    https://github.com/Tamakichi/Arduino-KanjiFont-Library-SD

今まで、LEDドットマトリックスを色々やってきましたが、このモジュールの利用で
落ち着きそうです。

« 4連8x8ドットLEDマトリックスを試してみる | トップページ | IchigoJamでMAX7219 8x8ドットLEDマトリックスを制御する »

arduino」カテゴリの記事

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

コメント

最近四連LEDマトリックスを手に入れたのでこのページを参考にさせてもらいました。メインのシケッチを試しにIDE1.8.4でコンパイルしてみると、エラー続出でした。arduino.h が見つからないからスタートして、それを適当なところ(hardware/esp32)からコピーしたりしましたが、uint_8 が全部引っかかったり、不思議なエラー続出で諦めました。もし、よろしければご確認いただけませんか。
ちなみに、いろいろなボードやセンサー、表示器などを試しているので基本的な操作・導入は間違っていないと思うのですが。厚かましいお願いで申し訳ありません。

ヨシヅミさん

arduino.h を Arduino.h に修正して下さい。
Windows環境では問題ないですが、
LinuxやMacでは、大文字・小文字を識別するためこれではエラーになっちゃいますね。
ご迷惑おかけしました。

たま吉さん、早速のご回答を有難うございました。私もけさ目が覚めた瞬間にwindows版を試そうと思いつきました。最近、開発環境をほぼラズパイに移したのですが、まだスキルが伴っていませんね。今朝のアドバイスに従い、メインスケッチとライブラリ数カ所のarduino.h をArduino.h に変更しただけで全てのエラーがなくなりました。早速、昨夜準備したSDカードやLED を接続して、試したところ、一発でうまく表示できました。素晴らしいプログラムを公開していただいて有難うございました。これまでに8x8 LED単体のものを数個購入して、それを横に並べてアルファベットをスクロールするスケッチのサンプルを手に入れて、8266のWiFi と組み合わせたりしたのですが、今回手に入れた四連LED は、接続方向が以前のものと90度違っており、スクロールの向きが垂直になり、水平方向にスクロールするサンプルを探していて検索で見つけ、今回使わせていただきました。お陰様で、一気に漢字まで使える環境が整い、今後活用できそうで大変嬉しい思いです。重ねて有難うございました。

私もこのページを見て四連LEDマトリックスを買いました。
しかし、
#include  ←このまま使えるのですか(オレンジ色ではなく黒いままです)
#include "MAX7219_matrix.h" ←Matrix.hで代用できますか
#include "libmatrix.h" ←これは探せませんでした。
このような状況で前に進みません。(泣)
githubも英語でよくわからないので、もしもよろしければ素人にもできるやり方を教えていただければ助かります。

いわさん

> #include  ←このまま使えるのですか(オレンジ色ではなく黒いままです)
> #include "MAX7219_matrix.h" ←Matrix.hで代用できますか
> #include "libmatrix.h" ←これは探せませんでした。

ヘッダーファイル、
#include "MAX7219_matrix.h"
#include "libmatrix.h"
は、「今回作成したスケッチ(プログラム) ダウンロード max7219_test3.zip (6.2K)」のリンクから
ダウンロードし、解凍したフォルダmax7219_test3に入っています。

sdfontsライブラリは別途、githubから入手する必要があります。
github公開のダウンロード直リンクは下記の通りです。
https://github.com/Tamakichi/Arduino-KanjiFont-Library-SD/archive/master.zip

ダウンロードし圧縮圧縮ファイルを解凍し、その中の
\iblary\sdfonts フォルダをArduinoのliblaryにコピー、
\fontbin フォルダ内の FONT.BIN、FONTLCD.BIN SDカードの直下に入れて下さい。
(SDカードシールドまたはモジュールが必要です)

ありがとうございます!
やってみます。後ほど報告させていただきます。

コメントを書く

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

トラックバック

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

この記事へのトラックバック一覧です: 4連8x8ドットLEDマトリックスを試してみる 続編:

« 4連8x8ドットLEDマトリックスを試してみる | トップページ | IchigoJamでMAX7219 8x8ドットLEDマトリックスを制御する »