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

« Arduinoで美咲フォントを使った8x8ドットマトリクスLED | トップページ | Arduino IDEでATtiny13でのLED点滅アプリの作成 »

2014年1月24日 (金)

Arduinoで美咲フォントを使った8x8ドットマトリクスLED(2)

前回の続きです。連続表示していると途中で表示が消える問題の原因が分かりました。
利用しているメジャーなSpriteライブラリが原因でした。

void Sprite::init(uint8_t width, uint8_t height)関数でcallocで動的メモリの獲得を行って
いるのですが、オブジェクトのインスタンス破棄後も解放されない状態です。
私は1文字表示するたびにSpriteクラスのインスタンスの生成と破棄を行っていたので
ヒープ領域の枯渇が発生したようです。

ライブラリを修正して対応できました。デストラクタを定義してfrre()しても何故か正常動作
しないため、_bufferを静的に8バイト固定で取得するようにしました。

修正:
  ・Sprite.cppのvoid Sprite::init(uint8_t width, uint8_t height) の
  _buffer = (uint8_t *) calloc(_height, 1);
   をコメントアウト
 ・代わりに、Sprite.cppの
      uint8_t *_buffer; をuint8_t _buffer[8]; に変更

これで、取りあえず連続動作出来るようになりました。
 
RTCモジュール(温度センサー付き)を取り付けて、現在の日時、時刻、気温も
表示出来るようになりました。

RTCモジュールはDS1307が搭載されていて、バッテリーバックアップがある製品を
使ったのですが、確かに電源切るとその時の時刻は記憶してくれるのですが、
その間、時を刻まないので意味無しです。電源入れる都度時刻設定が必要です。
これは使えんなぁ。


« Arduinoで美咲フォントを使った8x8ドットマトリクスLED | トップページ | Arduino IDEでATtiny13でのLED点滅アプリの作成 »

arduino」カテゴリの記事

AVR」カテゴリの記事

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

コメント

コメントを書く

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

トラックバック

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

この記事へのトラックバック一覧です: Arduinoで美咲フォントを使った8x8ドットマトリクスLED(2):

« Arduinoで美咲フォントを使った8x8ドットマトリクスLED | トップページ | Arduino IDEでATtiny13でのLED点滅アプリの作成 »