1)每隔1秒钟,采集土壤湿度传感器和温湿度传感器数据。
2} 在串口显示当前土壤湿度、当前温度、当前湿度显示。设计好显示格式。
3)根据数据判断。是否要浇水?
判定条件土壤湿度数据低于80或温度高于50湿度高于60。
浇水时:1·、舵机旋转135度。代表水管阀门打开。
2、蜂鸣器鸣叫。代表正在浇水状态。
不浇水时:1·、舵机旋转0度。代表水管阀门关闭。
2、蜂鸣器关闭。代表正在不浇水状态。
/内部中断--定时中断实验/
#include <FlexiTimer2.h> //调用中断库
const int led_pin = 7; //设定LED使用13管腿
void flash() { //中断服务程序
static boolean output = HIGH;
digitalWrite(led_pin, output);
output = !output;
}
void setup(){
pinMode(led_pin, OUTPUT);
FlexiTimer2::set(500, flash); //中断设定: 500毫秒调用flash中断服务程序
FlexiTimer2::start(); //中断开始
}
void loop(){
}
/*舵机实验 */
#include <Servo.h>//调用舵机库。
Servo servo1; // 定义舵机名 1
void setup()
{
servo1.attach(8); //定义舵机控制口
Serial.begin(9600); //设置波特率
Serial.println("Ready");
}
void loop()
{
servo1.write(150); //如果数据后带 a,则表示是 servo1 的数据,比如串口发送 85a
Serial.println(servo1.read());
}
/半数字温湿度传感器实验/
#include <dht11.h>//调用温湿度传感器库
dht11 DHT11; //命名库的别买
#define DHT11PIN 7 //定义传感器用7号腿
void setup()
{
Serial.begin(9600);//定义串口数据速率
}
void loop()
{
int chk = DHT11.read(DHT11PIN); //读取传感器数据。(是混合数据。无法分辨温度和湿度。)
Serial.print("温度: "); //从串口发送字符串
Serial.println((float)DHT11.temperature, 2); //从串口发送温度数据并换行。
Serial.print("湿度: "); //从串口发送字符串
Serial.println((float)DHT11.humidity, 2); //从串口发送湿度并换行。
Serial.println("一排星号");
delay (2000);//延时一秒钟。
}
/土壤湿度,蜂鸣器实验/
int so=A1; //设定土壤湿度传感器用模拟腿1(用模拟腿的时候这一步可以不设定。)
int buzzer = 3; //设定蜂鸣器用数字3
void setup() {
Serial.begin(9600); // 设置波特率
pinMode(buzzer, OUTPUT);}//设定蜂鸣器为输出
void loop() {
int a=analogRead(so);//读取土壤湿度传感器数据
if (a>80){
digitalWrite(buzzer, LOW); //发声音
delay(100);
digitalWrite(buzzer, HIGH);
}
Serial.println("一排星号");
Serial.print("土壤湿度: "); // 通过串口向计算机输出信息
Serial.println(a);
delay(1000); // 加一些延时,输出速度过快会可能会卡住串口监视器
digitalWrite(buzzer, HIGH);
}
#include <FlexiTimer2.h> //调用中断库
#include <Servo.h>//调用舵机库。
Servo servo1; // 定义舵机名 1
int a;//湿度
int b;//温度
int so=A1; //设定土壤湿度传感器用模拟腿1(用模拟腿的时候这一步可以不设定。)
int so2=A2; //设定土壤温度传感器用模拟腿1(用模拟腿的时候这一步可以不设定。)
int buzzer = A3; //设定蜂鸣器用数字3
void flash() { //中断服务程序
a=analogRead(so);//读取土壤湿度传感器数据
b=analogRead(so2);//读取土壤湿度传感器数据
String str="temp is " + String(a) +" wet is " +String(b);
Serial.println(str);
}
void setup(){
FlexiTimer2::set(500, flash); //中断设定: 500毫秒调用flash中断服务程序
FlexiTimer2::start(); //中断开始
pinMode(buzzer, OUTPUT);//设定蜂鸣器为输出
pinMode(so, INPUT);//设定蜂鸣器为输出
pinMode(so2, INPUT);//设定蜂鸣器为输出
servo1.attach(8); //定义舵机控制口
Serial.begin(9600); //设置波特率
Serial.println("Ready");
}
void loop(){
if(a<80 || b>50){
servo1.write(150); //舵机旋转135
digitalWrite(buzzer, LOW); //发声音(有源蜂鸣器,注意接法)
}
else{
servo1.write(0); //舵机旋转0
digitalWrite(buzzer, HIGH);//关声音(有源蜂鸣器)
}
}