Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SPI.h>
- #include <Wire.h>
- #include <Adafruit_GFX.h>
- #include <Adafruit_SSD1306.h>
- #include <OneWire.h>
- #include <DallasTemperature.h>
- #define OLED_MOSI 11 //D1
- #define OLED_CLK 12 //D0
- #define OLED_DC 9
- #define OLED_CS 8
- #define OLED_RESET 10
- #define ONE_WIRE_BUS 2
- const int redLight = 2;
- int redVal = 0;
- int relay = 5;
- int greenLight = 6;
- int safety = 10000;
- int delayTime = 0;
- int heatDelayTime = 30;
- float temp = 0.0;
- Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
- OneWire oneWire(ONE_WIRE_BUS);
- DallasTemperature sensors(&oneWire);
- void setup() {
- Serial.begin(9600);
- Serial.println("Dallas Temperature IC Control Library Demo");
- sensors.begin();
- display.begin(SSD1306_SWITCHCAPVCC);
- display.display();
- delay(1000);
- display.clearDisplay();
- display.setTextColor(WHITE);
- pinMode(relay,OUTPUT);
- digitalWrite (relay, HIGH);
- digitalWrite(greenLight,LOW);
- sensing();
- delay(safety);
- }
- void loop() {
- sensors.requestTemperatures();
- // Serial.print("Temp, ");
- // Serial.print(sensors.getTempCByIndex(0));
- if(sensors.getTempCByIndex(0)<0){
- sensors.requestTemperatures();
- if(sensors.getTempCByIndex(0)<0){
- sensors.requestTemperatures();
- if(sensors.getTempCByIndex(0)<0){
- sensors.requestTemperatures();
- }
- if(sensors.getTempCByIndex(0)>37||sensors.getTempCByIndex(0)<0){
- digitalWrite(relay, HIGH);
- digitalWrite(greenLight,LOW);
- // Serial.print(", Heater OFF");
- }
- else{
- digitalWrite(relay,LOW);
- digitalWrite(greenLight,HIGH);
- // Serial.print(", Heater ON");
- }
- sensors.getTempCByIndex(0);
- display.clearDisplay();
- display.setCursor(0,0);
- display.setTextSize(1);
- sensors.requestTemperatures();
- display.print("Temp:");
- display.setTextSize(2);
- display.setCursor(0,10);
- display.print(sensors.getTempCByIndex(0));
- // Serial.print(sensors.getTempCByIndex(0));
- display.print(" C");
- display.setTextSize(1);
- if(sensors.getTempCByIndex(0)>37){
- display.setCursor(0,25);
- display.print("Too hot! Heater: Off");
- }
- else{
- display.setCursor(0,25);
- display.print("Heater: On");
- }
- display.display();
- if(sensors.getTempCByIndex(0)<0){
- Serial.println("Error, ");
- }
- delay(5000);
- }
- void sensing(){
- while(delayTime < heatDelayTime){
- sensors.requestTemperatures(); // Get temperature from sensor
- temp = sensors.getTempCByIndex(0);// Sort by index, since we only have one sensor it is index 0
- Serial.print("Temp, "); // Print temperature to Serial Monitor
- Serial.print(temp);
- printToDisplay("Sensing ", "Temp: (C)", temp, true, delayTime); // Call printToDisplay function
- delayTime = millis()/1000; // Calculate how long the delay has been running
- Serial.print(", DelayTime, "); // Print to Serial Monitor
- Serial.println(heatDelayTime - delayTime);
- delay(1000);
- }
- Serial.println("Sensing Completed");
- }
- void startup(){
- display.clearDisplay();
- display.setCursor(0,0);
- display.setTextSize(1);
- display.print("ENSURE PROPER SETUP OR SHUT DOWN WITHIN");
- display.setCursor(0,18);
- display.setTextSize(2);
- if(sensing){
- display.print(heatDelayTime - delayTime);
- }
- display.display();
- }
- void printToDisplay(String firstLine, String secondLine, float temp, bool sensing, int delayTime){
- display.clearDisplay(); // Clear the display
- display.setCursor(0,0); // Start in top left corner
- display.setTextSize(2); // Set text size
- display.print(firstLine); // Print the first line string
- if(sensing){ // Print countdown
- display.print(heatDelayTime - delayTime);
- }
- display.setCursor(0,16); // Move cursor to second line
- display.print(secondLine); // Print the second line string
- display.setTextSize(4); // Change text size
- display.setCursor(0,33); // Move the cursor to the third line
- display.print(temp); // Print the temperature
- display.display(); // Send changes to display
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement