カテゴリ: AVR
投稿者: terada
プログラミングについて記事を書くといいつつ、時間がなくなってやれてません。
今日も、最近買ったそれ系の本の紹介でお茶を濁したいと思います。

試しながら学ぶAVR入門―マイコンの基礎と電子工作とWindowsアプリケーションの作り方 (Skill up my computerシリーズ)
試しながら学ぶAVR入門―マイコンの基礎と電子工作とWindowsアプリケーションの作り方 (Skill up my computerシリーズ)

前回紹介した本は実例集という感じでしたが、こちらはAVR自体についてもっと詳しく書かれています。マイコンとはなにかってとこから書いてあるので、AVRで入門する場合には一番いいかも。



AVRマイコン・リファレンス・ブック―AVRのCPUアーキテクチャ、豊富な内蔵周辺機能を詳細解説 (マイコン活用シリーズ)
AVRマイコン・リファレンス・ブック―AVRのCPUアーキテクチャ、豊富な内蔵周辺機能を詳細解説 (マイコン活用シリーズ)

多分、AVRの一番詳しい本。念のため買って見たけど・・・。



Handmade Electronic Music: The Art of Hardware Hacking
Handmade Electronic Music: The Art of Hardware Hacking

サウンドアーティストのNicolas Collinsさんの著書。洋書ですが、写真や図が多くて見やすいです。「コンセントから電力をとるなんてことはするなよ!死んじまうぞ」と、真っ先に注意をしてます。
Richard Lermanや刀根康尚の名前が出てくるので、それだけでやる気になります。こういう本なかなかないんじゃないかな。
カテゴリ: AVR
投稿者: terada
AVR入門にあたって、参考にした本はこちらの「AVRマイコン活用ブック」です。とにかく実例がたくさん載っているので楽しいのですが、これだけでは初心者にはちんぷんかんぷんなところも多いです。(PICマイコン用の書籍ですが、「やさしいPICマイコン プログラミング&電子工作」は丁寧な解説つきでよかったです)

AVRマイコン活用ブック―オリジナル電子ゲーム&ロボット製作 (わかるマイコン電子工作)
AVRマイコン活用ブック―オリジナル電子ゲーム&ロボット製作 (わかるマイコン電子工作)

この本では、ストロベリー・リナックス社の「ATMEGAマイコンボードキット」というキットを用いて、様々な応用例を示してあるのですが、肝心のボードキットが品切れ状態で、僕はしょうがなく部品一つ一つを買って、ブレッドボードで自作しようと試みました。基盤とブレッドボードでは、配線の都合が異なるので、用意する部品も多くなります。あれこれ考えてリストアップしておいたつもりでも、買い忘れが発生します。100μFの電解コンデンサは、冒頭の部品リストにも入っていないので要注意です!(これのせいで、まだ未完成・・・)
結局、僕はキットの複製はとりあえず諦めて、その次にあったATTiny26を使った自作マイコンボードから始めることにしました。こちらは部品数も少なくシンプルです。一番小さいサイズのブレッドボードでも組むことができます。
誌面でリストアップされた部品以外で、あるといいなと思ったものをあげます。

ブレッドボード
一番小さいのでもできましたが、何個か大きさ違いであるといいかも。
ジャンプワイヤ
多すぎだと思うくらいで良いと思います。意外と使う。
虫ピン付の導線
電源の接続や、そのほかもろもろで重宝します。最低2本は欲しい。
LED
たくさんあっていいと思います。
ラジオペンチ、ニッパー、ピンセット
ピンセットはあった方が良いです。
ハンダ、ハンダゴテ、こて台
基本ですが、ブレッドボードで組む場合もやっぱり、あった方が良いです。ブレッドボード用ISPコネクタ作成で使いました。
セメダイン
ブレッドボード用ISPコネクタ作成で使いました。ハンダ付けしたところを固める用にあるとよさげです。

完成図
マイコンボード完成図

