Blinkから始まるArduino入門 その5 光ればよいと考えるか

 もし、LEDではなくモータがつながっているとします。Arduino UNOに電源をつなぐと次のように物事が進みます。

  • マイコンATMega328に電圧が加わって、ある電圧以上になると、内部でパワーオン・リセット・シーケンスが始まり、内部が初期状態になる
  •  その後、特定のメモリ・アドレスがプログラム・カウンタにロードされ、プログラムの実行が始まる
  •  最初に実行されるアドレスにはブートローダ(ファームウェア)の先頭にジャンプする命令が書かれている
  •  ブートローダは、Arduinoの機能に合わせた各端子の初期設定をしていく
  •  実行プログラムがロードされていると、その先頭にジャンプし、ユーザの作ったスケッチが動き始める

 この最後の部分で、ユーザはポートの入出力を設定していきますが、それ以前にポートがどういう状態になるかは、知っておかないといけません。

 もし、電源が入っているモータのつながっているポートを出力に初期化し、HIGHの出力でモータが回るように設計したとします。スケッチが動くまでの間にHIGHになることがあれば、大変危険です。

各端子の立ち上がり時の電圧変化を観測

 各ポートには何も接続しない状態で、DMMを使って電源ONから約30秒電圧をロギングします。スケッチは新規でファイルをオープンして、setup(){} と loop(){} に何も書かれていないものを書き込みました。DMMのGND端子はグラウンドが二つ並んだ一方に接続しました。

0番(UART HIGH)

1番(UART HIGH)

2番(LOW)

3番(LOW)

4番(LOW)

5番(LOW)

6番(LOW)

7番(LOW)

8番(LOW)

9番(LOW)

10番(LOW)

11番(LOW)

12番(LOW)

13番(内部LED接続あり。一瞬HIGHのちLOW)

GND

Aref

SDA(LOW)

SCL(LOW)

A5(LOW)

A4(LOW)

A3(LOW)

A2(LOW)

A1(LOW)

A0(LOW)

Vin

GND

5V

3.3V

Reset

IOref

名無し

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番と同じ波形でした。

前へ

距離を正確に測る その3 レーザーVL53L1X

次へ

Blinkから始まるArduino入門 その6 リレー