2
2

More than 5 years have passed since last update.

続・m5stackでストップウォッチを作る

Posted at

続・m5stackでストップウォッチを作る

前回記事の続きになります。

m5stackでストップウォッチを作る
https://qiita.com/zasshyu6/items/c0bd9bb592192b3c80e7

前回の振り返り

  • 5usec周期でタイマをカウント
  • マルチスレッドで動かすと色々と不具合が発生
    • 4secぐらいでリセットがかかる(vTaskDelay()をかけると止まらない)
    • ボタンを押してもタイマが止まらない時がある

前回記事を読んでいただいて以下のご指摘を受けました

  • 'core1'で二つタスクが回ってるのでWDTで引っかかっているのでは?
    • esp_task_wdt_feed()関数を時間切れ前までに呼ぶといい

試すこと

  • マルチスレッドで止まらないように作る
  • ボタンで止まるようにプログラムを変更
  • ついでに画面ちらつきが気になるので直してみる

全部修正したmain.cppをgithubに上げました。
https://github.com/zasshyu66/m5stack_Study/tree/master/StopWatch3

マルチスレッドで止まらないように作る

esp_task_wdt_feed()関数を調べてみたらどうやらESP-IDFの関数だった模様
arduinoからは呼び出せない上に、WDTにアクセスする方法が見当たらなかったので別の方法を考えてみます

  1. Core0Thread1,Core1loopを動かす
    • 4secくらいでやはり止まる。
  2. vTaskDelay(1)Thread1に入れる
    • 前回と同様にしっかり動く。loopは別処理で監視周期呼び出しがあるのでこれで二つのtaskが監視周期をもつことになる
    • ちなみにvTaskDelay(0)だとビルドは通るが4secくらいでリセットがかかります

loopの監視周期を外そうとか、CONFIG_FREERTOS_HZを変更するとか、監視やクロック関連をいじるのも視野に入れましたが、ファイル管理の面で手間がかかるため却下しました。
ESP-IDFを使う理由ができたかもしれない・・・

ボタンで止まるようにプログラムを変更

これはチャタリング防止の部分のバグでした
マルチスレッド関係なかった
チャタリング防止を修正で完了

画面ちらつきが気になるので直してみる

画面のちらつきが気になる・・・ので直したい
以下の記事が出てきました。

M5Stackでいろいろやってみた。
https://togetter.com/li/1214295?page=3

TFT_eSPI librarySpriteを使えばいいらしいが・・・どうやって使えばいいんだ・・・
色々調べてみたらplatformioがサンプルを出してくれていた

TFT_eSPI by Bodmer
https://platformio.org/lib/show/1559/TFT_eSPI/examples?file=Print_Smooth_Font.ino

TFT_eSPI libraryが基本的に公式のLCD APIとほぼ同じ使い方ができる
Spriteとは・・・
大きいのは文字の設定が文字の色と背景色を選択できること
LCD APIの場合はほんとに上書きだけなので文字が重なるのだが、TFT_eSPI libraryだと背景色と文字の描写なのでそのまま上書きできる
だから文字位置を覚えておけばそこから改行して書き直せばよいだけになるので考え方がだいぶ楽になります

次にやること

次にパルスカウンターを作ります。
エンコーダを買いたかったけど千石電商に売ってたのは一回転で24plsのものだけだった・・・
でも買えたのでそれを使ってパルスカウントと回転速度を表示するプログラムを作ります

・・・余談ですが今回の調べものや記事を書いている途中でマウスのホイールが壊れました
まさかホイールの回転を見るスイッチにつながってる軸が折れるとは思わなかった

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2