電音の工場ブログ

趣味の電子工作を中心としたブログです.音モノの工作が多いです.

失敗した話

失敗した話

RTC周りはtokoyaさんのこちらのスケッチ(no title)を流用することで手を抜いて、CdSの値を読み取ってPCに送信するスケッチができました。

約20分でできました(PuTTYダウンロードしてインストールした時間も含む)。さすがお気楽プログラミング環境。

仕様は、

  • 一定時間でRTCからArduinoへINT0割り込みを掛け、
  • INT0のISRにアタッチされた関数でフラグを立てて、
  • Loop()内でフラグをポーリングして、analogReadしてADC値とRTCの時刻データをUARTで送信

するというもの。

で、私のArduinoの理解不足からハマッた点がふたつありました。

INT0のピンを「入力、プルアップあり」にし忘れた
attachInterupt()関数はそこまでやってくれないのですね。そりゃまぁそうか。
アタッチされた関数内でRTCの読み出し関数を呼んだら動かなかった
きっとWireライブラリ内でTWIの割り込みを使っていて多重は不可なんでしょう。

Arduinoデバッグできないし*1、内部動作に当たるような問題に刺さったらなかなか解決がたいへんそうです。あまりArduino道を外れないようにするか、凝ったことはライブラリとして隠蔽するのが良さそう?

*1:いや、シリアルでターミナルに送って変数を確認すればできないわけではないが…