Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <XBee.h>
- #include <DHT22.h>
- // data type
- #define TEMPERATURE 1
- #define HUMIDITY 2
- typedef struct message {
- uint8_t type;
- uint32_t counter;
- float value;
- } message_t;
- #define DHT22_PIN 2
- #define SLEEP 5000
- #define LED_SLEEP 100
- #define BOOT_SLEEP 2000
- XBee xbee = XBee();
- DHT22 dht(DHT22_PIN);
- uint8_t payload[sizeof(message_t)];
- Tx16Request tx = Tx16Request(0x1874, payload, sizeof(payload));
- int statusLed = 13;
- uint32_t counter = 0;
- void flashLed(int pin, int times, int wait) {
- for (int i = 0; i < times; i++) {
- digitalWrite(pin, HIGH);
- delay(wait);
- digitalWrite(pin, LOW);
- if (i + 1 < times) {
- delay(wait);
- }
- }
- }
- void setup() {
- pinMode(statusLed, OUTPUT);
- Serial.begin(115200);
- xbee.setSerial(Serial);
- delay(BOOT_SLEEP);
- }
- void loop() {
- DHT22_ERROR_t errorCode;
- message_t msg;
- memset(&msg, 0, sizeof(message_t));
- errorCode = dht.readData();
- switch(errorCode)
- {
- case DHT_ERROR_NONE:
- msg.value = dht.getTemperatureC();
- msg.type = TEMPERATURE;
- msg.counter = counter;
- memcpy(payload, &msg, sizeof(message_t));
- xbee.send(tx);
- msg.value = dht.getHumidity();
- msg.type = HUMIDITY;
- memcpy(payload, &msg, sizeof(message_t));
- xbee.send(tx);
- flashLed(statusLed, 1, LED_SLEEP);
- break;
- default:
- flashLed(statusLed, 2, LED_SLEEP);
- break;
- }
- ++counter;
- delay(SLEEP);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement