//DS18B20 ESP32 Temperature Function //Definitions and Pins const int ONE_WIRE_BUS = 14; //Libraries and Objects #include #include DeviceAddress bottomSensorAddress = {0x28,0xC4,0xA0,0x51,0x38,0x19,0x01,0xC2}; //1 DeviceAddress surfaceSensorAddress = {0x28,0x0B,0xDB,0x60,0x38,0x19,0x01,0xA3}; //2 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature DS18B20(&oneWire); //3 //Variables float bottomTem = 0.00; //4 String bottomTemperature = ""; //5 float surfaceTem = 0.00; String surfaceTemperature = ""; const uint8_t AveragingNumberDS18B20 = 5; //6 const uint8_t RESOLUTION = 12; //7 const uint8_t TCONV = 750; //8 uint8_t delayTime = (TCONV/pow(2, (12-RESOLUTION))) + 10; //9 void setup() { Serial.begin(115200); Serial.println("Measurement is starting ..."); } void loop() { measureDS18B20Tem(AveragingNumberDS18B20); //10 Serial.println("Sensor 1 (Bottom) Measurement: " + bottomTemperature + " °C");//11 Serial.println("Sensor 2 (Surface) Measurement: " + surfaceTemperature + " °C"); Serial.println("=============================================="); delay(2000); //12 } //DS18B20 Measurement function void measureDS18B20Tem (const uint8_t AveragingNumber){ //13 DS18B20.begin(); //14 bottomTem = 0; //15 surfaceTem = 0; bottomTemperature = ""; surfaceTemperature = ""; for(byte i = 0; i < AveragingNumber; i++) //16 { DS18B20.requestTemperatures(); //17 delay(delayTime); //18 bottomTem += DS18B20.getTempC(bottomSensorAddress); //19 surfaceTem += DS18B20.getTempC(surfaceSensorAddress); } bottomTem /= AveragingNumber; //20 surfaceTem /= AveragingNumber; if(bottomTem<10) //21 bottomTemperature = "0"; bottomTemperature += bottomTem; //22 if(surfaceTem<10) surfaceTemperature = "0"; surfaceTemperature += surfaceTem; }