Ash 发表于 2014-11-6 16:23:19

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

伊甸园守护者想不想给家里伊甸园中的花花草草一个舒适的环境?想知道什么时候它们口渴了?通过LM35温度传感器和土壤湿度传感器就能够知道,再加上LCD按键扩展板,就可以很方便得看到实时的数据。等你之后玩Arduino够溜的时候,还可以往控制器上加网络模板,这样数据不仅能实时显示,还能放到网上,或者通过微博发布出去,是不是很心动了呢?那就先做个最简单的,本地实时显示数据~
所需材料

[*]1×LM35线性温度传感器


[*]1×土壤湿度传感器


[*]1×LCD按键扩展板


[*]1×   英特尔® Edison for Arduino开发板
                               硬件连接

LCD按键扩展板→插在EdisonArduino Kit扩展板上LM35线性温度传感器→ 模拟口1(右下角左侧第一个接口, 模拟口0被按键占用)土壤湿度传感器→ 模拟口2 输入代码//伊甸园守护者
#include <LiquidCrystal.h>

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(0, 6);    //光标移动到第一行,第七个字符
lcd.print("H:");
lcd.print(humidityValue);

//显示当前土壤情况
lcd.setCursor(1, 0);    //光标移动到第二行,第一个字符
if (humidityValue<300) {
    lcd.print("Soil: Dry");
}
else if (humidityValue>=300 && humidityValue<700){
    lcd.print("Soil: Humid");
}
else{
    lcd.print("Soil: Water")
}

delay(500);
}
   下载完代码后,就可以从LCD屏上显示当前的温湿度,还有土壤的湿度情况。


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

Kinsenlin 发表于 2015-2-25 11:02:44

附上正确的代码:
//伊甸园守护者
#include <LiquidCrystal.h>

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);
}

heinau 发表于 2014-11-21 10:34:28

教程专业,名字也起得很文艺呐哈哈哈
点赞~

海绵宝宝 发表于 2014-11-21 11:37:50

Ash 发表于 2014-11-21 11:42:51

海绵宝宝 发表于 2014-11-21 11:37
教程已收藏,苦等Edison到货哇

耐心等待一下吧,很快就到了,不出意外的话应该下周或者下下周啦

海绵宝宝 发表于 2014-11-21 11:51:08

WindnBike 发表于 2015-2-15 18:22:39

您好,好像
lcd.setCursor(0, 6)
lcd.setCursor(1, 0)
坐标反了,应该是(6, 0)(0, 1)

Kinsenlin 发表于 2015-2-25 11:01:40

刚才试了下,代码有一点点错了

hellovictoria 发表于 2015-4-16 15:20:47

大侠 为什么我的温度,显示的是 T:210C
页: [1]
查看完整版本: Edison教程系列08 伊甸园守护者