おすすめArduinoキットとLESSON記事はこちらから!click here

mBlockプログラミング 4ケタ7セグメントディスプレイの点灯ちらつき対策【Arduino:Lesson12A】

スクラッチベースのビジュアルプログラミングmBlockを使った4ケタ7セグメントディスプレイ制御
  • URLをコピーしました!

こんにちは、せでぃあ(@cediablog)です。

ArduinoプログラミングLESSON12では「4ケタ7セグメントディスプレイの点灯制御」を紹介しました。

可変抵抗器を用いた4桁7セグメント点灯制御回路の配線が完了した状態写真
LESSON12の配線まで完了した状態

可変抵抗器のボリューム状態に応じたアナログ入力値(0~1023)を、4ケタ7セグメントディスプレイに表示させるプログラミングでしたが、Scrattino3を使ったスクッラッチプログラミングに課題が見つかりました。

Scrattino3プログラミングで見つかった課題

4ケタディスプレイ表示のちらつきが目立つ

この問題の解決方法を探るべく「原因の想定」「対策方法の検討」を実施した結果、ついに解決法を見つけました!

せでぃあ

ビジュアルプログラミングでも表示をちらつかせない方法を紹介します

かな

負けず嫌いのエンジニア魂に火が付いたということですね!

今回はLESSON12のちらつき対策に特化して解説しています

LESSON12の内容については、こちらの記事を参照してください。

この記事を読んでわかること
  • 7セグメントディスプレイのちらつきが目立つ原因
  • 7セグメントディスプレイのちらつき対策方法
  • mBlockを使った7セグメントディスプレイ点灯プログラム
この記事をかいた人:せでぃあ

せでぃあはこんな人物です

✅プライム企業に勤める電気・機械設計エンジニア

✅親子の絆を深めるため、夏休みに子供と一緒に電子工作を製作

✅Arduinoプログラミングを用いて作ったプログラミング電子工作「信GO機」が市の発明くふう展で「優秀賞」を受賞

✅本ブログにてArduinoスクラッチプログラミングLESSON記事投稿中

✅YouTubeチャンネル「せでぃあブログちゃんねる」運営中

遊びが勉強に変わる前に!小学生にこそおすすめしたいのがロボットプログラミング教室です!

目次

結論:mBlockを使うことで対策実現可能

まず結論から言います。

mBlockというビジュアルプログラミングツールを使ってプログラミングすることで、ちらつき問題の対策が可能です。

原因の考察から、mBlockを使ったプログラミング方法まで解説していきます。

4ケタ7セグメントLEDディスプレイとは

4桁7セグメントLEDディスプレイ
4桁7セグメントLEDディスプレイ

4ケタ7セグメントLEDディスプレイとは、7セグメントLEDディスプレイが4桁連結した電子パーツです。

今回使用する機器は、7つのLEDとドット表示のついた8つのLEDを搭載したものが4つ並んだものになります。

4桁7セグメントディスプレイの基本情報については、前回のLESSON12記事を参照してください。

7セグメントディスプレイのちらつきが目立つ原因

Scrattino3でプログラミングするとちらつきが目立つ原因は、プログラム演算処理速度が遅いことだと考えました。

プログラム演算処理が遅いと考えた根拠として、以下の2要素が大きく寄与していると考えます。

プログラム演算処理が遅いと考察した根拠
  1. 1ケタずつ順番に点灯させる仕組みの電子機器である
  2. ArduinoIDEとはプログラム演算方法が異なる

1ケタずつ順番に点灯させる仕組みの電子機器である

4桁の7セグメントディスプレイは1桁ずつ順番に点灯させる
4桁7セグメントディスプレイの点灯方法

4桁セグメントディスプレイですが、4桁同時に点灯させるわけではなく1桁ずつ順番に点灯させています

高速で点灯切り替えすることで、残像効果により4桁同時に点灯しているように見えるのです。

この仕組みであることから、1ケタずつの点灯切り替えが遅いことで十分な残像効果が得られない=ちらつきが目立つことにつながっていると考えました。

ArduinoIDEとはプログラム演算方法が異なる

前回のLESSON12で分かっている事実として「Arduino IDEプログラムでは4ケタ同時に点灯しているように見える」ということです。

