sr501/BH1750/mq-2/dht11

Dependencies:   mbed

Fork of sensors_2 by w mx

Committer:
xmwmx
Date:
Thu Sep 13 05:52:55 2018 +0000
Revision:
2:cd0ea77c7d66
Parent:
1:1197997ae0ea
Child:
3:31aec950f7dc
sr0501+BH1750+mq

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Dennis_Yu 0:6dca851b4779 1 #include "sensors.h"
Dennis_Yu 0:6dca851b4779 2 #include "mbed.h"
Dennis_Yu 0:6dca851b4779 3
xmwmx 1:1197997ae0ea 4 extern Serial usb2pc;
xmwmx 1:1197997ae0ea 5 extern DigitalOut myled;
xmwmx 1:1197997ae0ea 6 //============================================================
xmwmx 1:1197997ae0ea 7 void sr501::triggered() //触发中断!!
Dennis_Yu 0:6dca851b4779 8 {
xmwmx 1:1197997ae0ea 9 usb2pc.printf("sr501 Triggered!\r\n");
Dennis_Yu 0:6dca851b4779 10 status = true;
Dennis_Yu 0:6dca851b4779 11 }
xmwmx 1:1197997ae0ea 12 //--------
xmwmx 1:1197997ae0ea 13 sr501::sr501(PinName pSignal) //启动热释电!!!
xmwmx 2:cd0ea77c7d66 14 : status(false), signal(pSignal)
Dennis_Yu 0:6dca851b4779 15 {
xmwmx 2:cd0ea77c7d66 16 signal.rise(this, &sr501::triggered);
xmwmx 1:1197997ae0ea 17 usb2pc.printf("sr501 start!\r\n");
Dennis_Yu 0:6dca851b4779 18 }
xmwmx 1:1197997ae0ea 19 //-------
xmwmx 1:1197997ae0ea 20 bool sr501::operator==(const bool &target)
Dennis_Yu 0:6dca851b4779 21 {
Dennis_Yu 0:6dca851b4779 22 if(status == target)
xmwmx 1:1197997ae0ea 23 {
Dennis_Yu 0:6dca851b4779 24 return true;
xmwmx 1:1197997ae0ea 25 }
Dennis_Yu 0:6dca851b4779 26 else
xmwmx 1:1197997ae0ea 27 {
Dennis_Yu 0:6dca851b4779 28 return false;
xmwmx 1:1197997ae0ea 29 }
Dennis_Yu 0:6dca851b4779 30 }
xmwmx 1:1197997ae0ea 31 //-------
Dennis_Yu 0:6dca851b4779 32 void sr501::reset()
Dennis_Yu 0:6dca851b4779 33 {
Dennis_Yu 0:6dca851b4779 34 status = false;
Dennis_Yu 0:6dca851b4779 35 }
xmwmx 1:1197997ae0ea 36 //-------
xmwmx 1:1197997ae0ea 37 int sr501::read()
xmwmx 1:1197997ae0ea 38 {
xmwmx 2:cd0ea77c7d66 39 return signal.read();
xmwmx 1:1197997ae0ea 40 }
xmwmx 1:1197997ae0ea 41 //==========================================
xmwmx 1:1197997ae0ea 42 BH1750::BH1750(PinName sda,PinName scl) //启动光强!!!!!(默认设置)
xmwmx 1:1197997ae0ea 43 :link(sda,scl)
xmwmx 1:1197997ae0ea 44 {
xmwmx 1:1197997ae0ea 45 status = true;
xmwmx 1:1197997ae0ea 46 char mode[1]={BH1750_CONTINUOUS_HIGH_RES_MODE};
xmwmx 2:cd0ea77c7d66 47 //usb2pc.printf("modifying\r\n");
xmwmx 1:1197997ae0ea 48 while(status)
xmwmx 1:1197997ae0ea 49 {
xmwmx 1:1197997ae0ea 50 status = link.write(BH1750_I2CADDR, mode, sizeof(mode), false);
xmwmx 1:1197997ae0ea 51 wait_ms(10);
xmwmx 1:1197997ae0ea 52 }
xmwmx 1:1197997ae0ea 53 usb2pc.printf("BH1750 start with default mode!\r\n");
xmwmx 1:1197997ae0ea 54 }
xmwmx 1:1197997ae0ea 55 //--------
xmwmx 1:1197997ae0ea 56 BH1750::BH1750(PinName sda,PinName scl,char mode[]) //启动光强!!!!!(自定义设置)
xmwmx 1:1197997ae0ea 57 :link(sda,scl)
xmwmx 1:1197997ae0ea 58 {
xmwmx 1:1197997ae0ea 59 status = true;
xmwmx 1:1197997ae0ea 60 while(status)
xmwmx 1:1197997ae0ea 61 {
xmwmx 1:1197997ae0ea 62 status = link.write(BH1750_I2CADDR, mode, sizeof(mode), false);
xmwmx 1:1197997ae0ea 63 wait_ms(10);
xmwmx 1:1197997ae0ea 64 }
xmwmx 1:1197997ae0ea 65 usb2pc.printf("BH1750 start with customize mode!\r\n");
xmwmx 1:1197997ae0ea 66 }
xmwmx 1:1197997ae0ea 67 //--------
xmwmx 1:1197997ae0ea 68 float BH1750::getlightdata() //读取光强(lux)
xmwmx 1:1197997ae0ea 69 {
xmwmx 1:1197997ae0ea 70 status = true;
xmwmx 1:1197997ae0ea 71 status = link.read(BH1750_I2CADDR, rawdata, 2, false);
xmwmx 1:1197997ae0ea 72 if(!status)
xmwmx 1:1197997ae0ea 73 {
xmwmx 1:1197997ae0ea 74 float result = ((rawdata[0]<<8)|rawdata[1])/1.2;
xmwmx 1:1197997ae0ea 75 return result;
xmwmx 1:1197997ae0ea 76 }
xmwmx 1:1197997ae0ea 77 else
xmwmx 1:1197997ae0ea 78 {
xmwmx 1:1197997ae0ea 79 usb2pc.printf("BH1750 read fail!\r\n");
xmwmx 1:1197997ae0ea 80 return -1;
xmwmx 1:1197997ae0ea 81 }
xmwmx 2:cd0ea77c7d66 82 }
xmwmx 2:cd0ea77c7d66 83 //==============================================
xmwmx 2:cd0ea77c7d66 84 mq::mq(PinName dio)
xmwmx 2:cd0ea77c7d66 85 : status(false), signal(dio),signallevel(PC_13)
xmwmx 2:cd0ea77c7d66 86 {
xmwmx 2:cd0ea77c7d66 87 signal.fall(this, &mq::triggered);
xmwmx 2:cd0ea77c7d66 88 usb2pc.printf("mq start!\r\n");
xmwmx 2:cd0ea77c7d66 89 }
xmwmx 2:cd0ea77c7d66 90 //--------
xmwmx 2:cd0ea77c7d66 91 mq::mq(PinName dio,PinName aio)
xmwmx 2:cd0ea77c7d66 92 : status(false), signal(dio),signallevel(aio)
xmwmx 2:cd0ea77c7d66 93 {
xmwmx 2:cd0ea77c7d66 94 signal.fall(this, &mq::triggered);
xmwmx 2:cd0ea77c7d66 95 usb2pc.printf("mq start!\r\n");
xmwmx 2:cd0ea77c7d66 96 }
xmwmx 2:cd0ea77c7d66 97 //--------
xmwmx 2:cd0ea77c7d66 98 void mq::triggered() //触发中断!!
xmwmx 2:cd0ea77c7d66 99 {
xmwmx 2:cd0ea77c7d66 100 usb2pc.printf("mq Triggered!\r\n");
xmwmx 2:cd0ea77c7d66 101 status = true;
xmwmx 2:cd0ea77c7d66 102 }
xmwmx 2:cd0ea77c7d66 103 //--------
xmwmx 2:cd0ea77c7d66 104 bool mq::operator==(const bool &target)
xmwmx 2:cd0ea77c7d66 105 {
xmwmx 2:cd0ea77c7d66 106 if(status == target)
xmwmx 2:cd0ea77c7d66 107 {
xmwmx 2:cd0ea77c7d66 108 return true;
xmwmx 2:cd0ea77c7d66 109 }
xmwmx 2:cd0ea77c7d66 110 else
xmwmx 2:cd0ea77c7d66 111 {
xmwmx 2:cd0ea77c7d66 112 return false;
xmwmx 2:cd0ea77c7d66 113 }
xmwmx 2:cd0ea77c7d66 114 }
xmwmx 2:cd0ea77c7d66 115 //--------
xmwmx 2:cd0ea77c7d66 116 float mq::getairdata()
xmwmx 2:cd0ea77c7d66 117 {
xmwmx 2:cd0ea77c7d66 118
xmwmx 2:cd0ea77c7d66 119 }
xmwmx 2:cd0ea77c7d66 120 //-----------
xmwmx 2:cd0ea77c7d66 121 void mq::reset()
xmwmx 2:cd0ea77c7d66 122 {
xmwmx 2:cd0ea77c7d66 123 status = false;
xmwmx 2:cd0ea77c7d66 124 }
xmwmx 2:cd0ea77c7d66 125 int mq::read()
xmwmx 2:cd0ea77c7d66 126 {
xmwmx 2:cd0ea77c7d66 127 return signal.read();
xmwmx 1:1197997ae0ea 128 }