DTP (Desk Top Prototyping)環境の構築をめざして!!!
えれくらでemuduinoのお披露目会をやります。
えれくら!〜第0x02回〜(2013/02/23)
触ってみたい方は、jdkとprocessingの最新バージョンをインストールしてきてね。
本プログラムは,PC上でArduinoをエミュレートすることを目的に開発しました。
本格的にエミュレータを作るのであれば、atmelのAVRマイコンのCPUシミュレータを開発し、それに入出力部を拡張するなどの高度な実装が必要となります。
しかし、本プログラムでは、お手軽にProcessingを使ってArduino風に動いているように見せているだけです。
もともと,ArduinoのIDEは,Processingをベースにして開発されており,両者のプログラミングスタイルは非常によく似ています。
Processing は,setup()で初期化を行い,その後,drow()で描画を繰り返します。
Arduino は,setup()で初期化を行い,その後,loop()で制御を繰り返します。
Processing | <==> | Arduino |
---|---|---|
void setup() { … ; } void drow() { … ; } |
void setup() { … ; } void loop() { … ; } |
そこで,以下のようなjavaアプリケーションで作成したGUIパーツを,Processing 上に作成した入出力関数を通じてコントロールし,Arduino風の実行環境を実現しています。
もちろん、ProcessingとArduinoは、根本的に異なるシステムなので、割り込みやタイマー動作などのハードに依存した機能までは真似出来ませんが、簡単な入出力やループ動作などの検証には使えると思います。
学校などで、組み込みの基礎を教える場合、ハードウェアとして人数分の教材を確保するのは困難ですが、Emuduino なら、PCだけで実習を行うことが可能です。
詳細については、リファレンスをごらんください。
Emuduinoを使った開発の流れは、以下のようになります。
1.開発環境を整え、emuduinoのライブラリをインストールする。
2.EmuduinoDesignerを用いて、使用するGUIパーツを選択して、その配置やパラメータを設定し、ベースとなるProcessingのソースコードを生成する。
3.2.で生成したソースコードをProcessingに移し、必要なプログラミングを行う。
4.Processingで機能の実装が終わったら、ソースコードから必要部分をArduinoの統合開発環境にコピーしコンパイル後、実機Arduinoに転送して実行する。
以下の圧縮ファイルをダウンロードしてください。
実行用ライブラリとサンプルプログラム
ソースコード
emuduinoのGUIは,Netbeansを使って開発しています。
emuduinoのGUIは,Netbeansを使って開発しています。(大事な事なので,2回書きました。)
Netbeansのプロジェクトをそのままの状態で圧縮ファイルにしたものを公開しているので,プログラムの拡張改変を試みる方は,Netbeansを使用することをお薦めします。
旧バージョン
Emuduino20130105.zip,EmuduinoSRC20130105.zip
Emuduino20121224.zip
1.先ほどダウンロードした「実行用ライブラリとサンプルプログラム」の圧縮ファイル Emuduino20??????.zip をハードディスクの適切な領域に展開してください。
2.展開するとemuduinoというディレクトリが生成されます。
このemuduinoディレクトリを processing.exe のあるディレクトリの下のmodes¥java¥libraries¥に全てコピーしてください。
例 D:¥processing–2.0b7-windows32¥processing–2.0b7¥modes¥java¥libraries¥
modes/java/libraries/ |-- dxf |-- emuduino <--- これを追加コピーする。 | |-- examples | | |-- ActivityLimitation | | |-- Blink | | |-- Button | | |-- Button2LED | | |-- ButtonStateChange | | |-- DataRepTest | | |-- DroidTestAnalog | | |-- DukeTestAnalog | | |-- HeartBeat | | |-- KnightRider | | |-- LcdTest | | |-- ReadAnalogVoltage | | |-- SerialTest | | |-- Slider2Buzzer | | |-- toneKeyboard | | |-- toneMelody | | `-- TwentyFour | `-- library/ | |-- data | | |-- heartbeat1k.csv | | `-- sin_cos.cs | |-- emuduino.jar | |-- export.txt | `-- template | |-- AnalogReadFunction.tmpl | |-- AnalogWriteFunction.tmpl | |-- DigitalReadFunction.tmpl | |-- DigitalWriteFunction.tmpl | |-- Disp7SEG.tmpl | |-- Header.tmpl | |-- initComponents.tmpl | |-- PinAllocation.tmpl | |-- SerialFunction.tmpl | |-- SetUp.tmpl | |-- SpeakerFunction.tmpl | `-- Variables.tmpl |-- javascript |-- minim |-- net |-- pdf |-- serial `-- video
1.さきほど準備した実行環境の中にある processing.exe を実行してください。
2.メニューの中のFile - Examples… Ctrl+Shift+Oをクリックしてください。
別ウィンドウでサンプルの一覧が表示されます。
3.このに表示されるtreeの中のLibraries以下にあるemuduinoの中にサンプルが収録されています。
それぞれのタイトルをクリックするとサンプルソースが開きます。
Libraries |-- emuduino
4.メニューの中のSketch - Run Ctrl+R で実行します。
5.サンプルの終了は,Arduino と Emuduinoのタイトルが表示されているウィンドウの右端の[X]で終了します。
これらのサンプルをベースにして,プログラムを作る場合,一度,自分の作業領域内に別名でコピーしてから作業を開始してください。
これらのサンプルプログラムは,ライブラリ中にread onlyファイルとして登録されているので,書き込みができません。
以下のサンプルリストをお読みください。
以下のEmuduinoDesignerの解説をお読みください。
以下のリファレンスをお読みください。
サンプルプログラムを参考にして,setup(); と loop(); 内に必要な機能を実装していきます。
emuduino上でひと通りの機能確認ができたら,ArduinoのIDEに,それらの内容をコピーしてください。
これをコンパイルして,Arduinoの実機にプログラムを転送すればそのまま実行出来るはずです。
Emuduinoを使って,以下のアプリを作成せよ!
サイコロ
1.Switchと7SegLEDを使って,サイコロを作れ!
2.Switchを一回押すと,1–6までの数字をランダムに表示する。表示間隔は,0.5秒
3.Switchをもう一回押すと,表示を停止して,数字を表示。
4.2と3を繰り替えす。
スロット
1.3つのSwitchと3つの7SegLEDを使って,スロットを作れ!
2.何れかのSwitchが押されたら,スタート。7SegLEDに0–9の数字をランダムに表示する。
3.3つのスイッチが1づつ押される毎に,7SegLEDの表示を停止する。停止時は,ピッという音を鳴らす。
4.表示が777に揃ったら,ファンファーレの音楽を鳴らす。それ以外の場合は,低音の音を1秒鳴らす。
5.2に戻り,キー入力があるまで待つ。
キッチンタイマー
以下の仕様書を満たすキッチンタイマーを作成せよ!
スクロールクロック
年月日と時分を表す“2012 12 23 12 34” のような数列を8つの7segLEDに右から左に流れるようにスクロールさせて表示せよ。
1分毎に時刻を更新せよ。
AM/FMラジオの表示部
AM/FMラジオの表示部を作成せよ。
周波数を4つの7segLEDを使って表示せよ。
AM/FMの切り替え、音量の大小は、液晶部に表示せよ。
スイッチの割当て
1.Switch2 AM/FM表示の切替え
2.Switch3 周波数アップ
3.Switch4 周波数ダウン
4.Switch5 音量アップ
5.Switch6 音量ダウン
音量範囲 0–63
Q.何と読むのですか?
A.emuduinoは,“えみゅでゅいーの” と読みます。
Emulator と Arduinoを合成して作った単語です。
Emu(lator) + (Ar)duino
Q.何故作ったのですか?
ArduinoやProcessingは,プログラムをしていて非常に楽しい環境です。
でも、Arduinoをプログラムするには、機材やパーツを揃えたり組み替えたりするのがチョット面倒です。
そこで、Processingの上で、いつでもどこでもチョイチョイとお気軽にarduinoのプログラムができたらいいなと思って作りました。
「怠惰はプログラマの美徳」
Q.ボタンやLEDのサイズが大きすぎると思うんですが?
理由は2つあります。
1つ目は、これからは、タッチパネル式のコンピュータ環境が増えると考え、タッチパネルで扱いやすいGUIのサイズを想定して、全体をデザインしました。
2つ目は、出来上がった作品をプロジェクターを使ってデモをすることを想定し、見やすいように大きめのデザインにしました。
2012/08/12 ver. 0.01
お盆の休暇中に、以前から思い抱いていたアイデアを形にすべくプログラムを開始。
2012/12/15 ver. 0.4?
忘年会議2012にて、初お披露目。機能を紹介する。
2012/12/24 ver. 0.49
基本的な機能が完成したので、公開を開始。
2013/01/07 ver. 0.72
javaのクラスをライブラリ化し、サンプルプログラムと一緒にprocessingに登録できるようにした。
バージョン番号は、resources/Arduino.propertiesの中で管理する。
2013/02/22 ver. 0.81
GUIパーツのData reproducer(アナログデータの再生器)を追加する。
GUIパーツのLCDを追加する。
Slider に出力機能を追加する。