2012-02-01 2 views
0

좋아, 그래서 각 초 나는 아날로그 소스에서 변수로 값을 읽습니다. 이전에 측정 된 값과 비교하고 특정 임계 값 x ifts 이상인 경우 함수를 호출합니다 (또는 다른 작업 ...).입력이 임계 값보다 높으면 함수를 주기적으로 호출하는 알고리즘입니다. 도움이 필요합니다

내 문제는 다음과 같습니다. 아날로그 값이 시간이 지남에 따라 매우 느리게 변할 때 두 측정 값의 차이가 임계 값을 초과하지 않을 경우 절대로 함수를 호출하지 않습니다.

실제로 함수를 호출하면 이전 값의 변수 만 현재 값으로 설정하는 것이 어떻습니까? 어떻게 문제를 해결하겠습니까? 아니면 당신의 제안은 무엇입니까? 미리 감사드립니다.

void main() 
{ 
curVal = readAlgSrc(); 
prevVal = curVal; 

while(1) 
{ 

    if(oneSecPassed()) curVal = readAlgSrc(); 

    if(abs(prevVal - curVal) > 4) 
    { 
    doStuff(); 
    } 
    prevVal = curVal; 

} 

} 
+0

이것은 구현 방법에 대한 질문보다는 달성하려는 동작을 정의하는 것과 같습니다. – gcbenison

답변

1

예, 그것은 작동합니다 :

이 기본적으로 내 코드입니다. 왜 안 보이지.
한 번에 4 개가 넘는 변경 사항을 잡으려면 현재 코드가이를 수행합니다.
얼마나 걸리더라도 변경 사항을 4 개 이상 잡으려면 제안 된 변경 작업을 수행해야합니다.

참고 :

  1. 모든 코드가 if (oneSecPassed()) 아래에 있어야한다 보인다.
  2. 값이 감소하지 않는다고 가정하는 것 같습니다. 그렇다면 현재 코드는 100에서 0으로 변경되고 101까지 백업하면 아무 일도하지 않습니다. 원하는 동작이면 OK를 누릅니다.
관련 문제