Guest User

datalogger

a guest
Nov 17th, 2016
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.74 KB | None | 0 0
  1.  
  2. //Include
  3. #include <SD.h>
  4. #include <Wire.h>
  5. #include "RTClib.h"
  6. #include "DHT.h"
  7. //Setup CS on SD Card (53 for mega, 10 for UNO)
  8. const int chipSelect = 10;
  9. //Setup RTC
  10. RTC_DS1307 RTC;
  11. //Setup DHT
  12. #define DHTPIN 2 // what pin we're connected to
  13. #define DHTTYPE DHT22 // DHT 22 (AM2302)
  14. DHT dht(DHTPIN, DHTTYPE);
  15.  
  16. //Setup LED pins
  17. int sdError = 3;
  18. int dhtError = 4;
  19. int writingLED = 5;
  20. int rtcError = 6;
  21. int sdStatus = 7;
  22.  
  23. void setup()
  24. {
  25. //Setup LEDs
  26. pinMode(sdError,OUTPUT);
  27. pinMode(dhtError,OUTPUT);
  28. pinMode(writingLED,OUTPUT);
  29. pinMode(rtcError, OUTPUT);
  30. pinMode(sdStatus, OUTPUT);
  31. digitalWrite(sdError, LOW);
  32. digitalWrite(dhtError, LOW);
  33. digitalWrite(writingLED, LOW);
  34. digitalWrite(rtcError, LOW);
  35. digitalWrite(sdStatus, OUTPUT);
  36.  
  37. //Initializing SD
  38. digitalWrite(sdStatus, HIGH);
  39. delay(950);
  40. digitalWrite(sdStatus, LOW);
  41. delay(950);
  42. digitalWrite(sdStatus, HIGH);
  43. delay(950);
  44. digitalWrite(sdStatus, LOW);
  45. delay(950);
  46. digitalWrite(sdStatus, HIGH);
  47. delay(950);
  48. digitalWrite(sdStatus, LOW);
  49. delay(950);
  50. digitalWrite(sdStatus, HIGH);
  51. delay(950);
  52. digitalWrite(sdStatus, LOW);
  53. delay(950);
  54. digitalWrite(sdStatus, HIGH);
  55. delay(950);
  56. digitalWrite(sdStatus, LOW);
  57.  
  58. pinMode(10, OUTPUT);
  59. // see if the card is present and can be initialized:
  60. if (!SD.begin(chipSelect)) {
  61. digitalWrite(sdError, HIGH);
  62. // don't do anything more:
  63. return;
  64. }
  65. digitalWrite(sdStatus, HIGH);
  66. //Setup DS1307
  67. Wire.begin();
  68. RTC.begin();
  69. if (! RTC.isrunning()) {
  70. digitalWrite(rtcError, HIGH);
  71. delay(950);
  72. digitalWrite(rtcError, LOW);
  73. // following line sets the RTC to the date & time this sketch was compiled
  74. RTC.adjust(DateTime(__DATE__, __TIME__));
  75. }
  76. //Setup DHT
  77. dht.begin();
  78. }
  79.  
  80. void loop()
  81. {
  82. DateTime now = RTC.now();
  83. if(now.minute() == 00 || now .minute() == 10 || now .minute() == 20 || now .minute() == 30 || now .minute() == 40 || now .minute() == 50)
  84. {
  85. String dataString = "";
  86. DateTime now = RTC.now();
  87. float h = dht.readHumidity();
  88. float t = dht.readTemperature();
  89. // check if returns are valid, if they are NaN (not a number) then something went wrong!
  90. if (isnan(t) || isnan(h)) {
  91. digitalWrite(dhtError, HIGH);
  92. delay(950);
  93. digitalWrite(dhtError, LOW);
  94. }
  95. //Create String to print to SD Card
  96. int humid = h;
  97. dataString += "Wilgotność";
  98. dataString += " ";
  99. dataString += String(humid);
  100. dataString += "%";
  101. int temp = t;
  102. dataString += " , Temperatura";
  103. dataString += " ";
  104. dataString += String(temp);
  105. dataString += "*C";
  106. dataString += " at";
  107. dataString += " ";
  108. dataString += String(now.day());
  109. dataString += "/";
  110. dataString += String(now.month());
  111. dataString += "/";
  112. dataString += String(now.year());
  113. dataString += ", ";
  114. dataString += String(now.hour());
  115. dataString += ":";
  116. dataString += String(now.minute());
  117. dataString += ":";
  118. dataString += String(now.second());
  119. // open the file. note that only one file can be open at a time,
  120. // so you have to close this one before opening another.
  121. File dataFile = SD.open("datalog.txt", FILE_WRITE);
  122.  
  123. // if the file is available, write to it:
  124. if (dataFile) {
  125. dataFile.println(dataString);
  126. dataFile.close();
  127. // flash writing led too
  128. digitalWrite(writingLED, HIGH);
  129. delay(950);
  130. digitalWrite(writingLED, LOW);
  131. }
  132. // if the file isn't open, pop up an error:
  133. else {
  134. digitalWrite(sdError, HIGH);
  135. delay(950);
  136. digitalWrite(sdError, LOW);
  137. }
  138. //delay for 59 seconds to prevent updates happening in minute
  139. delay(59000);
  140. }
  141. }
Advertisement
Add Comment
Please, Sign In to add comment