【mBlock】Arduino専用ブロックの使い方 スクラッチベースのプログラミング
こんにちは、せでぃあ(@cediablog)です。
mBlockを使ってプログラミングしたいのですが、Arduino専用ブロックの使い方がわかりません
このような悩みを解決します。
Arduinoをプログラミングする方法として、機能ブロックを組み合わせるビジュアルプログラミングがあります。
今回はスクラッチベースのプログラミングツールであるmBlockにおける、Arduino専用ブロックの機能と使い方について説明します。
ビジュアルプログラミングは小学生におすすめのプログラミング方法だよ
せでぃあはこんな人物です
✅プライム企業に勤める電気・機械設計エンジニア
✅親子の絆を深めるため、夏休みに子供と一緒に電子工作を製作
✅Arduinoプログラミングを用いて作ったプログラミング電子工作「信GO機」が市の発明くふう展で「優秀賞」を受賞
✅本ブログにてArduinoスクラッチプログラミングLESSON記事投稿中
✅YouTubeチャンネル「せでぃあブログちゃんねる」運営中
- Arduino専用ブロックの種類
- Arduino専用ブロックの使い方
mBlockを使ったビジュアルプログラミングの始め方については、こちらの記事を参照してください。
Arduino専用ブロックの種類と使い方
mBlockにおけるArduino専用ブロックは、4つの専用カテゴリ内に合計20種類あります。
- ピン
- シリアルポート
- データ
- 検知
ピンカテゴリ
ピンカテゴリには、9種類のArduino専用ブロックが存在します。
- デジタル入力状態ブロック
- アナログ入力ブロック
- 入力HIGH時間計測ブロック
- デジタル出力命令ブロック
- PWM出力命令ブロック
- 音階出力ブロック
- サーボ出力指令ブロック
- 外部割込み命令ブロック
- 外部割込み停止ブロック
デジタル入力状態ブロック
対象となるソケット番号の入力状態を取得するためのブロックになります。
このブロックを選択すると「入力信号なし=0」「入力信号あり=1」のどちらかの値が返ってきます。
このブロックは、主にもし〇番ソケット入力信号がONだったら~といような条件設定で使われます。
ソケットへの入力信号状態を条件とすることで、もし押しボタンスイッチが押されたら~という条件を作ることができます。
アナログ入力ブロック
Arduino本体のアナログ入力ソケットへのアナログ入力信号を取り込むブロックです。
アナログ入力ソケット「A0~A5」に対応した数値「0~5」を入力して使います。
アナログ入力ソケットに入力される電圧値「0~5V」をアナログ値「0~1023」に変換して、Arduino内部で数値化されます。
このブロックは主にもしアナログ入力値が○○以上だったら~というような比較演算を用いた条件設定で使われます。
明るさセンサーのアナログ入力値を使って、部屋が暗くなったら照明を点灯させる等の使い方ができます。
入力HIGH時間計測ブロック
指定したソケット番号の入力信号がHIGHになっている時間を計測するブロックです。
値はマイクロ秒単位で返ってきます。
タイムアウト時間を経過すると0が返されます。
デジタル出力命令ブロック
指定したソケットに対して出力信号「OFF=低、ON=高」を指定するブロックです。
Arduinoプログラミングでは「出力信号OFF=LOW」、「出力信号ON=HIGH」として指定します。
このブロックは主に、もし○○が△△だったら、□番ソケットの出力信号をHIGHにするといった使われ方をします。
例えば、「押しボタンスイッチが押されたときに、LEDを点灯させる」といった使われ方になります。
PWM出力命令ブロック
指定したソケットを指定した値でPWM出力させるブロックです。
PWM出力とはパルス変調(PWM:Pulse Width Modulation)の略で、0Vと5VのON時間の割合を調節することで、疑似的なアナログ出力ができる機能のことです
PWM出力値はアナログ値「0~255」を電圧値「0~5V」に変換して出力されます。
アナログ入力で扱う範囲「0~1023」と扱う範囲が異なることに注意しよう
あらかじめ準備した変数に値(0~255の範囲)を代入して、その値を出力させるという使い方ができます。
変数を使わずに直接0~255の数値を指定しても問題ありません。
音階出力ブロック
圧電ブザーやスピーカーを接続して、指定した音階の音を出すことができるブロックです。
音階出力ピンを入力し、音階とオクターブと鳴動時間を選択・設定してください。
内部的には指定した音階に応じた、周波数の50%デューティー矩形波を作り出しています
サーボ出力指令ブロック
指定した角度にモーターの回転角度を制御することが可能な「サーボモーター制御用ブロック」です。
モーターに接続した出力ソケット番号と、回転させたい角度を指定することで狙った角度(0~180°)まで回転させることができます。
サーボモーターの角度は、PWM信号でHIGH=5Vとなっている時間(パルス幅といいます)により制御します
外部割込み命令ブロック
特定の条件が成立したときに、割込み制御させるブロックです。
エンコーダー読み取り等、演算途中に割り込んで信号取りこぼしを回避したいときに利用されます。
外部割込み停止ブロック
指定したソケット番号の外部割込み動作を停止させるブロックです。
シリアルポートカテゴリ
シリアルポートカテゴリには、3種類のArduino専用ブロックが存在します。
- 改行コード付きテキストデータ出力ブロック
- シリアルバッファ格納バイト数ブロック
- 受信データ読み込みブロック
改行コード付きテキストデータ出力ブロック
テキストデータをシリアルポートへ出力させるブロックです。
ボーレートは115200ビット/秒で処理されます
シリアルバッファ格納バイト数ブロック
シリアルバッファに何バイトのデータが格納されているか、返ってくるブロックです。
受信データ読み込みブロック
受信データを読み込むことができるブロックです。
データカテゴリ
データカテゴリには、5種類のArduino専用ブロックが存在します。
- 数値レンジ変換ブロック
- 数値レンジ制約ブロック
- データ型変換ブロック
- Char→String変換ブロック
- ASCII変換ブロック
数値レンジ変換ブロック
数値をある数値範囲から、別の範囲に変換させるブロックです。
アナログ入力値「0~1023」をサーボモーターの回転角度「0~180」に変換するときに便利なブロックです。
数値レンジ制約ブロック
数値を指定した範囲の中に収めるブロックです。
値が上下限内の場合はそのままの数値が返ってきますが、下限より小さい数値や上限より大きい数値のときは「下限値」または「上限値」が返ってきます。
データ型変換ブロック
値を「整数」「少数」「文字列」に変換することができるブロックです。
String変換ブロック
String(文字列)に変換するブロックです。
ASCII変換ブロック
ASCII文字に変換するブロックです。
検知カテゴリ
検知カテゴリには、3種類のArduino専用ブロックが存在します。
- 超音波センサーによる距離取得ブロック
- タイマーブロック
- タイマーリセットブロック
超音波センサーによる距離取得ブロック
超音波センサを使った距離計測に使うブロックです。
センサーとの距離がcm単位で返ってきます。
タイマーブロック
タイマー計測ができるブロックです。
マイクロ秒単位で値が返ってきます。
タイマーリセットブロック
タイマー計測値を0リセットするブロックです。
アップロードモードONのときしか使えないブロックがある
mBlockにはパソコンとArduinoを常時通信させて、データ値をモニタリングできるモードがあります。
このモードは「アップロードモードOFF」のとき有効となり、USBケーブルで通信接続するため演算が遅くなります。
これによりマイクロ秒単位で演算が必要なブロックは使用できなくなるというわけです。
高速演算が必要なブロックは、アップロードモードONで使おう
アップロードモードについては、こちらの記事にて詳しく説明しています。
まとめ
- mBlockのArduino専用ブロックは20種類
- アップロードモードONのときしか使えないブロックがある
mBlockを使えばブロックの組み合わせだけで、押しボタンスイッチ入力やLEDの点灯、モーター回転まで制御が可能です。
ぜひArduinoスクラッチプログラミングにチャレンジしてみてくださいね!
最後まで読んでいただき、ありがとうございました。
小学生のお子様には、プログラミング教室での基礎学習をおすすめしています!
プログラミング教室が近くにない方には、オンライン教室という選択肢もあります。
Arduinoの始め方はこちらの記事にて詳しく説明しています。
Arduinoスクラッチプログラミングのおすすめ参考書について詳しく説明しています。
Arduinoプログラミング(スクラッチも)を使った電子工作を紹介しています。
コメント