#include #include #include #include #include #include #include #define ONE_WIRE_BUS 4 #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels // Declaration for an SSD1306 display connected to I2C (SDA, SCL pins) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); int temperature = 0; #define DHTPIN 2 // Digital pin connected to the DHT sensor // Uncomment the type of sensor in use: //#define DHTTYPE DHT11 // DHT 11 #define DHTTYPE DHT22 // DHT 22 (AM2302) //#define DHTTYPE DHT21 // DHT 21 (AM2301) DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(115200); Serial.print("starting"); dht.begin(); sensors.begin(); if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("SSD1306 allocation failed")); for(;;); } } void loop() { delay(200); sensors.requestTemperatures(); temperature = sensors.getTempCByIndex(0); //read temperature and humidity and put in variables t and h float t = dht.readTemperature(); float h = dht.readHumidity(); if (isnan(h) || isnan(t)) { Serial.println("Failed to read from DHT sensor!"); } //clear display display.clearDisplay(); // display temperature display.setTextSize(1); display.setCursor(0,6); display.print("Temperature: "); display.setTextSize(2); display.setCursor(18,16); display.print(t); display.print(" "); display.setTextSize(1); display.cp437(true); display.write(167); display.setTextSize(2); display.print("C"); Serial.print(t); // display humidity display.setTextSize(1); display.setCursor(0, 40); display.print("Humidity: "); display.setTextSize(2); display.setCursor(18, 50); display.print(h); display.print(" %"); //display soil temp display.setCursor(0, 50); display.print("Soil temp: "); display.setTextSize(2); display.setCursor(18, 50); display.print(temperature); display.display(); delay(2000); }