Печатать на 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);
}
@user59787, 👍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
- Как получить ненулевой выход из HX711 и ячейки загрузки?
- Arduino показывает "avrdude: ser_open(): can't open device ”\\.\COM3" после последней загрузки
- FlySky TH9X с Arduino: невозможно заставить функциюpulsIn() возвращать разумные значения для любого канала
- Код датчика RFID+отпечатков пальцев
- Получить изображение из модуля Fingerprint
- Проблема с подключением датчика сердцебиения и температуры на arduino uno, но работает по отдельности
- Ошибка в программе, измеряющей расстояние от ультразвукового датчика
- Я работал над проектом и получил ошибку компиляции для платы arduino uno. пожалуйста, помогите
блок loop() продолжает повторяться снова и снова... подумайте, как бы вы запомнили, каким было значение "distance" в прошлый раз, @jsotola
Сохраните расстояние в другой переменной, например
int DistanceValue;
, а затем вы можете сделать это:if(distance != DistanceValue){Serial.println(distance); DistanceValue = расстояние;}
., @ElectronSurf