Advertisement
Guest User

Untitled

a guest
May 26th, 2013
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.60 KB | None | 0 0
  1. #include <XBee.h>
  2. #include <DHT22.h>
  3.  
  4. // data type
  5. #define TEMPERATURE 1
  6. #define HUMIDITY 2
  7.  
  8. typedef struct message {
  9. uint8_t type;
  10. uint32_t counter;
  11. float value;
  12. } message_t;
  13.  
  14. #define DHT22_PIN 2
  15. #define SLEEP 5000
  16. #define LED_SLEEP 100
  17. #define BOOT_SLEEP 2000
  18.  
  19. XBee xbee = XBee();
  20. DHT22 dht(DHT22_PIN);
  21. uint8_t payload[sizeof(message_t)];
  22. Tx16Request tx = Tx16Request(0x1874, payload, sizeof(payload));
  23. int statusLed = 13;
  24. uint32_t counter = 0;
  25.  
  26. void flashLed(int pin, int times, int wait) {
  27. for (int i = 0; i < times; i++) {
  28. digitalWrite(pin, HIGH);
  29. delay(wait);
  30. digitalWrite(pin, LOW);
  31. if (i + 1 < times) {
  32. delay(wait);
  33. }
  34. }
  35. }
  36.  
  37. void setup() {
  38. pinMode(statusLed, OUTPUT);
  39. Serial.begin(115200);
  40. xbee.setSerial(Serial);
  41. delay(BOOT_SLEEP);
  42. }
  43.  
  44. void loop() {
  45. DHT22_ERROR_t errorCode;
  46. message_t msg;
  47.  
  48. memset(&msg, 0, sizeof(message_t));
  49. errorCode = dht.readData();
  50. switch(errorCode)
  51. {
  52. case DHT_ERROR_NONE:
  53. msg.value = dht.getTemperatureC();
  54. msg.type = TEMPERATURE;
  55. msg.counter = counter;
  56. memcpy(payload, &msg, sizeof(message_t));
  57. xbee.send(tx);
  58. msg.value = dht.getHumidity();
  59. msg.type = HUMIDITY;
  60. memcpy(payload, &msg, sizeof(message_t));
  61. xbee.send(tx);
  62. flashLed(statusLed, 1, LED_SLEEP);
  63. break;
  64. default:
  65. flashLed(statusLed, 2, LED_SLEEP);
  66. break;
  67. }
  68. ++counter;
  69. delay(SLEEP);
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement