« 380モーター?? | トップページ | 高校生車座フォーラム »

2010年11月11日 (木)

I2C通信によるArduinoと外部EEPROMの接続成功&PSoCの超音波センサの想像

I2C通信によるArduinoと外部EEPROMの接続に成功しました。使用したEEPROMはマイクロチップ社の24LC64です。

EEPROMのデーターシートを読んでがんばってプログラムを作ったのですが最初全く動きませんでした。
ひとつづつうまく動かない原因となるものを探していったのですが、まずは、EEPROMのアドレスはきちんと合っているということは確認できたのですが、うまく動かない原因はなかなか見つかりませんでした。
いろいろ検索していると、あるyou tubeの動画を見つけました。
自分のプログラムと照らし合わせてみると、delay(5);を送信と受信とかの間に挟んでいないことに気づき、半信半疑でやってみたら成功しました!!
たったそれだけなのに原因を見つけるのは大変です。
ただ、なぜdelayを入れなければいけないのかはまだ分かりません。

ロボットのデータロガーが取れたらまあ便利かなと思ってやったんですが、モーターもIRセンサーも方位センサーもまったくできていないのに僕はいったい何を目指しているのでしょうか・・・? 早くIRセンサーとかやらないと間に合わない・・・

ちなみにArduinoのWireライブラリは再度開始条件は使用できないみたいなのですが、停止条件を出したあと、何ミリ秒か空けて、開始条件を出せばEEPROMのデーターは読み込めるようです。

超音波センサの話ですが、PSoCマイコンで距離を計算してArduinoに送るのはやめようと思います。PSoCは難しいです!というわけでArduinoからPSoCに送信のタイミングを送信してPSoCは超音波が返ってきたと感知したらArduinoに送る、つまり、Arduinoで時間を計測して距離をだそうと思います。
メインArduinoとPSoCの超音波センサとの間にはスレーブArduinoを別に用意してそれに計算させようと思います。

Arduinoはスタートできるタイマーは僕が探した限り見つからなかったのですが、プログラムを開始(つまり電源を入れたとき)からの時間をμ秒で返してくれる関数があるので(micros)それを使おうと思います。最小分解能が4μ秒なので、音速340m/sのとき1.36mmの分解能で距離が測れるはずです。

まあ要するに難しいPSoCを頑張るよりもできるところはArduinoに任せてしまおうということであります。

« 380モーター?? | トップページ | 高校生車座フォーラム »

Arduinoマイコン」カテゴリの記事

PSoCマイコン」カテゴリの記事

コメント

メインarduinoと超音波センサを直結することは可能なのですか?

Arduinoに超音波スピーカーとマイクを直結するのは不可能だと思います。
僕が今想像しているのは
PSoCの役目:その①Arduinoから「超音波を発振しろ」という命令が来たらスピーカーに40kHzの発振を与える。
PSoCの役目:その②:超音波マイクからの信号を増幅、フィルタリング、2値化して、0もしくは1の信号で返す。
つまりは、増幅とかの回路的な部分はPSoCに任せて、Arduinoで時間を測ろうということです。今までのPINGと似ているかも知れません。
僕が以前、PSoCで時間も測ってミリメートル単位に直してからArduinoに送ろうと想像していました。でもPSoCで時間を測るのはなんだか難しく面倒くさくなったので、このように時間計測はArduinoに任せようと思いました。

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1389908/37627992

この記事へのトラックバック一覧です: I2C通信によるArduinoと外部EEPROMの接続成功&PSoCの超音波センサの想像:

« 380モーター?? | トップページ | 高校生車座フォーラム »