Edison教程系列08 伊甸园守护者

2014-11-061.2万
AI 快速预览详细 收起
伊甸园守护者是一个使用LM35温度传感器和土壤湿度传感器,结合LCD按键扩展板,实时监测家中植物温湿度的项目。所需材料包括LM35线性温度传感器、土壤湿度传感器、LCD按键扩展板和英特尔® Edison for Arduino开发板。通过模拟量计算出实际温度,并在LCD屏上显示当前的温湿度及土壤湿度情况。适合家长与孩子一起动手实践,培养孩子的科学兴趣。
伊甸园守护者
想不想给家里伊甸园中的花花草草一个舒适的环境?想知道什么时候它们口渴了?通过LM35温度传感器和土壤湿度传感器就能够知道,再加上LCD按键扩展板,就可以很方便得看到实时的数据。等你之后玩Arduino够溜的时候,还可以往控制器上加网络模板,这样数据不仅能实时显示,还能放到网上,或者通过微博发布出去,是不是很心动了呢?那就先做个最简单的,本地实时显示数据~

所需材料

  •   1×  LM35线性温度传感器  Edison教程系列08 伊甸园守护者图1

  •   1×  土壤湿度传感器  Edison教程系列08 伊甸园守护者图2

  •   1×  LCD按键扩展板  Edison教程系列08 伊甸园守护者图3

  •   1×   英特尔® Edison for Arduino开发板  Edison教程系列08 伊甸园守护者图4
                              
硬件连接

Edison教程系列08 伊甸园守护者图5
LCD按键扩展板  →  插在EdisonArduino Kit扩展板上
LM35线性温度传感器  → 模拟口1  (右下角左侧第一个接口, 模拟口0被按键占用)
土壤湿度传感器  → 模拟口2
输入代码
  1. //伊甸园守护者
  2. #include <LiquidCrystal.h>
  3. LiquidCrystal lcd(8, 9, 4, 5, 6, 7);        // 初始化LCD的引脚号
  4. int TemperaturePin=A1;      //设置LM35线性温度传感器的引脚
  5. int HumidityPin=A2;
  6. void setup() {
  7.   lcd.begin(16, 2);  // 设置LCD为2行,每行16个字符
  8. }
  9. void loop() {
  10.   int temperatureValue;     //用于存储温度的模拟量
  11.   int humidityValue;        //由于存储湿度的模拟量
  12.   int temperature;          //用于存储温度数据
  13.   temperatureValue=analogRead(TemperaturePin);    //读取温度的模拟量
  14.   humidityValue=analogRead(HumidityPin);          //读取湿度的模拟量
  15.   temperature=(500 * temperatureValue) /1024;     //通过模拟量计算出实际温度
  16.   //LCD显示当前温度
  17.   lcd.setCursor(0, 0);    //光标移到第一行,第一个字符
  18.   lcd.print("T:");
  19.   lcd.print(temperature);
  20.   lcd.print("C");
  21.   //LCD现实当前湿度
  22.   lcd.setCursor(0, 6);    //光标移动到第一行,第七个字符
  23.   lcd.print("H:");
  24.   lcd.print(humidityValue);
  25.   //显示当前土壤情况
  26.   lcd.setCursor(1, 0);    //光标移动到第二行,第一个字符
  27.   if (humidityValue<300) {
  28.     lcd.print("Soil: Dry");
  29.   }
  30.   else if (humidityValue>=300 && humidityValue<700){
  31.     lcd.print("Soil: Humid");
  32.   }
  33.   else{
  34.     lcd.print("Soil: Water")
  35.   }
  36.   delay(500);
  37. }
  38.    
复制代码
下载完代码后,就可以从LCD屏上显示当前的温湿度,还有土壤的湿度情况。

Edison教程系列08 伊甸园守护者图6

作者:Angelo
*
DFRobot版权所有,未经授权不得以任何形式使用。

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(6)
hellovictoria
hellovictoria
大侠 为什么我的温度,显示的是 T:210C
Kinsenlin
Kinsenlin
附上正确的代码:
[code]//伊甸园守护者
#include
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // 初始化LCD的引脚号
int TemperaturePin=A1; //设置LM35线性温度传感器的引脚
int HumidityPin=A2;
void setup() {
lcd.begin(16, 2); // 设置LCD为2行,每行16个字符
}
void loop() {
int temperatureValue; //用于存储温度的模拟量
int humidityValue; //由于存储湿度的模拟量
int temperature; //用于存储温度数据
temperatureValue=analogRead(TemperaturePin); //读取温度的模拟量
humidityValue=analogRead(HumidityPin); //读取湿度的模拟量
temperature=(500 * temperatureValue) /1024; //通过模拟量计算出实际温度
//LCD显示当前温度
lcd.setCursor(0, 0); //光标移到第一行,第一个字符
lcd.print("T:");
lcd.print(temperature);
lcd.print("C");
//LCD现实当前湿度
lcd.setCursor(6, 0); //光标移动到第一行,第七个字符
lcd.print("H:");
lcd.print(humidityValue);
//显示当前土壤情况
lcd.setCursor(0, 1); //光标移动到第二行,第一个字符
if (humidityValue<300) {
lcd.print("Soil: Dry");
}
else if (humidityValue>=300 && humidityValue<700){
lcd.print("Soil: Humid");
}
else{
lcd.print("Soil: Water");
}
delay(500);
}[/code]
Kinsenlin
Kinsenlin
刚才试了下,代码有一点点错了
WindnBike
WindnBike
您好,好像
lcd.setCursor(0, 6)
lcd.setCursor(1, 0)
坐标反了,应该是(6, 0)(0, 1)
Ash1
Ash1
作者
耐心等待一下吧,很快就到了,不出意外的话应该下周或者下下周啦
heinau
heinau
教程专业,名字也起得很文艺呐哈哈哈
点赞~
- 没有更多了 -