goo blog サービス終了のお知らせ 

ナスダストラップ

日々の生活で、見たこと聞いたこと感じたこと考えたことをそこはかとなく書き綴るブログ

第6クロック「考えるな!感じるんダ!」

2009年06月21日 | Arduino実験室
神:次はアナログ入力を使うぞ、今までアナログ出力もしくはデジタル出力しか使ってなかっただろ。

  普通、組み込み機器ってのは入力と出力がある。
  例えばTVリモコンを考えると、ボタンを押すのが入力でそれに対応して赤外線が出るのが出力だ。

  入力信号を読み取って出力に反映させられれば、応用の可能性がぐっと広がる。

僕:はぁ。

神:Arduinoは入力ピンが6つあって0~5Vまでの電圧を読み取ることができる。

  とりあえずinPin(入力ピン)の電位をモニターして閾値を超えたらONOFFするようにすればいい。

  やってみろ。

僕:YES GOD!!

  inPinの電位が4Vを超えたらLEDのスイッチがONOFFするようにしてと・・・

  おお?、何もしてないのにLEDが勝手に点滅する。

  きっと静電気を拾っちゃうんだな。
  で、inPinの電位が大きく動いてしまうからそれでONOFFしてしまうと。

  ということはつまり、静電気センサーが デ キタ━━(゜∀゜)━━ッ!!




  電気スタンドのタッチセンサーってこれかな、
  静電気を感知するっていまいちピンとこなかったけど、自分で作ると納得できる。

  神様、また一つつまらぬことを理解してしまいました。

神:安心しろ、学ぶべきことは無数にある。
  俺みたいに悟るぐらいやれ。

  ほら、新しいパーツをやる。

可変抵抗


僕:おっと、可変抵抗GET!!

神:ボリュームを回すと抵抗値が変化するのが可変抵抗だ。

  これで何が出来る?

僕:LEDと直列に可変抵抗を配置すると、ボリュームで明るさを調節できますね。

神:そうだ、でもそれじゃつまらんな。
  可変抵抗を使って何か他のものを作れ。
  おっと、inPinも使えよ。

僕:・・・そうか、入力ピンと可変抵抗を使えば、外部からプログラム内部の数字をいじれるわけだ。
  例えばボリュームとdelay関数の遅延時間を連動させるとか・・・

  ・・・
  ・・・・・
  ・・・・・・・・・・・・・・・・・・・デ キタ━━(゜∀゜)━━ッ!!



神:このテクニックは便利だからよく覚えておけ。

第5クロック「揺らめく光リ」

2009年06月17日 | Arduino実験室
神:PWMが使えるようになればLEDの光の強さを制御できるぞ。

僕:あぁ、なるほど。

  ・・・
  ・・・・・
  ・・・・・・・・・・・・・・・・・・・デ キタ━━(゜∀゜)━━ッ!!



神:何だこりゃ?

僕:「ろうそくえみゅれーた」です。

