『Head First C』には、Arduinoを使った電子工作の配線図が載っている。
しかし、肝心のプログラムコードは、考え方が書かれているだけで、
コードは読者が自分で考える必要がある。

おもしろそうなので、Arduino UNO 3 をアマゾンで購入した。

しかし、コードの書き方、つまり、Arduino IDE の使い方がわからないので
手も足も出ない。

ネットにも日本語の情報があるのだが、わかりにくい。

結局、オライリーの『Arduinoをはじめよう 第3版』を手に入れて読んでみた。

これが一番わかりやすかった。オームの法則もすごくていねいに書かれてある。

arduino の配線

|------ ブレディンボード ---|---- auduino ----------|-------- 鉢植え ----|
c5 --------------------------------- 5V
b5 ------------------------------------------------------------- 赤
b10 ------------------------------------------------------------ 緑
c10 ----[10KΩ抵抗]---- c15
d10 -------------------------------- A0
                        d15 -------- GND
                                     D13 --+
                                           + LED
                                     GND --+

     +--------------------------------------------------------------------+
     |                                                                    |
     |                                                                    |
     |          +--------------------------------------------------+      |
     |          |                                                  |      |
     |          |                                                  |      |
     +          +                                                  |      |
     +          +--- 10KΩ ---+                                    |      |
     |          +            +        +-- LED --+                  |      |
     |          |            |        |         |                  |      |
     |          |            |        |         |                  |      |
     5V         A0          GND      D13       GND                 緑    赤
                |                     |                            |      |
                |                     |                            |      |
              INPUT                 OUTPUT                         釘    釘

Arduino IDE プログラムコード

// water_censor
// Head First C p210

const int LED = 13;
const int CENSOR = A0;
int i = 0;

void setup() {
  // put your setup code here, to run once:
  pinMode (LED, OUTPUT);
  pinMode (CENSOR, INPUT);  
}

void loop() {
  // put your main code here, to run repeatedly:
  i = analogRead(CENSOR);
  delay(10);
  if (i < 250) {
    digitalWrite(LED, HIGH);
  }
  else {
    digitalWrite(LED, LOW);
  }
}
Arduinoへの配線
左から、A0、GND、5V。
ArduinoにLEDをつけた
LEDの長い足をD13に、短い方をGNDに差し込む
左の、c5が、Arduinoの5Vにつながっている。b5が鉢植えの釘につながっている。
真ん中の向こう側から。d10がArduinoのA0ピンにつながっている。c10には10KΩの片側がつながっている。b10は鉢植えのもう一つの釘につながっている。
右の向こう側から。d15がArduinoのGNDにつながっている。c15には10KΩの片側がつながっている。

調整が必要な部分

コード中
if ( i < 250 ) { digitalWrite( LED, HIGH ); }
とあるところで、
CENSORからの値が i に入っているのだが、
この数字が大きいほど、水分が残っていてもLEDが点灯する。数字が小さくなると、水分がだいぶ抜けないと点灯しない。

この250という数字は、鉢植えに水を供給して、だいぶ乾いた状態になってから点灯するという数字である。まあ、こんなもんだと思う。