#include <LiquidCrystal.h>
const float Vref = 1.1;
const int ADC_resolution = 10;
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
float calculateTemperature(float voltage) {
float temperatureThresholds[] = {0.174, 0.299, 0.424, 0.549, 0.674, 0.799, 0.924, 1.049, 1.20525};
int temperatureValues[] = {-40,-30,-20,-10,0, 10, 20, 30, 40, 50, 60, 70, 80}; // Adjust these values based on your conversion graph
float temperature;
int index = 0;
for (int i = 0; i < sizeof(temperatureThresholds) / sizeof(temperatureThresholds[0]); i++) {
if (voltage <= temperatureThresholds[i]) {
index = i;
break;
}
}
if (index > 0) {
float interpolationFactor = (voltage - temperatureThresholds[index - 1]) / (temperatureThresholds[index] - temperatureThresholds[index - 1]);
temperature = temperatureValues[index - 1] + interpolationFactor * (temperatureValues[index] - temperatureValues[index - 1]);
}
return temperature;
}
int adc[] = {100,200, 400, 500, 880, 710};
void setup() {
Serial.begin(115200);
lcd.begin(16, 2);
lcd.clear();
}
void loop() {
for (int i = 0; i < sizeof(adc) / sizeof(adc[0]); i++) {
float voltage = adc[i] * Vref / (pow(2, ADC_resolution) -1) ;
float temperature = calculateTemperature(voltage);
voltage = adc[i] * Vref / (pow(2, ADC_resolution) -1)*1000;
lcd.setCursor(0, 0);
lcd.print("ADC=");
lcd.print(adc[i]);
lcd.setCursor(10, 0);
lcd.print(round(voltage));
lcd.print("mV");
lcd.setCursor(1, 1);
lcd.print("Temp=");
lcd.print(temperature);
lcd.print((char)223);
lcd.print("C");
delay(2000);
}
}