Запазил съм си кода като тест.
Измерването дава "криви" стойности – температурата зависи от натоварването на микроконтролера и самозагряването.
Приложение: напр. за анализ на състоянието на устройството "под капака" или друго не прецизно измерване.
offset: разлика между измерената стойност и температура от калибриран термометър, да се въведе напр. след 5-10 минути работа
Ако float не бива да се използва, напр. умножаваме по 100, с целочислени променливи и константи.
Код за потвърждение:
void setup() {
Serial.begin(9600);
ADMUX = (1 << REFS1) | (1 << REFS0) | (1 << MUX3);
ADCSRA |= (1 << ADEN);
}
void loop() {
ADCSRA |= (1 << ADSC);
while (ADCSRA & (1 << ADSC));
int raw = ADCW;
float temperature = (raw - 324.31) / 1.22;
float offset = 4.9;
temperature = temperature + offset;
Serial.print("Raw ADC: ");
Serial.print(raw);
Serial.print(" Temp: ");
Serial.print(temperature);
Serial.println(" oC");
delay(1000);
}