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);
をコメントアウト
_buffer = (uint8_t *) calloc(_height, 1);
をコメントアウト
・代わりに、Sprite.cppの
uint8_t *_buffer; をuint8_t _buffer[8]; に変更
これで、取りあえず連続動作出来るようになりました。
uint8_t *_buffer; をuint8_t _buffer[8]; に変更
これで、取りあえず連続動作出来るようになりました。
RTCモジュール(温度センサー付き)を取り付けて、現在の日時、時刻、気温も
表示出来るようになりました。
RTCモジュールはDS1307が搭載されていて、バッテリーバックアップがある製品を
使ったのですが、確かに電源切るとその時の時刻は記憶してくれるのですが、
その間、時を刻まないので意味無しです。電源入れる都度時刻設定が必要です。
これは使えんなぁ。
表示出来るようになりました。
RTCモジュールはDS1307が搭載されていて、バッテリーバックアップがある製品を
使ったのですが、確かに電源切るとその時の時刻は記憶してくれるのですが、
その間、時を刻まないので意味無しです。電源入れる都度時刻設定が必要です。
これは使えんなぁ。
« Arduinoで美咲フォントを使った8x8ドットマトリクスLED | トップページ | Arduino IDEでATtiny13でのLED点滅アプリの作成 »
「arduino」カテゴリの記事
- Arduino IDE+Arduino STM32環境で指定と異なるgccが使われてしまう(2025.01.23)
- Zorin OSでArduino Uno互換機(CH340)が認識しない(2025.01.19)
- Arduino IDE 2.3.4でArduino STM32を利用する(2025.01.12)
- Arduino用 SKK日本語変換ライブラリの開発 その1(2024.12.28)
- NeoPixel(WS2812B)の制御 その5(2024.09.15)
「AVR」カテゴリの記事
- NeoPixel(WS2812B)の制御 その5(2024.09.15)
- Arduino用SJIS漢字フォントライブラリ SDカード版を作成しました(2018.10.30)
- ATtiny13AでI2C接続キャラクタLCDを利用する(4)(2018.04.16)
- ATtiny13Aで赤外線リモコン受信センサーを使う(2)(2018.04.15)
- ATtiny13AでHC-SR04を使った距離計測(2018.04.14)
「表示器制御関連」カテゴリの記事
- NeoPixel(WS2812B)の制御 その5(2024.09.15)
- Arduino用 美咲フォントライブラリを更新しました(2024.03.21)
- Raspberry Pi Pico(MicroPython)でLEDドットマトリックスを使ってみる(2024.03.14)
- Raspberry Pi Pico MicroPython用のマルチフォントライブラリ(2023.02.09)
- MicroPython(Raspberry Pi pico)で8x8ドットNeoPixcel文字表示(2023.02.08)
« Arduinoで美咲フォントを使った8x8ドットマトリクスLED | トップページ | Arduino IDEでATtiny13でのLED点滅アプリの作成 »
コメント