我今年开始迷上养肉肉了,可夏天死了一大半:有的水多了而烂根,有的水少了干死了。
后来才想起利用arduino测土壤温度,就少有肉肉死去了-----也可能气温有下降一点吧。
成品如下,总成本才十多块钱。程序如下。
[mw_shl_code=cpp,true]
int ASignal = A6;
int val=0;
int ledPins[] = {11,9,7,5,3,4,6,8,10}; // 对应的led引脚
void setup() {
Serial.begin(9600);
pinMode(ASignal, INPUT);
pinMode(ledPins[11,9,7,5,3,4,6,8,10], OUTPUT);
digitalWrite(ledPins[11,9,7,5,3,4,6,8,10],LOW);
}
void loop() {
/*
val=analogRead(A6); //val值从potPin信号口读取
Serial.print("Moisture Sensor Value:");
Serial.println(val);
delay(100);//延时1S
*/
int sensorValue = analogRead(ASignal);
if(analogRead(ASignal) >=900)
{
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
delay(10);
}
if(analogRead(ASignal) <900 && analogRead(ASignal) >=807 )
{
digitalWrite(9, HIGH);
delay(10);
digitalWrite(9, LOW);
delay(10);
}
if(analogRead(ASignal) <807 && analogRead(ASignal) >=714 )
{
digitalWrite(7, HIGH);
delay(10);
digitalWrite(7, LOW);
delay(10);
}
if(analogRead(ASignal) <714 && analogRead(ASignal) >=621 )
{
digitalWrite(5, HIGH);
delay(10);
digitalWrite(5, LOW);
delay(10);
}
if(analogRead(ASignal) <621 && analogRead(ASignal) >=528 )
{
digitalWrite(3, HIGH);
delay(10);
digitalWrite(3, LOW);
delay(10);
}
if(analogRead(ASignal) <528 && analogRead(ASignal) >=435 )
{
digitalWrite(4, HIGH);
delay(10);
digitalWrite(4, LOW);
delay(10);
}
if(analogRead(ASignal) <435 && analogRead(ASignal) >=342 )
{
digitalWrite(6, HIGH);
delay(10);
digitalWrite(6, LOW);
delay(10);
}
if(analogRead(ASignal) <342 && analogRead(ASignal) >=249 )
{
digitalWrite(8, HIGH);
delay(10);
digitalWrite(8, LOW);
delay(10);
}
if(analogRead(ASignal) <249 )
{
digitalWrite(10, HIGH);
delay(10);
digitalWrite(10, LOW);
delay(10);
}
}[/mw_shl_code]
就是将测试片不插入水或土壤时的阻值设定为第一个LED亮,将测试片完全插 水时的阻值设定为最后一个LED亮,其间的阻值均分为九段分别对应一个LED。
别外说明一点:用了这个arduino土壤温度计才真正认识到一个惊人的常识:种肉养花要用雨水。
如最后的照片所示,雨水的阻值不到自来水的一半。
当初我调试程序时用的是桶装水(用电烧水壶滚过的),插入测试片时设定为最后一个LED亮,但后来将测试片完全插雨水测却只是正中的那个LED会亮。如果是自来水,测试片插入一点点也是最后一个LED亮.
后来又买了小米花花草草检测仪,用了一次就不用了-----如后面照片所示:测试点太大拔出来的会将土拉出来(测试点厚4.6mm,而PCB厚不到1.6mm)
|