ブレッドボード用ISPコネクタ
完成図の奥の方に見える、束になった導線はISP端子用のコネクタで、自作しました。ISP端子は2×3ピンなので、そのままではブレッドボードにさしたとき混線してしまいます。そこで、ピンプラグとフラットケーブルを組み合わせて6ピン一列に変換していると言うわけです。抜き差しで、接合部分に結構負担がかかるので、ずれないようなちょっといいピンプラグにしたり、セメダインで固めたり工夫が必要です。
ISP変換コネクタ

次回は、いよいよプログラミングの話を書こうかな。
カテゴリ: AVR
投稿者: terada
Gainerを少しかじっただけの初心者が、調子にのってAVRに手をつけ始めました。完全孤独な手探り状態ですが、同じように興味のある人たちのために人柱となるべく、分かったことを少しずつまとめていきたいと思います。専門分野の方から見ればかなりお粗末な内容、間違いもあるかもしれませんが、ご容赦ください。
*この記事はWindows専用です。Macで扱えるのかはよく知りません。ごめんなさい。

AVR
AVRとはAtmel社から発売されているマイコンの一種です。マイコンの代名詞と言えばMicrochip社のPICですが、導入費が比較的安いのと、性能面でもアドバンテージがありそう(この辺りで入れ知恵されました)だったのでAVRに挑戦することにしました(PICに比べて関連書籍が圧倒的に少ないので、不安ですが・・・)。ArduinoのマイコンにもAVRが採用されています。ちなみにGainerのマイコンはCypress社のPSoCです。
AVR
このAVRは「ATMega168」(500円)と「ATTiny26」(400円)です。括弧内はマルツパーツでの価格です。GainerやArduinoなどのI/Oモジュールは一個あたり3000円〜10000円くらいしますが、とりあえず単体で購入しさえすれば、PCとの接続は簡単にできます。一方、マイコンは一個あたり数百円で購入できますが、導入の際にはあらかじめ必要なものがあります。ライターと呼ばれる、書き込み用のデバイスです。

ライター
プログラマーとも言うようです。種類がたくさんあるので、何がいいのか迷いました。
ライターは大きく2つのタイプに分けられます。ひとつは、パラレルライターという(のが正式名称なのか分かりませんが)ライター自体の筐体に指しごみ口があって、そこにマイコンを差し込んで書き込むタイプ。もうひとつは、ISPと呼ばれるタイプのものです。
ISPはIn the System Programmingの略で、要はマイコンを回路に組み込んだ状態で書き込みできるものです。ISPコネクタという2×3のピンプラグを回路内に配置しておいて、ライターとはそこを介して書き込み手続きをします。いちいちマイコンをはずして書き込みをしなくてもいいので、断然こちらのタイプの方が良いような気がします。デバイス自体も前者よりも安いし。
さて、ISPタイプに決めたは良いものの、まだ選択肢はたくさんあります。まず、PCとの接続方式がシリアル接続やUSBなどあります。これは、USBの方が何かと便利でしょう。
ISPでUSB、ここまで絞ってもまだいろいろあります。Atmel社がだしている純正のものの他にも、サードパーティ製品も多数、自作する人もいます。サードパーティ製品の方が安いのですが、新機種への対応や動作保障などを考慮して、純正のものを買うことにしました。
AVRISPmk2
AVRISP mkII
マルツパーツで6000円でした。見た目も他のよりかわいくてグッドです。
ドライバは、接続してネット経由で探させると見つかったので特にダウンロードの必要はないみたいです。


総合開発環境
ライターが手に入ったら、次はソフト面の開発環境を整えます。開発環境にもいろいろあるのかもしれませんが、Atmel社から無料で入手できるAVR Studioを使います。2008年4月10日現在バージョン4.13が最新でした。何にもついてないAVR Studio 4.13が本体です。個人情報の入力を求められるので、面倒くさいけど書いてダウンロード&インストール。SP1とかSP2とかは、追加モジュールみたいなものっぽいので数字の大きい方だけダウンロードしてインストール。

