智能家居实验代码

遥控器控制风扇和蜂鸣器

#include <IRremote.hpp>

/*
* IRremote: IRrecvDemo -demonstrates receiving IR codes with IRrecv
* An IR detector/demodulator must be connected to the input RECV_PIN.
* Version 0.1 July, 2009,Copyright 2009 Ken Shirriff.
*/
#include <IRremote.h>
int recvPin = 2; //红外接收器连接11号引脚
boolean flag = true;
boolean flag1 = true;
IRrecv myIRrecv(recvPin);
decode_results results; // 用于存储接收红外编码信息的结构体对象
void setup() {
    Serial.begin(9600); // 初始化串口通信
    myIRrecv.enableIRIn(); // 初始化红外解码
}
void loop() {
    if (myIRrecv.decode(&results)) { //检查是否接收到编码信息
        Serial.print("the keycode is:");
        Serial.println(results.value);
        if(results.value == 16753245){//灯
          if(flag == true){
            digitalWrite(4, HIGH);
            flag = !flag;
          }else{
            digitalWrite(4, LOW);
            flag = !flag;
          }
            
//            Serial.print("the keycode is:");
//            Serial.println(results.value);
        }else if(results.value == 16769565){//蜂鸣器
             if(flag1 == true){
              digitalWrite(A2, LOW);
              flag1 = !flag1;
            }else{
              digitalWrite(A2, HIGH);
              flag1 = !flag1;
            }
        }else{
            Serial.println("no");
        }
        delay(500);
        myIRrecv.resume(); // 接收下一个编码
    }
}

超声波测距

const int TrigPin = 8;
const int EchoPin = 9;
float distance;
void setup()
{
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
Serial.println("Sensor Value:");
}
void loop()
{

digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
distance = pulseIn(EchoPin, HIGH) / 58.0; 

Serial.print("Distance=");
Serial.print(distance);
Serial.println("cm");
delay(200);
}

测距, 测温, 测湿,测光, 测声, 显示屏显示

#include <DFRobot_SSD1306_I2C.h> //导库
// 创建对象
DFRobot_SSD1306_I2C oled12864; //创建oled对象
int dist=100;//记录超声波测的距离
int light=A1;//光感引引脚
int sy=A2;
int j=A6;
int l=A2;
int humity = A5;//湿度引脚

const int TrigPin = 2;
const int EchoPin = 5;


// 主程序开始
void setup() {
  Serial.begin(9600);
  pinMode(TrigPin, OUTPUT);
  pinMode(EchoPin, INPUT);
  Serial.println("Sensor Value:");
  oled12864.begin(0x3c);//定义地址
  Serial.begin(9600);
  pinMode( light,INPUT);
  pinMode( sy,INPUT);
  pinMode( j,OUTPUT);
  pinMode( l,INPUT);
 
  
}
void loop() {
  digitalWrite(TrigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(TrigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(TrigPin, LOW);
  dist = pulseIn(EchoPin, HIGH) / 58.0; 
  //dist is distanse
  
  int num=analogRead(light);
  oled12864.setCursorLine(1);
  oled12864.printLine(String("light:") + String(num) + String("cd"));//1022
  
  int x=analogRead(sy);
  oled12864.setCursorLine(2);
  oled12864.printLine(String("noisy:") + String(x) + String("hz"));//声音
  
  oled12864.setCursorLine(3);
  oled12864.printLine(String("distance :") + String(dist) + String("cm"));//距离


  delay(3000);
  oled12864.fillScreen(0);//清屏
  
  oled12864.setCursorLine(1);
  float numn=1.0*(analogRead(l)-32)*5/9;
  oled12864.printLine(String("Tempera:") + String(numn) + String("c"));//温度
  
  oled12864.setCursorLine(2);
  int humi = analogRead(humity);
  oled12864.printLine(String("humidity:") + String(humi) + String("rh"));//湿度

  delay(1000);
  oled12864.fillScreen(0);
  
  //oled12864.setRotaion(eROTATION_180);//旋转180°
  //oled12864.setRotaion(eROTATION_0);//旋转0°
  
  delay(2000);
  oled12864.fillScreen(0);
}

本文作者:小染のblog

本文链接:https://www.cnblogs.com/xiaoranya/p/16425583.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   小染``  阅读(242)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起