では、Arduino IDEとScrattino3では何がちがうのか?考えた結果、プログラム演算処理方法が異なることが浮かびあがりました。

Arduino IDEプログラムは、Arduino本体にプログラムコードを書き込みArduino本体側で演算します。

一方でScrattino3による演算方法はPC側で演算処理して、USBケーブル経由でArduinoを通信制御する方法です。

このプログラム演算方法の違いが、動作速度の上限限界値を制約しているのだと考察しました。

7セグメントディスプレイのちらつき対策方法

問題解決に向けたミッション

Arduino本体で演算処理させられるビジュアルプログラミングツールを使う

上記ミッション達成=4ケタディスプレイ表示ちらつき解決となると考えました。

そのようなツールを探したところ、mBLockというビジュアルプログラミングツールを使うことで実現可能であることがわかりました。

mBlockとは?

mBlockの画面にArduino用ブロックが表示された状態
mBlockの画面にArduino用ブロックが表示された状態

mBlock は、Makeblock社が開発したスクラッチベースのビジュアルプログラミングツールです。

ブラウザ上または、PC(パソコン)にインストールをしてプログラミングを行う無償ソフトウェアになります。

mBlockを使えば文字列プログラミングを使うことなく、Arduino(アルドゥイーノ)を動作をさせることができます。

mBlockの機能とインストール方法について知りたい方は、こちらの記事を参照してください。

どれくらいの演算処理速度が必要か

Arduino IDEプログラミングで1ケタずつの表示切替ウェイトタイマーを変更して、目視で点灯ちらつきが気にならないときの速度を確認しました。

その結果、0.005秒(=5msec)にて4ケタ同時に点灯しているように見えるようになりました。

mBlockを使うことで対策できる理由

mBlockはビジュアルプログラムをプログラムコードに変換してArduino本体に転送し、本体側で演算させることが可能です。

これが同じビジュアルプログラミングツールでありながら、Scrattino3ができなかった高速演算動作をmBlockが実現できる理由になります。

アップロードモードをONにすることで、実現が可能となります。

アップロードモードとは、Arduinoにプログラミングコードを転送し本体側で演算処理させる方式です。

アップロードモードON-OFF機能の詳細については、こちらの記事を参照ください。

mBlockを使ったプログラムの作り方

STEP
必要なものを準備

プログラミングするために、パソコンが必要です。

電子部品等の必要な機器については、LESSON12記事を参照してください。

STEP
mBlockでプログラミングするためのセットアップ

パソコンにビジュアルプログラミングするためのソフトウェア「mBlock」のインストールを行います。

以下の記事にて詳しく説明しています。

STEP
電気配線

電子部品とジャンパーワイヤの差し込みだけで配線が可能です。

STEP
プログラミング

スクラッチベースのビジュアルプログラミングツールmBlockを使ってプログラムを作成します

プログラム内容については、後述するプログラミング例を参考にしてください。

STEP
動作確認

プログラムが完成したら動作確認を行います。

Arduinoにプログラムデータを転送すれば、すぐさま動作が実行されます。

以下のLESSON12と同様の動作になるか、確認してください。

動作確認チェックリスト
  • 可変抵抗器のボリューム状態に応じてディスプレイ表示が変化するか?
  • 表示される数値は左周りで最小0、右回りで最大1023に近い数値になるか?

プログラムの作り方

ここからは、mBlockを使ったプログラムの作り方を解説します。

mBlockを使ったプログラムの作り方
  1. デバイスにArduino Uno R3を追加する
  2. 接続モードを「アップロードモードON」にする
  3. mBlockプログラムを作成する
  4. プログラムをArduino本体に転送する

これらの基本操作方法については、こちらの記事を参照してください。

変数の作り方

今回演算処理した値を代入するための変数が必要になります。

mBlockでの変数作成方法について紹介します。

①カテゴリエリアの「変数」をクリックします。
②ブロックエリアの「変数を作る」をクリックします。

①カテゴリエリアの「変数」をクリックします。

②ブロックエリアの「変数を作る」をクリックします。

③変数名をキーボード入力します。
④「このスプライトのみ」を選択します。
⑤「はい」をクリックしてウインドウを閉じます。

③変数名をキーボード入力します。

④「このスプライトのみ」を選択します。

⑤「はい」をクリックしてウインドウを閉じます。

作った変数がブロックとして表示されたら、作成完了です。