Cコンパイラ
AVR Studioだけだと、開発はアセンブラ言語のみでC言語が使えないので、C言語用のコンパイラをインストールします。WinAVRというのがあるので、これをインストールしました。こちらも無料です。

以上で、一応環境は整いました。もちろん、ほんとにこれだけでは何にもできないので、次回はその他の細かいところをまとめてみようと思います。
カテゴリ: Gainer
投稿者: terada
初心者がAS3でGainerを扱いたい場合、GainerのサイトからFlash用のドライバとライブラリをダウンロードする方法では無理です。
というか、やめといたほうが良いです。

ここでダウンロードしたファイルの中に、「Actionscript3」というフォルダがあったり、Gainer本にも『onEnterframeとか、AS2とAS3で変更になった箇所を修正すれば使えます』と書いてはありますが、ちょこちょこ自分で修正していくやりかただと、時間がすごくかかるし結果として無駄になっちゃいそうな予感です。まぁ、僕がAS3はじめたばかりというのもあるのでしょうが。とりあえず、AS3も初めて、Gainerも初めてというような場合は、やめておいたほうが無難です。ちなみに、GainerのライブラリはAS3への対応はしないそうです(参考)。

では、代わりにどうすればいいか。

Funnelというのを使うのがよさげです。
サイトの説明によると「ソフトウェア・ライブラリとハードウェアからなるツールキット」らしいです。もともと、Gainerの開発者である小林さんが「Gainer2」という位置づけで開発を始めたものが、より汎用性を持たせるためにハードウェアとソフトウェアで切り分けて開発をされているプロジェクトです。まだ、開発途中段階っぽいですが、標準でAS3に対応しており、Gainerようのライブラリもあるようなので、これを試してみました。まだGainerほどのリソースはそろってない模様ですが、とりあえずAS3もGainerも初めての僕はこれでいくしかありません。(Gainerのライブラリを使うのと、入力値が違ったりするのが厄介ですが、しょうがない・・・)
ASDocはこちらにあります。
チュートリアルはないですが、こちらでダウンロードできるファイルの中に、AS3のサンプルがあるのでそれで勉強します。あと、ここのサンプルとか参考になりました。
Gainerより多少敷居は高いですが、ArduinoなどのGainer以外のハードへも対応しているので、スキルを身につければ今後も使えるんじゃないでしょうか。

以下、余談です。

実は今AS3、Gainerの他にもBox2DFlashAS3という物理エンジンも初めて使って作品を作っています。これもチュートリアルっぽいものが少なくて苦労しています。本家にリファレンスがないのが痛いです、一応、ASDocはここにあるんだけど、これだけではさっぱりです。
それにしても、物理エンジンの使い方が、考えていたものと全然違っていて(ランタイムで簡単に向きとか位置とか制御できるんだと思ってた・・・)苦労してます。この上さらにWOW-EnginePapervision3Dを使って3次元デビューしようなんて考えていた僕が間違っていました。ちょっとづつ扱えるようにしていきたいと思います。まずは、AS3とGainer!
カテゴリ: processing
投稿者: mio
前のエントリーで、jEditのインストールと、コードのカラーリングについて書きましたが、今回はjEditの便利な機能について。


■1 短縮入力

前回少し触れた、Abbreviations(短縮入力?アブリビエイション?)なんですがが、この機能は相当便利そうです。インストールの仕方は、ここ(英語)に書いています。一応、日本語でも解説しとくと、Windowsだと、

C:\Documents and Settings\{USERNAME}\.jedit

