Счетчик отжиманий на hc-sr04

gatsby163
Offline
Зарегистрирован: 10.03.2014

Здравствуйте, планирую собрать устройство для подсчета отжиманий. В качестве регистратора использовать датчик приближения hc-sr04, но что-то уперся в тупик с алгоритмом...в принципе счетчик считает, но его можно обмануть если задерживаться в нижней точке то счетчик засчитывает отжимание...)) и потом при подъеме как положено еще плюсует, всю голову уже сломал почему так происходит...почему он прибавляет к gym еденицу когда выполнено условие для counter == 2 но расстояние не подходит по условию, явно что то с if else напутал.

int echoPin = 3; 
int trigPin = 4; 
 int counter = 0; //Переменная счетчик
 int gym = 0;     //Количество отжиманий
void setup() { 
  Serial.begin (9600); 
  pinMode(trigPin, OUTPUT); 
  pinMode(echoPin, INPUT); 
} 
 
void loop() { 
  int duration, cm;                      //
  digitalWrite(trigPin, LOW);            // 
  delayMicroseconds(2);                  //
  digitalWrite(trigPin, HIGH);           //  Замеряем расстояние
  delayMicroseconds(10);                 //
  digitalWrite(trigPin, LOW);            //
  duration = pulseIn(echoPin, HIGH);     //
  cm = duration / 58;                    //
  delay (100);                           //
   
  
  if (cm>25 && counter == 0) {
 counter = 1;
   }
   else if (cm<10 && counter==1) {
   counter = 2;
   }
   else if ( cm > 25 &&  counter == 2 ){
   gym++;
   counter = 0;
   }

    Serial.print(" Отжимания:   "); 
    Serial.println(gym);
    
  
  }

 

DenSyo
Offline
Зарегистрирован: 13.01.2017

сделайте печать переменных cm и counter вместе с gym, неисключены скачки датчика

gatsby163
Offline
Зарегистрирован: 10.03.2014

Да, похоже датчик не может так быстро измерять изменение расстояния, сбоит....проскакивает порой -386 значение)) понял, буду думать какой сенсор можно еще примострячить...нужно чтото бесконтактное

DenSyo
Offline
Зарегистрирован: 13.01.2017

все дешевые датчики так себя ведут. в сети есть алгоритмы стабилизации показаний, например, для датчиков температуры. наберите статистику показаний при разных условиях: есть тело над датчиком, тело на разной высоте, будет примерное понимание какой алгоритм более применим в вашем случае.

ald17
Offline
Зарегистрирован: 26.09.2016

Ну что, придумали что-нибудь? Тоже пытался сделать что-то подобное и тоже столкнулся с ограниченным быстродействием. В "промышленных" образцах применяются механические кнопки, на которые надо лечь грудью...

gatsby163
Offline
Зарегистрирован: 10.03.2014

Да я доделал тогда) если нужно поищу исходники.