Advertisement
CapNTyler

Untitled

Jan 17th, 2020
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.10 KB | None | 0 0
  1. #include <SPI.h>
  2. #include <Wire.h>
  3. #include <Adafruit_GFX.h>
  4. #include <Adafruit_SSD1306.h>
  5. #include <OneWire.h>
  6. #include <DallasTemperature.h>
  7. #define OLED_MOSI 11 //D1
  8. #define OLED_CLK 12 //D0
  9. #define OLED_DC 9
  10. #define OLED_CS 8
  11. #define OLED_RESET 10
  12. #define ONE_WIRE_BUS 2
  13.  
  14. const int redLight = 2;
  15. int redVal = 0;
  16. int relay = 5;
  17. int greenLight = 6;
  18. int safety = 10000;
  19. int delayTime = 0;
  20. int heatDelayTime = 30;
  21. float temp = 0.0;
  22.  
  23. Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
  24. OneWire oneWire(ONE_WIRE_BUS);
  25. DallasTemperature sensors(&oneWire);
  26.  
  27.  
  28. void setup() {
  29. Serial.begin(9600);
  30. Serial.println("Dallas Temperature IC Control Library Demo");
  31. sensors.begin();
  32. display.begin(SSD1306_SWITCHCAPVCC);
  33. display.display();
  34. delay(1000);
  35. display.clearDisplay();
  36. display.setTextColor(WHITE);
  37. pinMode(relay,OUTPUT);
  38. digitalWrite (relay, HIGH);
  39. digitalWrite(greenLight,LOW);
  40. sensing();
  41. delay(safety);
  42. }
  43.  
  44.  
  45. void loop() {
  46. sensors.requestTemperatures();
  47. // Serial.print("Temp, ");
  48. // Serial.print(sensors.getTempCByIndex(0));
  49. if(sensors.getTempCByIndex(0)<0){
  50. sensors.requestTemperatures();
  51. if(sensors.getTempCByIndex(0)<0){
  52. sensors.requestTemperatures();
  53. if(sensors.getTempCByIndex(0)<0){
  54. sensors.requestTemperatures();
  55. }
  56. if(sensors.getTempCByIndex(0)>37||sensors.getTempCByIndex(0)<0){
  57. digitalWrite(relay, HIGH);
  58. digitalWrite(greenLight,LOW);
  59. // Serial.print(", Heater OFF");
  60. }
  61. else{
  62. digitalWrite(relay,LOW);
  63. digitalWrite(greenLight,HIGH);
  64. // Serial.print(", Heater ON");
  65. }
  66. sensors.getTempCByIndex(0);
  67. display.clearDisplay();
  68. display.setCursor(0,0);
  69. display.setTextSize(1);
  70. sensors.requestTemperatures();
  71. display.print("Temp:");
  72. display.setTextSize(2);
  73. display.setCursor(0,10);
  74. display.print(sensors.getTempCByIndex(0));
  75. // Serial.print(sensors.getTempCByIndex(0));
  76. display.print(" C");
  77. display.setTextSize(1);
  78. if(sensors.getTempCByIndex(0)>37){
  79. display.setCursor(0,25);
  80. display.print("Too hot! Heater: Off");
  81. }
  82. else{
  83. display.setCursor(0,25);
  84. display.print("Heater: On");
  85. }
  86.  
  87. display.display();
  88. if(sensors.getTempCByIndex(0)<0){
  89. Serial.println("Error, ");
  90. }
  91. delay(5000);
  92. }
  93. void sensing(){
  94. while(delayTime < heatDelayTime){
  95. sensors.requestTemperatures(); // Get temperature from sensor
  96. temp = sensors.getTempCByIndex(0);// Sort by index, since we only have one sensor it is index 0
  97. Serial.print("Temp, "); // Print temperature to Serial Monitor
  98. Serial.print(temp);
  99.  
  100. printToDisplay("Sensing ", "Temp: (C)", temp, true, delayTime); // Call printToDisplay function
  101.  
  102. delayTime = millis()/1000; // Calculate how long the delay has been running
  103. Serial.print(", DelayTime, "); // Print to Serial Monitor
  104. Serial.println(heatDelayTime - delayTime);
  105. delay(1000);
  106. }
  107. Serial.println("Sensing Completed");
  108. }
  109.  
  110. void startup(){
  111. display.clearDisplay();
  112. display.setCursor(0,0);
  113. display.setTextSize(1);
  114. display.print("ENSURE PROPER SETUP OR SHUT DOWN WITHIN");
  115. display.setCursor(0,18);
  116. display.setTextSize(2);
  117. if(sensing){
  118. display.print(heatDelayTime - delayTime);
  119. }
  120. display.display();
  121. }
  122.  
  123. void printToDisplay(String firstLine, String secondLine, float temp, bool sensing, int delayTime){
  124. display.clearDisplay(); // Clear the display
  125. display.setCursor(0,0); // Start in top left corner
  126. display.setTextSize(2); // Set text size
  127. display.print(firstLine); // Print the first line string
  128. if(sensing){ // Print countdown
  129. display.print(heatDelayTime - delayTime);
  130. }
  131. display.setCursor(0,16); // Move cursor to second line
  132. display.print(secondLine); // Print the second line string
  133. display.setTextSize(4); // Change text size
  134. display.setCursor(0,33); // Move the cursor to the third line
  135. display.print(temp); // Print the temperature
  136. display.display(); // Send changes to display
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement