подсчёт количества препятствий

alexdm181202
Offline
Зарегистрирован: 10.06.2019


#define ECHO 5
#define TRIG 4
long duration, cm, average;
int x = 0;
long aver[3];   //массив для расчёта среднего арифметического
byte empty_signal;               // храним уровень пустого сигнала
unsigned long standby_timer;
void setup() {
  Serial.begin(9600);
  pinMode(TRIG, OUTPUT);
  pinMode(ECHO, INPUT);
}
void measure() {
  digitalWrite(TRIG, LOW);
  delayMicroseconds(5);
  digitalWrite(TRIG, HIGH);
  delayMicroseconds(15);
  digitalWrite(TRIG, LOW);
  pinMode(ECHO, INPUT);
  duration = pulseIn (ECHO, HIGH);
  cm = (duration / 2) / 29.1;
}
void loop () {
  for (int i = 0; i <= 2; i++) { //заполняем массив тремя измерениями
    measure();               //измерить расстояние, получаем dist
    aver[i] = cm;          //присваиваем значение dist элементу массива с номером i
    delay(50);              //рекомендуемая задержка между измерениями
  }
  cm = (aver[0] + aver[1] + aver[2]) / 3; //расчёт среднего арифметического с 3-х измерений
  if ( cm < 10 ) {
    delay(100);
    x = x + 1;
    Serial.print("y=");
    Serial.println(x);
    if (cm > 10) {
      x = 0;
      Serial.print("x=");
      Serial.println(x);
    }
    else {
      delay(10);
      x = x;
      Serial.print("z=");
      Serial.println(cm);
    }
  }
}

 

вот программа, но я не могу прописать что бы подсчет вёлся после ухода препятсвия от датчик 

как можно прописать этот момент??

 

vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014

Вам надо поработать над ЛОГИКОЙ. Код в строчках 35-39 не выполнится никогда следовательно х никогда не станет 0.

Особенно мне понравилась строчка 42 (х = х)

qbit
Offline
Зарегистрирован: 18.03.2019

alexdm181202 пишет:



...что бы подсчет вёлся после ухода препятсвия от датчик...

 

Что является критерием "ухода препятсвия от датчик"а?