という名前のフォルダに、ダウンロードして解凍したabbrevsという名前のファイルを、置くだけ(上書きするだけ)です。ちなみに、僕は、何を勘違いしたか、マイドキュメントのフォルダの中に、.jeditというフォルダがあるのかと思って、数時間混乱してましたが、よーく見たら、Documents and Settingsの中のユーザフォルダ直下で、マイドキュメントフォルダじゃなかった。。。。のね。ということで、jEditをインストールした時点で勝手にできるっぽい、この.jeditというフォルダに、ダウンロードしたファイルを置くと、この機能が使えるようになります。

どんな機能かというと、例えば、

sm
って書いて、その後、スペースキーを押すと、
smooth();
に変換してくれたりします。

pr

println();
は結構使えるかも。

他にも
for#i#100#
で、
for(int i = 0; i < 100; i++) {

}
とか。
for文とか打つの面倒なときもあるので便利そうです。


この定義は後から自分で編集もできるので、自分がよく使うメソッドや、定型のフォーマットを作るとさらに便利になりそうですね。ちなみに、この変換を、どのキーでやるかは、Utilities->Global Optionsの中の、Abbreviationsという項目で、Space bar expands abbrevsというのにチェックを入れとくと良いっぽいです。ちなみに、ここで、フォーマットを足したり減らしたり、再編集したりできます。このGlobal Optionsというのが、要はPreferenceってことですね。


■2 タブとか

普通ですが、jEditは複数のタブ(というかペイン)を作って、複数のファイルを同時に編集することもできます。もちろん、別ウィンドウで開くのも可能です。で、このペイン増やしたり減らしたりするのは、Ctrl+1(ペイン1つに戻す)、Ctrl+2(縦に分割)、Ctrl+3(横に分割)って感じでショートカットがあって扱いやすいです。あと、各ペインの上のあたりに、ファイル名が書いてるバーがあるんですが、そこをクリックすると、最近使ったファイルのリストが出てきて、そこからファイル名選択するだけでそのファイルを開けたりします。この機能はさりげなく便利です。サクサク動くし。

画面はこんな感じ。
jEdit


ということで、WindowsでのProcessingのプログラミングは、当分jEditを使うことになりそうです。フリーソフトというのが良いですね。Macでも使えるし。HTMLのコーディングとかにも使いやすいかもしれません。これで仕事の合間(mioは仕事ではwin使ってます)に、ちょっとProcessingやってみっか!ってのができる環境が整いました。
カテゴリ: processing
投稿者: mio
Windowsユーザにこれは、わりとオススメです。
jEdit

前回、Eclipseを紹介しましたが、Eclipseは、基本、javaの開発っぽい感じになってしまうので、Processingの文法と少し変わってきます。(正しい表現じゃない気がしますが。。)例えば、PAppletクラスのサブクラスを使ってメインのdrawなどの処理を行うことになるので、書かなければいけないことが少し増えます。

↓こんな感じ
import processing.core.*;

public class Sketch071020 extends PApplet{
public void setup(){
size(200, 200);
stroke(155,0,0);
}
public void draw(){
line(mouseX,mouseY,width/2,height/2);
}
}


ProcessingのみだとこれだけでOKなものです。
void setup(){
size(200, 200);
stroke(155,0,0);
}
void draw(){
line(mouseX,mouseY,width/2,height/2);
}


なので、Eclipseで実行することを前提に書くのは、小規模なプログラムの場合面倒だったりします。で、もしかしたら、EclipseではProcessingを実行せずに、単にエディタとして使うという手もあるのかもしれませんが、Processing独自のメソッドなんかのカラーリングの仕方とかがちょっとよく分からなかったので、他にTextMateぐらいの感覚で使えるエディタが、Windowsにないのか調べてみました。(Eclipseでのカラーリングの仕方知ってる人いたら教えてください。)


そこで出てきたのが、jEditというオープンソースのプログラム用エディタ。
TextMateみたいに、TextMate側からProcessingを呼び出して、ファイルを実行するみたいなのは、できるのかどうか良く分かりませんでしたが、Processingのコードのカラーリングができて、画面も結構綺麗なので、良いかなと思っています。

