ArduBlock(ヒダピオシステム向けバージョン)を使おう


概要 ダウンロード 使用方法 プログラム例

■使用中の動画
設定 プログラム1 プログラム2 プログラム3



■概要     ↑トップ↑

 本来Arduino(アルドゥイーノ)の初心者向けに開発された視覚的プログラム言語であるArduBlock(アルドゥブロック)を、中学校の限られた時間の中で、ヒダピオシステムを使用した「プログラムによる計測制御学習」をスムーズに行うため、JA(このページの作者)の要望をとりいれていただきながら光永法明氏(大阪教育大学)によって改変されています。



 改変にあたっては、マイコン学習が全く初めての生徒でも、ストレスができるだけ少なくなるようにしていただきました。さらに理解の早い生徒にはスケッチ(ArduinoのC言語風プログラム)が直接触れるようにも配慮してあります。また授業を通してプログラムに接した生徒が、世界中にひろがっているArduinoに触れていく機会になるとも考えられます。

 ※狭い画面に、できるだけコンパクトにブロックが配置でき、プログラム全体を見渡しやすいように配慮されています。
 ※また色覚に問題のある生徒にも配慮されています。


お願い

 今後の改変の参考にするために、ArduBlockを授業や部活動などで生徒に使わせた結果を報告していただけませんか?
 生徒の感想や、生徒が組んだプログラムを下記メールアドレスで送っていただければ幸いです。よろしくお願いします。

 「JA制御ヒダピオ」では初心者に理解しやすいように「0=出力なし(消灯など)」「1=出力あり(点灯など)」としていましたが、「ArduBlock」では「0=LOW(=出力あり)」「1=HIGH(=出力なし)」とマイコン本来の使い方になりますので、ご注意ください。

※Arduinoは、「初心者でも簡単に扱えるマイコンボード(AVRマイコン、入出力ポートを備えた基板)」+「C++風のArduino言語」と、それらの統合開発環境から構成されるシステムのこと。

※ArduBlock(アルドゥブロック)は、「Arduinoのためのグラフィック・プログラミング言語」。Arduino IDEのための「道具」としてブロックをドラッグ&ドロップしてプログラミングするものとして、David Li氏とHe Qichen氏が開発し、世界各国語に訳されて普及が図られています。

 Ardublock(外部リンク)から配布されているものとは異なり、

主な特徴は
○マイコンボード、書込装置(ライタ)の設定は配布時にはヒダピオ用(ATtiny2313、HIDaspx(トップマン製ヒダピオ学習回路))になっています。
  ATtiny4313の使用で、大きなプログラムにも対応できます。
  他のものに設定も可能です。

 

○ArduBlockの起動時にパソコン画面の左にArduBlock、右にARDUINO-IDEをパソコン画面一杯に表示するようになっています。
  ※ワークスペースの大きさも広げてありますので、複雑なプログラムにも対処できます。

○「セットアップ/ループブロック」を採用。
  起動時にデフォルトでポートBの方向レジスタを全ピン出力、HIGHに設定するようにした。


○値の表示を2進数8桁表記「00000000」〜「11111111」で設定できます。
  10進数表記も可能


○メニューをヒダピオ用に整理し、初めての生徒でも使用しやすい言葉になっています。

○ヒダピオシステムの学習ではBポートを出力にして進めますので、「ポートBに出力」のブロックが準備されています。

  「ポートに出力」、「ピンに出力」のブロックもあります。


  ポートB出力では「指定時間後全ピンHIGHになる」「nビット目を0にし、指定時間後全ピンHIGHになる」ブロックを準備しています。


○音の出力として、「テンポ」「音(音符)」「音」ブロックを準備。簡単な音楽も演奏できるようになっています。


○「関数」(サブルーチン)ブロックが準備されています。
  同じ処理をまとめることができるので、プログラムが理解しやすくなります。



○「くり返しを中止」ブロックが準備されています。
  条件を入れることで、くり返しから出ることができるので、プログラムの幅が出ます。



○「液晶に表示」ブロックが準備されています。
  ファイルのサイズが大きくなるので、ATtiny4313をご利用下さい。



○色覚に問題のある生徒でも見やすいように、色が配慮されています。

  充分とはいえない部分があるかも知れませんが、気になる点があれば、下記メールアドレスからご報告ください。





■ダウンロード     ↑トップ↑

