鉢植えの水分を検出するための装置とそれを動かすためのプログラムを作った(Arduino, Head First C)

『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という数字は、鉢植えに水を供給して、だいぶ乾いた状態になってから点灯するという数字である。まあ、こんなもんだと思う。