Blinkから始まるArduino入門 その5 光ればよいと考えるか
もし、LEDではなくモータがつながっているとします。Arduino UNOに電源をつなぐと次のように物事が進みます。
- マイコンATMega328に電圧が加わって、ある電圧以上になると、内部でパワーオン・リセット・シーケンスが始まり、内部が初期状態になる
- その後、特定のメモリ・アドレスがプログラム・カウンタにロードされ、プログラムの実行が始まる
- 最初に実行されるアドレスにはブートローダ(ファームウェア)の先頭にジャンプする命令が書かれている
- ブートローダは、Arduinoの機能に合わせた各端子の初期設定をしていく
- 実行プログラムがロードされていると、その先頭にジャンプし、ユーザの作ったスケッチが動き始める
この最後の部分で、ユーザはポートの入出力を設定していきますが、それ以前にポートがどういう状態になるかは、知っておかないといけません。
もし、電源が入っているモータのつながっているポートを出力に初期化し、HIGHの出力でモータが回るように設計したとします。スケッチが動くまでの間にHIGHになることがあれば、大変危険です。
●各端子の立ち上がり時の電圧変化を観測
各ポートには何も接続しない状態で、DMMを使って電源ONから約30秒電圧をロギングします。スケッチは新規でファイルをオープンして、setup(){} と loop(){} に何も書かれていないものを書き込みました。DMMのGND端子はグラウンドが二つ並んだ一方に接続しました。
0番(UART HIGH)
13番(内部LED接続あり。一瞬HIGHのちLOW)
●pinModeを設定
setup()内で0番から13番、A5からA0までをOUTPUTに設定しただけのスケッチを動かしました。
UARTの0番と1番は2秒ほどHIGHですが、そのあとLOWになります。
2番から12番はずっとLOWです。
LEDがつながっている13番は瞬間HIGHになった後LOWになります。
A5とA4(SDAとSCLとつながっている)、A3からA0は2番から12番と同じ波形でした。