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

« Alliexpressで注文した商品が来ないので全額払い戻し | トップページ | aitendo 16x16LEDマトリックスの制御 (5) »

2016年6月16日 (木)

aitendo 16x16LEDマトリックスの制御 (4)

前回からの続きです。

取りあえず、SDカードにWindows ビットマップファイル(モノクロ)を入れてその画像を
表示出来るようにしました。
前回からビットマップファイルを操作するクラスを作成・追加しました。

次のような画像をペイントツールで作成して表示してみました。

01

動作の様子


この方法だと、画像ファイルを差し換えるだけで任意のメッセージを表示出来ますね。

スケッチ
  ダウンロード sample4.zip (7.9K)

※ライブラリは含まれていません。別途ダウンロードして下さい。

   ・MsTimer2
     http://playground.arduino.cc/Main/MsTimer2

  ・漢字フォントライブラリSDカード版
    https://github.com/Tamakichi/Arduino-KanjiFont-Library-SD

ビットマップファイルの表示部は次のような感じです。

void test_bitmap() {
  uint8_t tmpbuf[32];        // 表示パターンバッファデータ
  uint8_t rc;
  uint8_t w,h;

  memset(tmpbuf,0,32);
  sdbitmap bitmap;
  bitmap.setFilename("IMG2.BMP");

  // ビットマップデータオープン
  rc = bitmap.open();
  w  = bitmap.getWidth();
  h  = bitmap.getHeight();
  
  Serial.print(F("bitmap open rc="));
  Serial.println(rc);

  for (uint8_t i=0; i<w; i+=16) {  
    // データの取得
    bitmap.getBitmap(buf, i, 0, 16, 16, 1);

    // 1文字分スクロール表示
    for (int8_t t = 0; t < 16; t++) {
      scrollBitmap(tmpbuf, 16, 16, B0001);
      clearBitmapAt(tmpbuf, 16, 16, 15-t, 0, 16, h);
      setBitmapAt(tmpbuf,   16 ,16, 15-t ,0, buf, 16, h);
      memcpy(fbuf,tmpbuf,32);
      delay(30);
    }
  }
  delay(2000);
  bitmap.close();
}

巨大なビットマップファイルも扱えるよう、ビットマップファイルから任意の位置の
画像データを取り出して表示出来るよう作成しました(まだまだ作成中)。
bitmap.getBitmap(buf, i, 0, 16, 16, 1)が16x16のサイズの画像を取り出しています。

現状、取り出す座標指定が横座標が8の倍数である必要がありますが、これも
完全に任意の座標を指定できるようにしたいと考えています。

アナログジョイスティック操作で巨大画像を上下左右スクロール表示するってな
感じのものを実装し、ビットマップファイル操作ライブラリを完成させたいと思います。
その5に続きます。

« Alliexpressで注文した商品が来ないので全額払い戻し | トップページ | aitendo 16x16LEDマトリックスの制御 (5) »

arduino」カテゴリの記事

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

コメント

コメントを書く

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

トラックバック


この記事へのトラックバック一覧です: aitendo 16x16LEDマトリックスの制御 (4):

« Alliexpressで注文した商品が来ないので全額払い戻し | トップページ | aitendo 16x16LEDマトリックスの制御 (5) »