神:(´_ゝ`)フーン、でも点滅が不自然だな。

僕:ナンダッッテー!!

  確かに、単純な乱数列で点滅させてるからなぁ。

  点滅アルゴリズムはろうそくえみゅれーたの要、ここで妥協してなるものか!

  1/fゆらぎを再現してくれるわ!

神:ムダなこだわりはほどほどにしろよ。

僕:・・・
  ・・・・・
  ・・・・・・・・・・・・・・・・・・・デ キタ━━(゜∀゜)━━ッ!!

  食らえ!これが俺が血眼になってネットから拾ってきたアルゴリズムだ!!

神:結局、拾いもんかい。





こんなアルゴリズム
---------------------------------------------------------------
X(t)<0.5の時
X(t+1) = X(t) + 2 * X(t) * X(t)
X(t)≧0.5の時
X(t+1) = X(t) - 2 * (1-X(t)) * (1-X(t))
---------------------------------------------------------------


  あんま変わんなくねーか。

僕:んなことないですよ、改善してます。
  小さな変化は小刻みに、大きな変化は稀にという1/fゆらぎのエスプリを感じませんか?

  あぁ、すばらしい。

神:何かよく分からんがおめでとう。

第4クロック「合言葉は電車と同ジ」

2009年06月13日 | Arduino実験室
僕:神様、基板にPWMって書いてあるピンがありますけどこれは何ですか?

神:それはPWM(Pulse Width Modulation)出力が出来るという意味だ。

  PWMと書かれたピンでは0VからUSBからの供給電圧である5Vまでの任意の電圧を出力できる。

僕:どうやってそんなことができるんですか?
  DC-DCコンバータ?

神:たとえ話をするぞ。
  ONとOFFしかないヒーターで適温を維持するためにはどうすればいい?

僕:温度が下がればON、適温になればOFFというONOFF操作を繰り返せばいいんでしょう?

神:その通り、実はPWMもそれと同じことをしている。
  ON(5V)とOFF(0V)を高速で繰り返して中間の電圧を作るわけだ。

  Arduinoの場合490分の1秒が一単位で、ONとOFFが時間を分け合う。


PWM制御



  ONの比率が大きければ高い電圧が出力され、OFFの比率が大きければ低い電圧が出力される。
  単位時間分のON時間をデューティ比という。

  PWM制御はDCモーター制御などで重要だ。

  電車にはPWMを更に高度にした制御が使われている、VVVFなどと言うな。

僕:なるほど電車と同じなのか。

  電車の床下にはArduinoがいっぱいあってせっせとモーターを制御しているんですね。


神:神は腕を振らない(※ノリツッコミしない)、覚えておけ。

第3クロック「LED発光ス」

2009年06月09日 | Arduino実験室
なんやかんやあって開発環境のインストールと
Arduinoとパソコンのリンクアップが完了。

いよいよ何か作る。


僕:まぁ見てて下さいよ。

  僕はこれでも長野の山奥で6年も修行を積んだんです。
  何の修行をしたかはもう忘れましたが。

  ・・・
  ・・・・・
  ・・・・・・・・・・・・・・・・・・・デ キタ━━(゜∀゜)━━ッ!!




  光った!LEDが光った!

神:そんなに騒ぐな。
  LEDは光るためにあるんだ、光らなかったら困る。

僕:思いのほか簡単に操れたもんで感動しました。
  スケッチだってこんなに短いんですよ。

---------------------------------------------------------------
int ledPin = 13;

void setup() {
 pinMode(ledPin, OUTPUT);
}

void loop() {

 delay(3000);           // プログラムスタートから3秒間の遅延処理
 digitalWrite(ledPin, HIGH);  // 13番ピンに5Vの電圧を出力

}
---------------------------------------------------------------

神:じゃ、このスケッチについて説明してみろ。

僕:このスケッチでは13番ピンに約5Vのデジタル出力を行い
  13番ピンとGNDに接続したLEDを光らせました。
  プログラムの開始から点灯まで3秒間待つように遅延処理が入っています。

  ちなみに13番ピンは基板上のLEDにもつながっていてそれも同時に点灯しています。

神:よろしい。
  パーツへのダメージなどを考えると、もっとちゃんと回路を作る必要があるんだが、
  とりあえずはいいだろう。今後も動けば良しとする。
  
(良い子はLEDと直列に適当な抵抗をつないで電流をLEDの規格以下にしてね)

  もっと工夫してみろ。

  delay()関数でなんか出来ないか?


僕:はい、ONとOFFの間にdelay()を入れると点滅が実現できますね。

  ・・・
  ・・・・・
  ・・・・・・・・・・・・・・・・・・・デ キタ━━(゜∀゜)━━ッ!!




神:申し分ない。

  この一光(ひとひかり)は俺にとっては何の意味もないが
  お前にとっては大いなる飛躍だ。

  この感動を忘れるな。

第2クロック「Arduino現ル」

2009年06月05日 | Arduino実験室
妙にお役所仕事な組み込みの神様に取り憑かれた僕。
電子工作自体に異存はないが、神様のキャラが気になる。


僕:課題が与えられるんですよね?

神:そうだ。
  お前に与えられる課題、それは俺を感動させる組み込みシステムを作ることだ。

  そのために素晴らしい道具を用意したぞ。

  喜べ、これはArduinoというイタリア製の電子基板だ。
  略すと「イタ電」だ。

僕:イタ電を喜べと言われても・・・

  でもまぁ、なんか面白そうですね。
  思いのほか小さい基板だ。

Arduino Duemilanove


神:Arduinoは入出力ポートとCPUを備えた小さなコンピューターで、
  容易に組み込み開発が出来る。

僕:今更ですが、組み込み開発って何ですか?

神:お前たちを取り巻く様々な機械、テレビ・洗濯機・冷蔵庫・携帯電話・自動車・・・
  これらにはモーターやLEDを制御するためのソフトウェアが組み込まれている。
  それが組み込みシステムだ。
  
  必要な機能を実現するためにハードウェアを設計し、それを制御するソフトウェアを作る。
  そしてハードとソフトを擦り合わせ完成させる、それが広義の組み込み開発だ。

  それより、お前はCは使えるのか?

僕:C言語ですか?
  少しは・・・高校の時かじったので。

神:よろしい。
  ArduinoはC言語ベースの開発環境を使ってプログラミングする。
  Arduinoの世界ではプログラムのことをスケッチと呼ぶ。

僕:どうやってプログラムをArduinoに送るんですか?

神:USBだ。
  USBからはArduinoを動かす電源も得るので外部電源を用意する必要がない。
  だが、外部電源の入力端子もあるから
  外部電源を接続してスタンドアローン状態で動かすこともできる。

僕:なるほど、ってことはUSBの制限で出力は5Vの2.5Wまでか。

神:そのほかの道具としてブレッドボード・テスター・はんだセット・各種電子部品
  があるといいんだが、あるか。

僕:テスターとブレッドボードはあります。
  (まさか大学入学前におじさんからもらったブレッドボードが役に立とうとは)

テスターとブレッドボード


神:他の必要な道具は俺が用意する。

  さあ!作れ!

僕:(゜д゜)・・・・・・えっ?

神:俺が一から十まで教えたら意味がないだろ。
  俺は少し助言するだけで実作業は全てお前が行うんだ。

僕:と言われても・・・

神:まずはLEDだな。
  LEDを光らせることこそ組み込み世界の「Hello, world!」だ。

第1クロック「神降臨ス」

2009年06月01日 | Arduino実験室
ある日、僕はニコ動で電子工作をしている動画を見て感心していた。


僕:SUGEEEEEEEE!!

  なにコレ、こんなことできんの?

  超すげーし。

  俺も組み込みいじりてぇ。


ピンポーン!
その時、玄関のチャインムが鳴った。

ドアを開けると一人の男が立っていた。
男は名乗った。


男:俺は組み込みの神だ。

  お助け神様事務所から派遣されてきた。

僕:(゜д゜)・・・・・・。

  ええと、確かこういうときって女神さまが
  派遣されてくるんじゃありませんでしたか?

神:組み込み担当の女神はいないから俺が来た。

僕:うそ・・だってスクル、いやなんでもないです。
  願いが一つ叶うんですよね?

神:いや、課題が一つ与えられる。
  おい、ちょっとま・・

僕:お引き取り下さい。


たちの悪いいたずらか宗教だ。
僕は扉を閉めて部屋に戻った。
そこには見覚えのある一人の男が立っていた。


神:もう契約は成立してる。
  お前が契約を履行しない限り俺は帰らない。

僕:契約した覚えがありません。
  そもそも何の契約ですか。

神:お前は「組み込みいじりてぇ」と願ったな。
  事務所での願いの受理をもって契約成立となる。

  お前は願い通り組み込みをいじる、その代わり課題が与えられる。
  課題をお前がクリアーすれば契約終了だ。

僕:クーリングオフとかは・・・

神:期限切れだ。願ってから10秒以内に訂正してもらう必要がある。
  契約不履行には大きなペナルティがある。
  運気がガタ落ちになるぞ。

  ここは諦めて勉強しようじゃないか!
  お前があんまりヘッポコだと俺にもペナルティがあるんだ、しっかりしろよ。


僕:(゜д゜)・・・・・・。


  パトラッシュ、今日はなんか憑かれたよ。

導入

2009年05月31日 | Arduino実験室
Arduino(アルドゥイーノ?)という容易に組み込み開発が出来るボード
を買ったので遊ぶ様子をこのブログに物語形式で書き込んでいこうかと思います。


題して「Arduino実験室」


「僕」こと僕が神との対話を通して
組み込み開発を学ぶという感動超大作になる予定です。