// ===== Настройки =====
const int sensorPin = A1; // TMP36 подключен к A1
const int N = 10; // размер окна скользящего среднего
int readings[N]; // массив последних N значений
int index = 0; // текущий индекс
long total = 0; // сумма последних N значений
void setup() {
Serial.begin(9600);
// Инициализация массива нулями
for (int i = 0; i < N; i++) {
readings[i] = 0;
}
}
void loop() {
// Убираем старое значение из суммы
total -= readings[index];
// Считаем новое аналоговое значение
int newReading = analogRead(sensorPin);
// Записываем новое значение в массив
readings[index] = newReading;
// Добавляем новое значение к total
total += newReading;
// Перемещаем индекс циклически
index = (index + 1) % N;
// Рассчитываем среднее
float average = total / float(N);
// Преобразуем среднее в напряжение
float voltage = average * (5.0 / 1023.0);
// Преобразуем в температуру (°C)
float temperatureC = (voltage - 0.5) * 100.0;
// Вывод в монитор порта
Serial.print("Raw analog value: ");
Serial.print(newReading);
Serial.print(" | Filtered temperature: ");
Serial.print(temperatureC);
Serial.println(" °C");
delay(500); // обновление каждые 0.5 с
}