私家版 Ardublock (外部リンク) にある

  「?arduino-0101-portable3-ArduBlock-20131228.zip」(約143MB, Windows用)

をダウンロードして、解凍してお使いください。

   Arduino IDEなどを含んでいますので、ダウンロードに時間がかかります。
   ※日付部分は、更新のたびに変更になる予定です。


Arduino IDEの部分はそのままで、ArduBlockの部分だけを入れ替える場合は、

  「ArduBlockTool-20131228.zip」Ardublock部分のみ

をダウンロードし、「Tools」「ArduBlock Tool」フォルダの中を入れ替えます。

   サイズが小さい(約2MB)ため、ダウンロードの時間が短縮できます。




■使用方法     ↑トップ↑

◆arduino.exeをWクリックし、「Arduino IDE」を起動する


◆ArduBlockを使用する際の初期設定

●まずマイコンAttiny2313のレジスタを書き換えてください。

  マイコンを新しくする場合や他の用途に使った場合などは、必ず行うこと。


レジスタ(8MHz内蔵RC発振)の書き換え
「ツール」→「ブートローダを書き込む」


ここではコンフィグワード(8MHz内蔵RC発振)を書き込みますが、ブートローダは利用していません


●配布時には、書込装置(ライタ)は「トップマン製ヒダピオ学習回路」、マイコンボードは「ATtiny2313」の設定になっています。

  書込装置を自家製のHIDaspxにする場合は、書込装置を「HIDaspx」に変更してください。

書込装置(ライタ)の設定
ツール → 書込装置 → HIDaspx(トップマン製ヒダピオ学習回路)


マイコンボードの設定
ツール → マイコンボード → ATtiny2313(8MHz/RC use with HIDaspx)


●和音/単音オルゴールで検証するときは、切り換えスイッチを単音側にしてください。



◆ArduBlockを使う。
●ArduBlockを表示する
「ツール」→「ArduBlock」でArduBlockの画面が表示される。


  (ArduBlockの初期画面)


  (画面の各部の呼び方)


●デジタル出力、待つをメニューから選んで、ワークスペースに貼り付ける
「出力」→「ポートBに出力 値」
   出力は、他に「ポートに出力」「ピンに出力」がある。
   ポートに出力では、値は2進数表記(0〜11111111)の他に、10進数表記(0〜255)が可能
   2進数表記で「0」は「LOW」=ON、「1」は「HIGH」=OFFを表す。

「待つ」→「待つ ミリ秒」


右クリックで「コピー」を選択し、ブロックを追加する。


「ポートBに出力 値」ブロックの値を「11110000」と「00001111」に変更する。



●コンパイル〜書き込み
「アップロード」ボタンで、Arduino IDEのテキストエディタにプログラム(C言語)が表示され、コンパイル、書き込みまでが一度に行われます。

プログラムの間違いや、ライターやターゲットに問題がある場合は「進捗表示エリア」に赤字で表示されます。「Passed」が出れば問題ありません。



8LEDの回路を接続している場合、左右4個ずつのLEDが、交互に点滅する。



◆プログラム例     ↑トップ↑
●条件分岐


   「ポートBに出力」ブロックと「待つ」ブロックを合わせた
   「ポートBに出力 指定時間後255に」ブロックも使うことが可能


●音を鳴らす

・音階を指定して鳴らす
明るいときは『ド』、暗いときは『ソ』が鳴る。

・周波数を指定して鳴らす(1)「救急車」
『ピーポー、ピーポー』

・周波数を指定して鳴らす(2)「カッコウ」
横断歩道の『カッコー、カッコー』

・周波数を指定して鳴らす(3)「NHKの時報時報」
『ポッ、ポッ、ポッ、ピーン』

●信号機のプログラム例

コメントを書くことができます。

関数を使ってみました。

センサを使って、進行方向の青の長さを変えてみました。

●デジタル数字のプログラム例

暗くなると、3,2,1,0とカウントダウンする。

電子さいころ(暗くなると数字を変え、明るくなるとストップする)

●ロボットカーのプログラム例

光に反応すると前へ進むプログラム

従来の「ピンに出力」の関数部分です。

「ポートBに出力」を使うと簡潔になります。




【参考】
「ピンに出力」ブロックなどで、ピン#は指定する方法が2通りある。
  ・「PB0」などの指定する
  ・「9」など数値で指定する
    ATtiny2313/4313の場合、下図のDについている数字を置く。