Стек или массив значений

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

Есть датчик температуры. Как выводить не только его текущие показания, но и те, что были 1, 5, 10 минут назад?

Вот мой код:

float tempSensorA = 0;       // Текущая температура с датчика A
float tempPrevA1;            // Предыдущая температура с датчика A
float tempPrevA2;            // Пост-предыдущая температура с датчика A
float tempPrevA3;            // Пост-пост-предыдущая температура с датчика A

long refresh = 2;            // Интервал обновления текущих показаний, сек
long interval1 = 1;          // Интервал обновления предыдущих показаний, мин
long interval2 = 5;          // Интервал обновления пост-предыдущих показаний, мин
long interval3 = 10;         // Интервал обновления пост-пост-предыдущих показаний, мин
long previousMillis1 = 0;
long previousMillis2 = 0;
long previousMillis3 = 0;

void setup() 
{
  refresh = refresh * 1000;          // переводим секунды в миллисекунды
  interval1 = interval1 * 60 *1000;  // переводим минуты в миллисекунды
  interval2 = interval2 * 60 *1000;  // переводим минуты в миллисекунды
  interval3 = interval3 * 60 *1000;  // переводим минуты в миллисекунды

  tempPrevA1 = tempSensorA;
  tempPrevA2 = tempPrevA1;
  tempPrevA3 = tempPrevA2;
}

void loop() 
{ 
  unsigned long currentMillis = millis();

// этот блок работает корректно, раз в 2 сек показания обновляются
  if(currentMillis - previousMillis1 > refresh) 
  {
    previousMillis1 = currentMillis;
    sensorTempRead();  // Опрос датчика температуры
    screenShowData();  // Вывод показаний датчиков
  }

// а этот блок уже не работает
  if(currentMillis - previousMillis2 > interval1) previousMillis2 = previousMillis1;
  if(currentMillis - previousMillis3 > interval2) previousMillis3 = previousMillis2;
}
Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Классический массив подразумевает в себе элементы: tempSensorA[0], tempSensorA[1], tempSensorA[2] ,tempSensorA[3]...

С остальным - я бы навтыкал отладочный вывод значений currentMillis  previousMillis2 interval1 там, где "не работает" и посмотрел - что же там реально происходит...