Ardublockは、Arduinoで使えるビジュアルプログラミング言語です。本ページでは Ardublock の改変版を公開します。
2012/07/03時点でのリポジトリをベースに、主として日本語表記を整理し、 日本語表記の改訂、メニューの整理、ブロックの追加等をしています。 追加しているブロックは主に
Arduino IDE を起動したらメニューからツール→ArduBlockをクリックします。 左側のメニューから必要なブロックをクリック、中央のワークスペースまでドラッグして プログラムを組みます。プログラムを組み終わったら「アップロードボタン」をクリックすると、Arduino IDE のエディタに Arduino 言語のプログラムが表示され、コンパイルが始まります。 コンパイルが終われば、自動的にマイコンへの書き込みが始まります。
ArduBlock のプログラム例は次のスライドを見てください。
ArduBlock (右下)と組み合わせて、ArduinoMonitor(上二つのウィンドウ)を 利用できる ArduBlock です。
ArduinoMonitorを利用する場合には ArduinoMonitor に同梱の iArduino ライブラリを下記のフォルダに置いてください。ライブラリの有無で動作を変えているためです。
ArduBlockのアップロードボタンをクリックして、書き込みが終わったら、すぐに ArduinoMonitor とつなぐことができます。ArduinoMonitor の Connect ボタンをクリックするだけです。プログラム(スケッチ)を書き換える前に Disconnectボタンをクリックして接続を切ってください。
接続は Arduino の D12, D11, D4, D5, D6, D7 ピンを、それぞれ液晶の RS, E, D4, D5, D6, D7 ピンを リファレンスマニュアルにある図と、ほぼ同じですが、D11 が E で R/W ピンはGNDへ直接つなぎます。R/Wピンを GND へ接続しないと動作しないので注意してください。
メニューを2つ用意しています。tools\ArduBlockTool の
また起動時にブロックを表示した場合には arduBlockStart.abp を用意します(ArduBlock で保存したファイル)。 ループブロックを表示する arduBlockStart_std.abp と、何も表示しない arduBlockStart_none.abp ファイルを バイナリに含んでいるので、必要なら利用してください。
中学校の授業で ヒダピオシステム を通して学んだ後、Atmel ATtiny2313/4313 マイコンを利用した 作品づくりに使うことを念頭に、 ヒダピオシステムをつくられたJAさんのコメント・要望をとりいれてブロックの追加(PORT操作等)等をしています。 一方で中学校で使わないであろう市販のキット(部品)のブロックを省いています。 またArdublockの起動時にウィンドウを画面いっぱいに広げる等の 改変もしています。
一般的な Ardublock, Arduino IDE との大まかな違いは以下の通りです:
下記に含まれる Arduino IDE では、ATtiny2313/4313 の書き込みに HIDaspx (ヒダピオ学習回路でも可) を使いますが、コンフィグワードとプログラムの書き込み(ArduBlockからのアップロード)が別の操作になっています。そこで最初(1つのマイコンにつき1回)にATtiny2313/4313にコンフィグワード(8MHz内蔵RC発振)を書き込みます。操作としては Arduino IDE のメニュー「ツール」→「ブートローダを書き込む」をクリックします(メニューを流用しているため「ブートローダを書き込む」ですが、ブートローダは利用していません)。
ATtiny2313/4313を使う場合のピン番号は下記となっています(D0からD16まで、それぞれの番号が0から16となる)。ArduBlockではPB0〜PB7, PD0〜PD5のシンボルが使えます。 クロックは内蔵 RC 発振子 8MHz を想定しています。
// +-¥/-+ // RESET PA2 1| |20 VCC // RX (D0) PD0 2| |19 PB7 (D16)(SCK) // TX (D1) PD1 3| |18 PB6 (D15)(MISO) // (D2) PA1 4| |17 PB5 (D14)(MOSI) // (D3) PA0 5| |16 PB4 (D13) // INT0 (D4) PD2 6| |15 PB3 (D12) // INT1 (D5) PD3 7| |14 PB2 (D11) // (D6) PD4 8| |13 PB1 (D10) // *(D7) PD5 9| |12 PB0 (D9) // GND 10| |11 PD6 (D8) // +----+ *D7 のみ analogWriteが利用可
キャラクタ液晶は、ヒダピオシステムのLCDを使った電光掲示板と同様に結線してください。ディップスイッチ周りは任意です。プログラムメモリを多く使うので tiny2313 ではなく、tiny4313が必要になると思います。
ATtiny2313/4313 には A/D コンバータモジュールが内蔵されていませんが、コンパレータの機能を使って A/D コンバータの機能を(1入力だけですが)実現できます。0.01uF (10nF, 表記は 102) のコンデンサを 12番ピン (PB0 あるいは D9)とグラウンド(GND)につなぎます。D10 (13番ピン) がアナログ入力ピンになります。注意点は精度がそれほど高くないことと、アナログ入力の電圧が高くなるとさらに精度が悪くなることです。電源電圧が 5V のときで 0V〜2V、高くても 3V 程度までで使うのがよいでしょう。
回路とプログラムの動作は ChaN さんの説明(シンプルなA-Dコンバータ)を読むとわかりやすいと思います。下でダウンロードできる Arduino IDE 込みの開発環境では、この方法で ATtiny2313/4313 でも analogRead() を使うことができるようになっています(analogRead(10) とすると使えます)が、A0 が使えず(analogRead(A0) はエラーになります)、そのために ArduBlock からも使えません(ブロックからArduino言語に変換するときに A0 となる)。
A0 が使えるようにするには開発環境の hardware\arduino\cores\attiny2313 の中の pins_arduino.h の
extern const uint8_t PROGMEM digital_pin_to_timer_PGM[];の下に
static const uint8_t A0 = 10;を追加し、hardware\arduino\cores\attiny2313 の中の Arduino.h の最後の #endif の上に
#include "pins_arduino.h"を追加してください。そうすると ArduBlock でアナログ入力ブロックでピン 0 を指定して使えるようになります。
Ardublock部分のソースコードは以下です:
更新が遅れています…
2012/07/03時点でのリポジトリをベースに、主として日本語表記を整理し、 当時入手しにくいと判断したブロックを外したものです。利用するには Arduino フォルダの中に tools フォルダを作り、そこにArduBlockToolフォルダをコピーして下さい。Arduino IDEでボードとシリアルポートの設定を確かめておきます。Arduino IDEのToolsメニューにArduBlockが現れるので、クリックするとArduBlockの起動です。