↓画面はこんな感じです。
jEdit

コードのカラーリング方法は、
このProcessing用のコード・カラーリング設定ファイル(XMLファイル)をダウンロードして、Program Files->jEdit->modesというフォルダに突っ込む。で、このmodesというフォルダにある、catalogというファイルをエディタで開いて、

<MODE NAME="processing" FILE="processing.xml" FILE_NAME_GLOB="*.pde" />

という行を一行足す。

これでOK。

英語の解説は、以下のサイトに載っています。このサイトに載っている、ショートカットみたいな機能が相当便利そうなので、こっちも要研究ですな。
http://www.processinghacks.com/hacks/jedit

解説してくれているのは、Karsten Schmidt (aka toxi)さんという人で、Processingの使い手っぽいし、もしかしすると、jEditは結構良いのかも。Windowsだと。
http://toxi.co.uk/


■外部エディタ使う場合

preference
↑このように、
Use external editorにチェック入れましょう。
すると、Processingの編集画面では編集できなくなって、混乱がなくなります。
ちなみにMacのTextMateだとファイル保存すると、TextMate側で読み込みなおしたりしてくれるので、このチェックを入れなくても良いっぽいですが、他でやる場合はチェックを入れておいたほうが良さそうです。
カテゴリ: processing
投稿者: mio
ずっと前から気になってた、Eclipseをついに使ってみました。Processing用のテキストエディタについては、MacではTextMateという気の利いたテキストエディタがあったのですが、Windowsはどれが良いのか分からないというのもあって、Eclipseを試してみようと思いました。Eclipseというと、レベルの高いプログラマーが使う、超レベルの高いソフト、みたいなイメージだったんですが、意外と簡単に使えることが発覚。Processingのフォーラムをがんばって解読してインストールしました。

以下、日本語且つ画像付きという超分かりやすい解説を作ったんで、僕みたいに英語の文章を読むのに50メートル走を全力で走りきるぐらいのエナジーを必要とする人は是非ご覧ください。ちなみに、Mac版のEclipse使いたい人は、英語ですがこちらが画像付きで親切かも。


まずは、Eclipseをダウンロードしましょう。
http://www.eclipse.org/
http://www.eclipse.org/downloads/
僕は、Eclipse IDE for Java Developers - Windows (78 MB)というのをダウンロードしました。(これで問題なかったです)他のサイトだと、eclipse-SDK-3.1.2-win32.zipとか、JavaSDKとか書いてたんですが、多分これのことかと。違ったら教えてください。

インストールの仕方はここが画像つきで分かりやすいかな。

で、Eclipse起動しましょう。
以下、画像付きで、EclipseでProcessingのコーディングと、実行する方法となります。


Eclipse起動
ばーん。起動ぐらい猿でもできるけど、相手がEclipseだけに、起動しただけで感動してしまった。。

Eclipse_Processing
起動したらこんな感じ。(もしかしたら別の画面だったかも)ここから、Processingのプロジェクトを作って、Processingのライブラリを読み込んだりして、ProcessingをEclipseから使えるようにします。

» 続きを読む

カテゴリ: processing
投稿者: mio
関数の中のローカル変数を別の関数の中から参照できないのは知っていましたが、関数の中でもif文の中で定義した変数をif文の外から参照しようとするとエラーになるみたいです。また、関数の中で変数を定義する場合は、その値が使われる前に必ず値を入れておかなければ、エラーになります。(エラーとなって、実行できません)

boolean a = true;
void func1()
{
if( a==true)
{
int b = 1;
}
println( b );
}

これはエラー。
FLASH(AS2)とかだと、if文の中を通らなかったときに、undefinedとしてくれるけど、Processingの場合は、ちょっと厳しいみたいです。
要は、絶対undefinedにはならないようにしないといけないみたいです。
また、関数の外で変数を定義するときは関数の名前だけでOKですが、関数の中で定義するときは、同様の理由で、その変数が使われる前に必ず値を入れておかないといけないようです。