mBlockを使ったプログラム内容

私が作成した、LESSON12対応のmBlockプログラムを紹介します。

このプログラムを使って、4ケタディスプレイちらつき対策確認済です。

プログラム全体の説明

以下のプログラムが動作プログラムになります。

プログラム開始条件が「Arduino Unoが起動したとき」になっている点に注意してください。

mBlockを使った4ケタ7セグメントディスプレイ点灯プログラム
mBlockを使った4ケタ7セグメントディスプレイ点灯プログラム
mBlockを使った4ケタ7セグメントディスプレイ点灯プログラム
mBlockを使った4ケタ7セグメントディスプレイ点灯プログラム
mBlockを使った4ケタ7セグメントディスプレイ点灯プログラム

容量の関係で画像が複数に分かれていますが、すべてつなげて作成してください

mBlockのArduino専用ブロックについては、こちらの記事にて詳しく説明しています。

各ケタの数字切り出しプログラムの解説

各ケタの数字切り出しプログラムの解説

4ケタそれぞれに表示させる数字を切り出すプログラムを解説します。

各ケタの数字を切り出す考え方の基本は以下になります。

各ケタ数値の切り出し方
  • 4ケタ目(千の位):値を1000で割って余りを切り捨てる
  • 3ケタ目(百の位):値から千の位の数値を除いて100で割り、余りを切り捨てる
  • 2ケタ目(十の位):値から千と百の位の数値を除いて10で割り、余りを切り捨てる
  • 1ケタ目(一の位):値から千と百と十の位の数値を除く

4ケタ目の抽出から順に考えていくと、イメージしやすいと思います。

割り算した結果のあまりを切り捨てる方法は、演算ブロックの「切り下げ」機能を使います。

Scrattino3と同じ機能のブロックでは動作できなかったため、プログラムを再考しています

動作確認方法

可変抵抗器のアナログ入力値を4桁7セグメントLED表示制御回路で使うもの
配線状態説明図
動作確認チェックリスト
  • 可変抵抗器のボリューム状態に応じてディスプレイ表示が変化するか?
  • 表示される数値は左周りで最小0、右回りで最大1023に近い数値になるか?

上記項目について確認していきましょう。

可変抵抗器のボリューム状態に応じてディスプレイ表示が変化するか?

可変抵抗器のボリュームツマミを左右に回してみて、ディスプレイ表示される数値が変化することを確認してください。

表示される数値は左周りで最小0、右回りで最大1023に近い数値になるか?

可変抵抗器のボリュームツマミを左にめいっぱい回したときには「0付近」、右にめいっぱい回したときは「1023」付近になることを確認してください。

アナログ入力値の範囲は「0~1023」のため、1024以上の数値が表示されたら異常動作です。

せでぃあ

動作がうまくいかないときは、冷静になってプログラムを見直してみよう

アップロードモードOFFのときは、演算がとっても遅い

mBlockにはScrattino3と同様の、PC側で演算処理をさせて変数の現在値をモニタリングできる機能(アップロードモードOFF)があります。

こちらの機能を使ってLESSON12の動作確認を行ったところ、Scrattino3のほうが断然処理が速いです。

mBlockの処理動作は、1ケタずつの表示切替がはるかに遅かったです。

PC側で演算処理させて現在値をモニタリングする場合は、Scrattino3の利用がおすすめです

まとめ

この記事の内容をまとめると
  • mBlockはArduino本体にプログラムを転送することが可能
  • 早い演算処理が必要な場合はアップロードモードONで使う
  • PC側で演算処理させてモニタリング処理する場合は、Scrattino3利用がおすすめ

小学生のお子様には断然、ビジュアルプログラミングがおすすめです!

せでぃあ

今後のLESSON記事はScrattino3とmBlockを使い分けていきます

最後まで読んでいただき、ありがとうございました。

小学生のお子様には、プログラミング教室での基礎学習をおすすめしています!

Arduinoスクラッチプログラミングのおすすめ参考書について詳しく説明しています。

Arduinoプログラミング(スクラッチも)を使った電子工作を紹介しています。

\タイムセール祭り開催中!/
Amazon

応援ありがとうございます(^^)/

スクラッチベースのビジュアルプログラミングmBlockを使った4ケタ7セグメントディスプレイ制御

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次