Вы действительно близки. Проблема, с которой вы столкнулись, заключается в том, что вы читаете локальную переменную, которая выходит за пределы области видимости, как только функция readTemp завершается. Google "Область переменных C ++" для получения дополнительной информации о том, как это работает. Я предполагаю, что у вас также есть глобальная переменная с этим именем, поскольку вы не сообщаете об ошибке компиляции при попытке использовать ее в l oop. Если это так, то вам нужно что-то вроде этого:
Я также исправил вашу линию синхронизации, чтобы она была безопасной для миллисекундного опрокидывания.
void readTemp(){
realTemp = thermo.readFahrenheit();
}
void loop(){
currentRead = millis();
if(currentRead - lastRead >= readDelay){
readTemp();
lastRead = currentRead;
}
encoders();
Serial.println(setTemp);
Serial.println(realTemp);
}
Вам также следует удалить эту строку задержки (0) из функция кодировщика. Эта строка в лучшем случае ничего не делает, а в худшем может вызвать какое-то странное поведение.