M3の準備および、クレポに向けて、作業を停止していたArduinoの作業を再開。する前に、とりあえず「おさらい」しないとね。っていうので、以前も成功している、MIDIを使ってEA1を鳴らしてみた。
・・っつても、ただ鳴らすだけなら前のスケッチそのままロードすりゃいいので、もうちょっと難易度上げて。ここまで作ってきたクラスの実装も試してみた。 ・GMidioutDummyクラスを使った、midi出力のデバッグ ・AnalogValueクラスを使ったアナログ入力。 どちらも「実装を簡単にする」事を念頭に作ったので、簡単に実装できる。・・・・・はずだったんだけど、AnalogValueはちょっとコケた。っつーのも、AnalogValueクラスのコンセプトに無理があったのだ。 AnalogValueクラスのコンセプトは「int型と同じ様に使えて、アナログ特有のブレをなくす」っていうもので、このために値の設定をoperatorで実装していた。まあつまり「val = analogRead(0);」とさえやっておけば、後は自動で過去の値との平均値を取ってくれるんじゃね?ぐらいに思っていたんだけど、考えてみたら代入なんて、analogRead以外でも使う事があるわけで。それらの値で平均採ってもまともな数値になるわけねえよな。とかそういうアレ。
こんな感じでソースを書いちゃうと、もうまともに動く訳がない。結局、代入用と計算用に2つ値を用意する事になる
でももうこんな事するなら、AnalogValueにget関数でもつけた方が安全だって事になる。トホホー。 ついでに、今のAnalogValueは、過去4回の平均値を採っているんだけど、これが反応速度に関わってきて(あたりまえだけど)思いの外具合が悪い。問題がないなら平均値は取っちゃった方がいいのかな。これもいろいろ考えた方がいいなあ。 ツイート Recent Entries from Same Category
|
コメント
HOTARU-YA(2009/10/22 3:25)
この手のプログラミングあんましたことないですけど、単なる平均でなくて、加重平均にしたら多少反応はマシになったりしません?新しい値は重く、古い値は軽く。
ここう(2009/10/22 22:27)
>螢屋さん
加重平均か。。それもアリかなって気もしますが、今回の場合、僕が勝手に「これは平均で行くべきだ」って先走りしたものの、結果としては「平均は不要かも」という状況です。加重平均とっても、数値のブレは防げなさそうですし。。。 |