BaselAla Ответов: 1

Нахождение счетчика в цикле al


у меня есть эта функция в боковой петле , поэтому я хочу подсчитать количество передач .
из exaplpe , когда zero_cross перемещает форму 1 в 0 , он должен считаться , и когда он перемещается от 0 до 1, он тоже должен считаться.

Что я уже пробовал:

int Zero_Cross;

if(BackFromPowerLoss > 20)
{
Zero_Cross =0 ;
}
else
{
Zero_Cross = 1 ;
}

}

1 Ответов

Рейтинг:
1

Pete O'Hanlon

Простой способ сделать это-иметь две дополнительные переменные, одна из которых отслеживает пересечение от 0 до 1, а другая-от 1 до 0. Вам нужно будет принять во внимание, что вы хотите увеличить эти значения только при изменении Zero_Cross. В качестве примера:

int oneToZero;
int zeroToOne;
int Zero_Cross;
if (BackFromPowerLoss > 20)
{
  if (Zero_Cross == 1)
  {
    oneToZero++;
  }
  Zero_Cross = 0;
}
Вы должны быть в состоянии заполнить остальное из этого фрагмента. Главное, что вам нужно проверить, каково Предыдущее значение Zero_Cross, прежде чем вы его измените.


BaselAla

здесь u8PowerLoss_old будет хранить значение zero_cross , поэтому мне нужно использовать переменные u8PowerLoss_old, чтобы помочь мне найти передачу.

static int u8PowerLoss_old = 0;
int Zero_Cross;

if(BackFromPowerLoss > 20)
{
Zero_Cross =0 ;
}
else
{
Zero_Cross = 1 ;
}
   u8PowerLoss_old = Zero_Cross; // this is a static variable , 
}

Pete O'Hanlon

Так, если заменить (Zero_Cross == 1) Если (u8PowerLoss_old == 1) в моем примере выше.

BaselAla

спасибо (: