#include <Arduino.h>
// Pins and constants
#define TRIG_PIN 14 // D5 on ESP8266
#define ECHO_PIN 12 // D6 on ESP8266
const int analogPin = 34; // GPIO 34 for analog input
const float nominalResistance = 10000; // 10k Ohm nominal resistance at 25 degrees C
const float nominalTemperature = 25; // nominal temperature value (in Celsius)
const float bCoefficient = 3950; // Beta coefficient of the thermistor (usually 3000-4000)
const int seriesResistor = 10000; // 10k Ohm series resistor
// Shared variables
volatile long distance;
volatile float temperatureC;
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
}
void loop() {
measureDistance();
measureTemperature();
// Print distance and temperature values
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
Serial.print("Temperature: ");
Serial.print(temperatureC);
Serial.println(" °C");
delay(1000); // Delay for 1 second
}
// Function to measure distance
void measureDistance() {
long duration;
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
distance = (duration / 2) / 29.1;
}
// Function to measure temperature
void measureTemperature() {
int analogValue = analogRead(analogPin);
float resistance = seriesResistor / (4095.0 / analogValue - 1);
float temperatureK = 1.0 / (1.0 / (nominalTemperature + 273.15) + 1.0 / bCoefficient * log(resistance / nominalResistance));
temperatureC = temperatureK - 273.15;
}