防災グッズを揃えて災害に備えよう!
\ 防災グッズを揃えるきっかけに /
この記事内には、プロモーションが含まれます。
こんにちは、せでぃあ(@cediablog)です。
mBlockを使ってプログラミングしたいのですが、Arduino専用ブロックの使い方がわかりません
このような悩みを解決します。
Arduinoをプログラミングする方法として、機能ブロックを組み合わせるビジュアルプログラミングがあります。
今回はスクラッチベースのプログラミングツールであるmBlockにおける、Arduino専用ブロックの機能と使い方について説明します。
ビジュアルプログラミングは小学生におすすめのプログラミング方法だよ
せでぃあはこんな人物です
✅プライム企業に勤める電気・機械設計エンジニア
✅親子の絆を深めるため、夏休みに子供と一緒に電子工作を製作
✅Arduinoプログラミングを用いて作ったプログラミング電子工作「信GO機」が市の発明くふう展で「優秀賞」を受賞
✅本ブログにてArduinoスクラッチプログラミングLESSON記事投稿中
✅YouTubeチャンネル「せでぃあブログちゃんねる」運営中
mBlockを使ったビジュアルプログラミングの始め方については、こちらの記事を参照してください。
mBlockにおけるArduino専用ブロックは、4つの専用カテゴリ内に合計20種類あります。
ピンカテゴリには、9種類のArduino専用ブロックが存在します。
対象となるソケット番号の入力状態を取得するためのブロックになります。
このブロックを選択すると「入力信号なし=0」「入力信号あり=1」のどちらかの値が返ってきます。
このブロックは、主にもし〇番ソケット入力信号がONだったら~といような条件設定で使われます。
ソケットへの入力信号状態を条件とすることで、もし押しボタンスイッチが押されたら~という条件を作ることができます。
Arduino本体のアナログ入力ソケットへのアナログ入力信号を取り込むブロックです。
アナログ入力ソケット「A0~A5」に対応した数値「0~5」を入力して使います。
アナログ入力ソケットに入力される電圧値「0~5V」をアナログ値「0~1023」に変換して、Arduino内部で数値化されます。
このブロックは主にもしアナログ入力値が○○以上だったら~というような比較演算を用いた条件設定で使われます。
明るさセンサーのアナログ入力値を使って、部屋が暗くなったら照明を点灯させる等の使い方ができます。
指定したソケット番号の入力信号がHIGHになっている時間を計測するブロックです。
値はマイクロ秒単位で返ってきます。
タイムアウト時間を経過すると0が返されます。
指定したソケットに対して出力信号「OFF=低、ON=高」を指定するブロックです。
Arduinoプログラミングでは「出力信号OFF=LOW」、「出力信号ON=HIGH」として指定します。
このブロックは主に、もし○○が△△だったら、□番ソケットの出力信号をHIGHにするといった使われ方をします。
例えば、「押しボタンスイッチが押されたときに、LEDを点灯させる」といった使われ方になります。
指定したソケットを指定した値で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専用ブロックが存在します。
数値をある数値範囲から、別の範囲に変換させるブロックです。
アナログ入力値「0~1023」をサーボモーターの回転角度「0~180」に変換するときに便利なブロックです。
数値を指定した範囲の中に収めるブロックです。
値が上下限内の場合はそのままの数値が返ってきますが、下限より小さい数値や上限より大きい数値のときは「下限値」または「上限値」が返ってきます。
値を「整数」「少数」「文字列」に変換することができるブロックです。
String(文字列)に変換するブロックです。
ASCII文字に変換するブロックです。
検知カテゴリには、3種類のArduino専用ブロックが存在します。
超音波センサを使った距離計測に使うブロックです。
センサーとの距離がcm単位で返ってきます。
タイマー計測ができるブロックです。
マイクロ秒単位で値が返ってきます。
タイマー計測値を0リセットするブロックです。
mBlockにはパソコンとArduinoを常時通信させて、データ値をモニタリングできるモードがあります。
このモードは「アップロードモードOFF」のとき有効となり、USBケーブルで通信接続するため演算が遅くなります。
これによりマイクロ秒単位で演算が必要なブロックは使用できなくなるというわけです。
高速演算が必要なブロックは、アップロードモードONで使おう
アップロードモードについては、こちらの記事にて詳しく説明しています。
mBlockを使えばブロックの組み合わせだけで、押しボタンスイッチ入力やLEDの点灯、モーター回転まで制御が可能です。
ぜひArduinoスクラッチプログラミングにチャレンジしてみてくださいね!
最後まで読んでいただき、ありがとうございました。
小学生のお子様には、プログラミング教室での基礎学習をおすすめしています!
プログラミング教室が近くにない方には、オンライン教室という選択肢もあります。
Arduinoの始め方はこちらの記事にて詳しく説明しています。
Arduinoスクラッチプログラミングのおすすめ参考書について詳しく説明しています。
Arduinoプログラミング(スクラッチも)を使った電子工作を紹介しています。
この記事が気に入ったら
フォローしてね!
コメント