w mx
/
sensors_2
sr501+BH1750+mq
Fork of sensors by
sensors.h@3:31aec950f7dc, 2018-09-14 (annotated)
- Committer:
- xmwmx
- Date:
- Fri Sep 14 10:52:15 2018 +0000
- Revision:
- 3:31aec950f7dc
- Parent:
- 2:cd0ea77c7d66
sr501/BH1750/mq-2/dht11
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Dennis_Yu | 0:6dca851b4779 | 1 | #ifndef SENSORS_H |
Dennis_Yu | 0:6dca851b4779 | 2 | #define SENSORS_H |
Dennis_Yu | 0:6dca851b4779 | 3 | |
Dennis_Yu | 0:6dca851b4779 | 4 | #include "mbed.h" |
xmwmx | 2:cd0ea77c7d66 | 5 | |
xmwmx | 1:1197997ae0ea | 6 | //+++++++++++++++++++++BH1750+++++++++++++++++++++++++++++ |
xmwmx | 1:1197997ae0ea | 7 | #define BH1750_I2CADDR 0x46 |
xmwmx | 1:1197997ae0ea | 8 | #define BH1750_POWER_DOWN 0x00 // No active state |
xmwmx | 1:1197997ae0ea | 9 | #define BH1750_POWER_ON 0x01 // Wating for measurment command |
xmwmx | 1:1197997ae0ea | 10 | #define BH1750_RESET 0x07 // Reset data register value - not accepted in POWER_DOWN mode |
xmwmx | 1:1197997ae0ea | 11 | #define BH1750_CONTINUOUS_HIGH_RES_MODE 0x10 // Start measurement at 1lx resolution. Measurement time is approx 120ms. |
xmwmx | 1:1197997ae0ea | 12 | #define BH1750_CONTINUOUS_HIGH_RES_MODE_2 0x11 // Start measurement at 0.5lx resolution. Measurement time is approx 120ms. |
xmwmx | 1:1197997ae0ea | 13 | #define BH1750_CONTINUOUS_LOW_RES_MODE 0x13 // Start measurement at 4lx resolution. Measurement time is approx 16ms. |
xmwmx | 1:1197997ae0ea | 14 | |
xmwmx | 1:1197997ae0ea | 15 | // Start measurement at 1lx resolution. Measurement time is approx 120ms. |
xmwmx | 1:1197997ae0ea | 16 | // Device is automatically set to Power Down after measurement. |
xmwmx | 1:1197997ae0ea | 17 | #define BH1750_ONE_TIME_HIGH_RES_MODE 0x20 |
xmwmx | 1:1197997ae0ea | 18 | |
xmwmx | 1:1197997ae0ea | 19 | // Start measurement at 0.5lx resolution. Measurement time is approx 120ms. |
xmwmx | 1:1197997ae0ea | 20 | // Device is automatically set to Power Down after measurement. |
xmwmx | 1:1197997ae0ea | 21 | #define BH1750_ONE_TIME_HIGH_RES_MODE_2 0x21 |
xmwmx | 1:1197997ae0ea | 22 | |
xmwmx | 1:1197997ae0ea | 23 | // Start measurement at 1lx resolution. Measurement time is approx 120ms. |
xmwmx | 1:1197997ae0ea | 24 | // Device is automatically set to Power Down after measurement. |
xmwmx | 1:1197997ae0ea | 25 | #define BH1750_ONE_TIME_LOW_RES_MODE 0x23 |
xmwmx | 1:1197997ae0ea | 26 | //++++++++++++++++++++++++++++++++++++++++ |
xmwmx | 1:1197997ae0ea | 27 | |
xmwmx | 2:cd0ea77c7d66 | 28 | //========================================== |
Dennis_Yu | 0:6dca851b4779 | 29 | class sr501 |
Dennis_Yu | 0:6dca851b4779 | 30 | { |
Dennis_Yu | 0:6dca851b4779 | 31 | /***** |
Dennis_Yu | 0:6dca851b4779 | 32 | * 红外热释电对象 |
Dennis_Yu | 0:6dca851b4779 | 33 | * 感应输出高电平 |
Dennis_Yu | 0:6dca851b4779 | 34 | *****/ |
Dennis_Yu | 0:6dca851b4779 | 35 | private: |
Dennis_Yu | 0:6dca851b4779 | 36 | // DigitalIn signal; |
Dennis_Yu | 0:6dca851b4779 | 37 | bool status; |
xmwmx | 2:cd0ea77c7d66 | 38 | InterruptIn signal; |
Dennis_Yu | 0:6dca851b4779 | 39 | void triggered(); |
Dennis_Yu | 0:6dca851b4779 | 40 | public: |
Dennis_Yu | 0:6dca851b4779 | 41 | sr501(PinName pSignal); |
xmwmx | 1:1197997ae0ea | 42 | bool operator==(const bool &target); |
Dennis_Yu | 0:6dca851b4779 | 43 | void reset(); |
xmwmx | 1:1197997ae0ea | 44 | int read(); |
Dennis_Yu | 0:6dca851b4779 | 45 | }; |
xmwmx | 1:1197997ae0ea | 46 | //========================================= |
xmwmx | 1:1197997ae0ea | 47 | class BH1750 |
xmwmx | 1:1197997ae0ea | 48 | { |
xmwmx | 1:1197997ae0ea | 49 | |
xmwmx | 1:1197997ae0ea | 50 | /***** |
xmwmx | 2:cd0ea77c7d66 | 51 | * |
xmwmx | 1:1197997ae0ea | 52 | *****/ |
xmwmx | 1:1197997ae0ea | 53 | private: |
xmwmx | 1:1197997ae0ea | 54 | I2C link; |
xmwmx | 1:1197997ae0ea | 55 | char rawdata[2]; |
xmwmx | 1:1197997ae0ea | 56 | bool status; |
xmwmx | 1:1197997ae0ea | 57 | public: |
xmwmx | 1:1197997ae0ea | 58 | BH1750(PinName sda,PinName scl); |
xmwmx | 1:1197997ae0ea | 59 | BH1750(PinName sda,PinName scl,char mode[]); |
xmwmx | 1:1197997ae0ea | 60 | float getlightdata(); |
xmwmx | 1:1197997ae0ea | 61 | }; |
xmwmx | 2:cd0ea77c7d66 | 62 | //=========================================== |
xmwmx | 2:cd0ea77c7d66 | 63 | class mq |
xmwmx | 2:cd0ea77c7d66 | 64 | { |
xmwmx | 2:cd0ea77c7d66 | 65 | /***** |
xmwmx | 2:cd0ea77c7d66 | 66 | * |
xmwmx | 2:cd0ea77c7d66 | 67 | *****/ |
xmwmx | 2:cd0ea77c7d66 | 68 | private: |
xmwmx | 2:cd0ea77c7d66 | 69 | bool status; |
xmwmx | 2:cd0ea77c7d66 | 70 | InterruptIn signal; |
xmwmx | 2:cd0ea77c7d66 | 71 | AnalogIn signallevel; |
xmwmx | 2:cd0ea77c7d66 | 72 | |
xmwmx | 2:cd0ea77c7d66 | 73 | void triggered(); |
xmwmx | 2:cd0ea77c7d66 | 74 | public: |
xmwmx | 2:cd0ea77c7d66 | 75 | mq(PinName dio); |
xmwmx | 2:cd0ea77c7d66 | 76 | mq(PinName dio,PinName aio); |
xmwmx | 2:cd0ea77c7d66 | 77 | bool operator==(const bool &target); |
xmwmx | 2:cd0ea77c7d66 | 78 | float getairdata(); |
xmwmx | 2:cd0ea77c7d66 | 79 | void reset(); |
xmwmx | 3:31aec950f7dc | 80 | int read(); |
xmwmx | 2:cd0ea77c7d66 | 81 | }; |
xmwmx | 2:cd0ea77c7d66 | 82 | |
xmwmx | 2:cd0ea77c7d66 | 83 | //=========================================== |
xmwmx | 3:31aec950f7dc | 84 | class dht11 |
xmwmx | 3:31aec950f7dc | 85 | { |
xmwmx | 3:31aec950f7dc | 86 | /***** |
xmwmx | 3:31aec950f7dc | 87 | * |
xmwmx | 3:31aec950f7dc | 88 | *****/ |
xmwmx | 3:31aec950f7dc | 89 | private: |
xmwmx | 3:31aec950f7dc | 90 | Timer timer; |
xmwmx | 3:31aec950f7dc | 91 | Timer starttime; |
xmwmx | 3:31aec950f7dc | 92 | DigitalInOut datapin; |
xmwmx | 3:31aec950f7dc | 93 | float H; |
xmwmx | 3:31aec950f7dc | 94 | float T; |
xmwmx | 3:31aec950f7dc | 95 | public: |
xmwmx | 3:31aec950f7dc | 96 | dht11(PinName pin); |
xmwmx | 3:31aec950f7dc | 97 | int getdata(); |
xmwmx | 3:31aec950f7dc | 98 | float gethumidity(); |
xmwmx | 3:31aec950f7dc | 99 | float gettemperature(); |
xmwmx | 3:31aec950f7dc | 100 | |
xmwmx | 3:31aec950f7dc | 101 | }; |
xmwmx | 3:31aec950f7dc | 102 | //======================= |
Dennis_Yu | 0:6dca851b4779 | 103 | #endif |