智能家居最终代码
作者:互联网
#include <DFRobot_SSD1306_I2C.h> //导库
#include <Servo.h>
// 创建舵机对象
Servo myservo; // 定义Servo对象来控制
int pos = 0; // 角度存储变量
DFRobot_SSD1306_I2C oled12864; //创建oled对象
int incline = A0;//倾斜传感器引脚
int sy = A2;//蜂鸣器引脚
int l = A2;//温度感应引脚
int humity = 4;//水滴感引引脚
int human = 4;//人体感应引脚
const int TrigPin = 2;
const int EchoPin = 5;
int dist = -1;//记录超声波测的距离
int incl = -1;//记录倾斜程度
//获取超声波传感器获得的距离
void getDist(){
digitalWrite(8, HIGH);
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
dist = pulseIn(EchoPin, HIGH) / 58.0;
//有人靠近门口就开灯
if(dist < 20) digitalWrite(7, HIGH);
else digitalWrite(7, LOW);
}
//获取倾斜传感器获得的倾斜程度
void getIncl(){
//倾斜程度
incl = analogRead(incline);
oled12864.setCursorLine(1);
oled12864.printLine(String("incline:") + String(incl) + String("cd"));//1022
digitalWrite(3, LOW);
if(incl > 750){
tone(3, 584, 3000);
}else{
noTone(3);
digitalWrite(3, LOW);
}
}
//将数据显示在屏幕上
void show(){
int x = analogRead(sy);//声音的大小
float numn = 1.0*(analogRead(l)-32)*5/9;//温度,单位摄氏度
int humi = analogRead(humity);//水滴感应
int huma = analogRead(human);//感应人体
Serial.println(humi);
oled12864.setCursorLine(2);
oled12864.printLine(String("noisy:") + String(x) + String("hz"));//声音
oled12864.setCursorLine(3);
oled12864.printLine(String("distance :") + String(dist) + String("cm"));//距离
delay(500);
oled12864.fillScreen(0);//清屏
oled12864.setCursorLine(1);
oled12864.printLine(String("Tempera:") + String(numn) + String("c"));//温度
if(numn >= 18){//如果温度超过23度,就开启风扇
digitalWrite(8, LOW);
}else{
digitalWrite(8, HIGH);
}
oled12864.setCursorLine(2);
oled12864.printLine(String("humidity:") + String(humi) + String("rh"));//水滴感引
delay(2000);
oled12864.fillScreen(0);//清屏
}
//获取所有传感器的值
void getValue(){
getDist();
getIncl();
}
void setup() {
Serial.begin(9600);
myservo.attach(A1); // 控制线连接数字9
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
oled12864.begin(0x3c);//定义地址
Serial.begin(9600);
pinMode( incline,INPUT);
pinMode( sy,INPUT);
pinMode( l,INPUT);
pinMode( 7,OUTPUT);//距离灯
pinMode( 8,OUTPUT);//风扇
pinMode( 3,OUTPUT);//蜂鸣器
pinMode( A0,INPUT);//倾斜传感器
pinMode( humity,INPUT);//雨滴传感器
}
void loop() {
boolean isRain = digitalRead(humity);
if(isRain == 1){
//Serial.println("rain ing");
for (pos = 0; pos <= 180; pos ++) { // 0°到180°
// in steps of 1 degree
myservo.write(pos); // 舵机角度写入
delay(5); // 等待转动到指定角度
}
for (pos = 180; pos >= 0; pos --) { // 从180°到0°
myservo.write(pos); // 舵机角度写入
delay(5); // 等待转动到指定角度
}
}else{
//Serial.println("no");
}
getValue();//获取所有传感器的值,并进行控制
show();//将数据显示在屏幕上
}
标签:oled12864,String,int,digitalWrite,代码,智能家居,void,最终,pinMode 来源: https://www.cnblogs.com/xiaoranya/p/16433767.html