养多肉的帮手 arduino 土壤湿度计-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 23219|回复: 19

养多肉的帮手 arduino 土壤湿度计

[复制链接]
发表于 2016-9-21 14:33 | 显示全部楼层 |阅读模式
我今年开始迷上养肉肉了,可夏天死了一大半:有的水多了而烂根,有的水少了干死了。
后来才想起利用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)
1.JPG
2.JPG
3.JPG
4.JPG
发表于 2016-12-9 21:41 | 显示全部楼层
应用于生活!好棒!
发表于 2016-12-13 19:53 | 显示全部楼层
加个水泵自动调节会不会更好一点呢
 楼主| 发表于 2016-12-14 08:21 | 显示全部楼层
幸福8快乐 发表于 2016-12-13 19:53
加个水泵自动调节会不会更好一点呢

没必要,多肉平均一两个月才能加一次水------即:不怕土干、就怕水多。
如果是其它花草倒是可以加水泵的。
发表于 2016-12-15 13:00 | 显示全部楼层
楼主留个qq,我也想做这个但是那个测针的pcb有点问题想问一下
发表于 2016-12-15 13:13 | 显示全部楼层
或者楼主加下我qq:2521958039
谢谢了,
发表于 2017-4-17 09:56 | 显示全部楼层
楼主你这个传感器的VCC接的是多少伏的?
 楼主| 发表于 2017-4-24 08:14 | 显示全部楼层
淹死的大白鲨 发表于 2017-4-17 09:56
楼主你这个传感器的VCC接的是多少伏的?

USB供電的,5V
 楼主| 发表于 2017-4-24 08:17 | 显示全部楼层
frankbrown 发表于 2016-12-15 13:00
**** 作者被禁止或删除 内容自动屏蔽 ****

是不是取消了模块的比较器部分、而没在VCC之间加10K的电阻?
发表于 2017-5-22 00:08 | 显示全部楼层
点赞!动手是最好的学习!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-30 23:45 , Processed in 0.181422 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表