Печатать на serial monitor, когда он обнаруживает изменение значения

Этот код измеряет расстояние от объекта с помощью ультразвукового датчика и выводит его на серийный монитор.

Однако последовательный монитор постоянно выводит значения. Я хочу печатать только один раз, если обнаруженное значение не изменится. и последовательный монитор печатает снова только при обнаружении изменения значения. и Вышеупомянутое условие продолжает повторяться.

Как я могу изменить код?

int distance ;
int trig = 3;
int echo = 2;

void setup()
{
  Serial.begin(9600);
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
}

void loop()
{
  digitalWrite(trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig, LOW);
  distance = pulseIn(echo, HIGH) / 58;
  Serial.println(distance); 
}

, 👍1

Обсуждение

блок loop() продолжает повторяться снова и снова... подумайте, как бы вы запомнили, каким было значение "distance" в прошлый раз, @jsotola

Сохраните расстояние в другой переменной, например int DistanceValue;, а затем вы можете сделать это: if(distance != DistanceValue){Serial.println(distance); DistanceValue = расстояние;}., @ElectronSurf


1 ответ


1
int distance;
int last_distance; // <== Чтобы сохранить значение предыдущего прохода
int trig = 3;
int echo = 2;

void setup()
{
  Serial.begin(9600);
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
}

void loop()
{
  digitalWrite(trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig, LOW);
  distance = pulseIn(echo, HIGH) / 58;
  if (distance != last_distance) {  // <== Проверяем, отличается ли новое расстояние
    Serial.println(distance);       // Печатать, только если значения разные
  }
  last_distance = distance;         // <== Сохраняем расстояние этого цикла для следующего раунда
}
,

Я рекомендую ПРОТИВ предоставления полностью функционального кода для начинающих. Когда вы делаете это, новички склонны копировать/вставлять решение, не понимая его. И для вас, и для ОП будет больше работы, если вы расскажете им, как решить эту проблему, а затем поддержите их, пока они работают над этим, но в конечном итоге спрашивающий узнает больше таким образом., @Duncan C