つまり、

void func1()
{
int b;
println( b );
}

はもちろんエラーとなります。
また、以下の場合もエラーです。
void func1(){
boolean a = true;
int b;
if( a==true)
{
b = 1;
}
else if(a==false)
{
b = 2;
}
println(b);
}

ただ、else ifじゃなくて、elseにするとエラーは出ません.
void func1(){
boolean a = true;
int b;
if( a==true)
{
b = 1;
}
else
{
b = 2;
}
println(b);
}

以上、if文の中で変数の値を入れる場合について書きましたが、そこまで考えるのは面倒なので、なるべく、最初に初期値も入れてしまいましょう。

以下のような感じで。
void func1()
{
int b=1;
println( b );
}

または、
void func1()
{
int b;
b=1;
println( b );
}



■おまけ

以下のようなことをしても意味はないですが、
定義した変数を参照しないプログラムになっていれば、
エラーは出ないようです。
void func1()
{
int b;
}
カテゴリ: processing
投稿者: terada
Processing標準のIDEが使いにくいのでTextMateを使ってみることにしました。
徳井さんの記事とおり、TextMate本体とGetBundleをインストールし、BundleにProcessingを追加することはできました。でも、PDEファイルを編集してショートカットを使ってみると、古いバージョンのProcessingが立ち上がってしまうなど上手くいきませんでした。調べてみると、Processingのバージョンによってアプリケーション名や呼び出しのスクリプトが異なるようで、TextMateのBundle Editorで修正作業が必要でした。以下は、Processing 0125 BETA用です。

まず、TextMateで「Bundles > Bundle Editor > Show Bundle Editor」からエディタを開きます。そして、Run In Processingのコマンドを以下のように変更します。

-
Save: Current File
Command(s):
osascript <<EOF
tell application "Processing 0125" to run
tell application "Processing 0125" to activate
tell application "Processing 0125" to open POSIX file "${TM_FILEPATH}"
delay 1
tell application "System Events" to tell process "Processing"

keystroke "r" using command down
end tell
EOF
Input: None
Output: Discard

Bundle Editorの設定図
-

以上でおしまい。
これで、ファイルを編集して「コンマンド+R」すれば、Processingが立ち上がり、ファイルが開き(すでに開かれている場合は再読み込みされます)、実行されるところまで自動的に行われます。Processingの立ち上がりに多少時間がかかるものの、まま快適です。TextMateはお試し版だけど、ActionscriptやPHPにも対応してるし、よさそうなら購入しようと思います。

*追記*
Processing側でエラーが出た時に、直接Processingの方で書き換えてセーブすれば、TextMate側でもちゃんとその修正を読込み直してくれるのが手間いらずですごくいい!

<参考URL>
TextMate
GetBundle
TextMate日本語入力プラグイン
Processing用のエディタ(徳井直生さん)
Processing.org Discussion : Processing + Textmate

» 続きを読む

2007/10/06: Max/MSP 5

カテゴリ: max/msp/jitter
投稿者: mio
↓新機能を見れるムービー
http://www.cycling74.com/story/2007/10/5/91222/9559

非常に楽しみになってきた。

相当大きな変更があるとのプレスリリースがあったので、
何か勉強しなおさないといけないのかと思っていましたが、
そういうわけではなさそう。

Presentationモードというのが素晴らしい。
今まで面倒だった作業がこれでなくなる。
あと、Undoが今までは1回しかできなかったのが、
何回でもできるようになるらしく、それも素晴らしい。

jitterの描画処理がどうなるのかも楽しみ。
ProcessingやQCでしかやりにくかったことが、
jitterだけで簡単にできるようになったらいいんですけど。

後は、酷いと言われている音質も良くなると良いなぁ。

Max/MSP5が出るころには、
新しいMacが欲しいところ。