Advertisement
Guest User

Untitled

a guest
May 31st, 2014
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.96 KB | None | 0 0
  1. #include <aJSON.h>
  2.  
  3. #define temperatureSensor 7
  4. #define lightSensor 0
  5. #define motionSensor 6
  6. #define led1 3
  7. #define led2 4
  8. #define led3 5
  9.  
  10. byte dat[5];
  11. aJsonStream serial_stream(&Serial);
  12.  
  13. aJsonObject *createMessage() {
  14. aJsonObject *msg = aJson.createObject();
  15.  
  16. aJson.addNumberToObject(msg, "temperature", dat[2]-3);
  17. aJson.addNumberToObject(msg, "humidity", dat[0]);
  18. aJson.addNumberToObject(msg, "light", analogRead(lightSensor));
  19. aJson.addNumberToObject(msg, "motion", digitalRead(motionSensor));
  20.  
  21. return msg;
  22. }
  23.  
  24. byte read_data() {
  25. byte data;
  26. for (int i=0; i < 8; i++) {
  27. if (digitalRead(temperatureSensor) == LOW) {
  28. while (digitalRead(temperatureSensor) == LOW);
  29. delayMicroseconds(30);
  30. if (digitalRead(temperatureSensor) == HIGH)
  31. data |= (1<<(7-i));
  32. while(digitalRead(temperatureSensor) == HIGH);
  33. }
  34. }
  35. return data;
  36. }
  37.  
  38. void setup()
  39. {
  40. Serial.begin(9600);
  41. pinMode(temperatureSensor, OUTPUT);
  42. pinMode(motionSensor, INPUT);
  43. }
  44.  
  45. void checkLights() {
  46. if (Serial.available() > 0) {
  47. int b1 = Serial.parseInt();
  48. int b2 = Serial.parseInt();
  49.  
  50. Serial.println(b1);
  51. Serial.println(b2);
  52.  
  53. switch(b1) {
  54. case 1 : analogWrite(led1, b2);
  55. break;
  56. case 2 : analogWrite(led2, b2);
  57. break;
  58. case 3 : analogWrite(led3, b2);
  59. break;
  60. default:
  61. break;
  62. }
  63. }
  64. }
  65.  
  66. void loop()
  67. {
  68. digitalWrite(temperatureSensor,LOW);
  69. delay(30);
  70. digitalWrite(temperatureSensor, HIGH);
  71. delayMicroseconds(40);
  72. pinMode(temperatureSensor, INPUT);
  73. while(digitalRead(temperatureSensor) == LOW);
  74. delayMicroseconds(80);
  75. for (int i = 0; i < 4; i++)
  76. dat[i] = read_data();
  77. pinMode(temperatureSensor, OUTPUT);
  78. digitalWrite(temperatureSensor, HIGH);
  79.  
  80. aJsonObject *msg = createMessage();
  81. aJson.print(msg, &serial_stream);
  82. Serial.println();
  83.  
  84. checkLights();
  85.  
  86. Serial.flush();
  87. delay(2000);
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement