品切れになる前に!防災用品を備えよう!
\ 防災用品の準備はできていますか? /
この記事内には、プロモーションが含まれます。
こんにちは、せでぃあ(@cediablog)です。
ArduinoプログラミングLESSON12では「4ケタ7セグメントディスプレイの点灯制御」を紹介しました。
可変抵抗器のボリューム状態に応じたアナログ入力値(0~1023)を、4ケタ7セグメントディスプレイに表示させるプログラミングでしたが、Scrattino3を使ったスクッラッチプログラミングに課題が見つかりました。
4ケタディスプレイ表示のちらつきが目立つ
この問題の解決方法を探るべく「原因の想定」「対策方法の検討」を実施した結果、ついに解決法を見つけました!
ビジュアルプログラミングでも表示をちらつかせない方法を紹介します
負けず嫌いのエンジニア魂に火が付いたということですね!
今回はLESSON12のちらつき対策に特化して解説しています
LESSON12の内容については、こちらの記事を参照してください。
せでぃあはこんな人物です
✅プライム企業に勤める電気・機械設計エンジニア
✅親子の絆を深めるため、夏休みに子供と一緒に電子工作を製作
✅Arduinoプログラミングを用いて作ったプログラミング電子工作「信GO機」が市の発明くふう展で「優秀賞」を受賞
✅本ブログにてArduinoスクラッチプログラミングLESSON記事投稿中
✅YouTubeチャンネル「せでぃあブログちゃんねる」運営中
遊びが勉強に変わる前に!小学生にこそおすすめしたいのがロボットプログラミング教室です!
まず結論から言います。
mBlockというビジュアルプログラミングツールを使ってプログラミングすることで、ちらつき問題の対策が可能です。
原因の考察から、mBlockを使ったプログラミング方法まで解説していきます。
4ケタ7セグメントLEDディスプレイとは、7セグメントLEDディスプレイが4桁連結した電子パーツです。
今回使用する機器は、7つのLEDとドット表示のついた8つのLEDを搭載したものが4つ並んだものになります。
4桁7セグメントディスプレイの基本情報については、前回のLESSON12記事を参照してください。
Scrattino3でプログラミングするとちらつきが目立つ原因は、プログラム演算処理速度が遅いことだと考えました。
プログラム演算処理が遅いと考えた根拠として、以下の2要素が大きく寄与していると考えます。
4桁セグメントディスプレイですが、4桁同時に点灯させるわけではなく1桁ずつ順番に点灯させています。
高速で点灯切り替えすることで、残像効果により4桁同時に点灯しているように見えるのです。
この仕組みであることから、1ケタずつの点灯切り替えが遅いことで十分な残像効果が得られない=ちらつきが目立つことにつながっていると考えました。
前回のLESSON12で分かっている事実として「Arduino IDEプログラムでは4ケタ同時に点灯しているように見える」ということです。
では、Arduino IDEとScrattino3では何がちがうのか?考えた結果、プログラム演算処理方法が異なることが浮かびあがりました。
Arduino IDEプログラムは、Arduino本体にプログラムコードを書き込みArduino本体側で演算します。
一方でScrattino3による演算方法はPC側で演算処理して、USBケーブル経由でArduinoを通信制御する方法です。
このプログラム演算方法の違いが、動作速度の上限限界値を制約しているのだと考察しました。
Arduino本体で演算処理させられるビジュアルプログラミングツールを使う
上記ミッション達成=4ケタディスプレイ表示ちらつき解決となると考えました。
そのようなツールを探したところ、mBLockというビジュアルプログラミングツールを使うことで実現可能であることがわかりました。
mBlock は、Makeblock社が開発したスクラッチベースのビジュアルプログラミングツールです。
ブラウザ上または、PC(パソコン)にインストールをしてプログラミングを行う無償ソフトウェアになります。
mBlockを使えば文字列プログラミングを使うことなく、Arduino(アルドゥイーノ)を動作をさせることができます。
mBlockの機能とインストール方法について知りたい方は、こちらの記事を参照してください。
Arduino IDEプログラミングで1ケタずつの表示切替ウェイトタイマーを変更して、目視で点灯ちらつきが気にならないときの速度を確認しました。
その結果、0.005秒(=5msec)にて4ケタ同時に点灯しているように見えるようになりました。
mBlockはビジュアルプログラムをプログラムコードに変換してArduino本体に転送し、本体側で演算させることが可能です。
これが同じビジュアルプログラミングツールでありながら、Scrattino3ができなかった高速演算動作をmBlockが実現できる理由になります。
アップロードモードをONにすることで、実現が可能となります。
アップロードモードとは、Arduinoにプログラミングコードを転送し本体側で演算処理させる方式です。
アップロードモードON-OFF機能の詳細については、こちらの記事を参照ください。
プログラミングするために、パソコンが必要です。
電子部品等の必要な機器については、LESSON12記事を参照してください。
パソコンにビジュアルプログラミングするためのソフトウェア「mBlock」のインストールを行います。
以下の記事にて詳しく説明しています。
電子部品とジャンパーワイヤの差し込みだけで配線が可能です。
スクラッチベースのビジュアルプログラミングツールmBlockを使ってプログラムを作成します
プログラム内容については、後述するプログラミング例を参考にしてください。
プログラムが完成したら動作確認を行います。
Arduinoにプログラムデータを転送すれば、すぐさま動作が実行されます。
以下のLESSON12と同様の動作になるか、確認してください。
ここからは、mBlockを使ったプログラムの作り方を解説します。
これらの基本操作方法については、こちらの記事を参照してください。
今回演算処理した値を代入するための変数が必要になります。
mBlockでの変数作成方法について紹介します。
①カテゴリエリアの「変数」をクリックします。
②ブロックエリアの「変数を作る」をクリックします。
③変数名をキーボード入力します。
④「このスプライトのみ」を選択します。
⑤「はい」をクリックしてウインドウを閉じます。
作った変数がブロックとして表示されたら、作成完了です。
私が作成した、LESSON12対応のmBlockプログラムを紹介します。
このプログラムを使って、4ケタディスプレイちらつき対策確認済です。
以下のプログラムが動作プログラムになります。
プログラム開始条件が「Arduino Unoが起動したとき」になっている点に注意してください。
容量の関係で画像が複数に分かれていますが、すべてつなげて作成してください
mBlockのArduino専用ブロックについては、こちらの記事にて詳しく説明しています。
4ケタそれぞれに表示させる数字を切り出すプログラムを解説します。
各ケタの数字を切り出す考え方の基本は以下になります。
4ケタ目の抽出から順に考えていくと、イメージしやすいと思います。
割り算した結果のあまりを切り捨てる方法は、演算ブロックの「切り下げ」機能を使います。
Scrattino3と同じ機能のブロックでは動作できなかったため、プログラムを再考しています
上記項目について確認していきましょう。
可変抵抗器のボリュームツマミを左右に回してみて、ディスプレイ表示される数値が変化することを確認してください。
可変抵抗器のボリュームツマミを左にめいっぱい回したときには「0付近」、右にめいっぱい回したときは「1023」付近になることを確認してください。
アナログ入力値の範囲は「0~1023」のため、1024以上の数値が表示されたら異常動作です。
動作がうまくいかないときは、冷静になってプログラムを見直してみよう
mBlockにはScrattino3と同様の、PC側で演算処理をさせて変数の現在値をモニタリングできる機能(アップロードモードOFF)があります。
こちらの機能を使ってLESSON12の動作確認を行ったところ、Scrattino3のほうが断然処理が速いです。
mBlockの処理動作は、1ケタずつの表示切替がはるかに遅かったです。
PC側で演算処理させて現在値をモニタリングする場合は、Scrattino3の利用がおすすめです
小学生のお子様には断然、ビジュアルプログラミングがおすすめです!
今後のLESSON記事はScrattino3とmBlockを使い分けていきます
最後まで読んでいただき、ありがとうございました。
小学生のお子様には、プログラミング教室での基礎学習をおすすめしています!
Arduinoスクラッチプログラミングのおすすめ参考書について詳しく説明しています。
Arduinoプログラミング(スクラッチも)を使った電子工作を紹介しています。
この記事が気に入ったら
フォローしてね!
コメント