로타리엔코더 부품만으로 되어 있는 것(풀업저항10K도 없는) 부산 부품 상점에서 몇개 구입했는데... 처음이라 구글에 떠도는 여러 소스를 사용해 보고 해도
노이즈로 인한 고민했는데 여기에 올려 주신 소스가 제일 안정적으로 동작합니다. 새벽에 일어나면서 생각이 나서 소스를 약간 손질했습니다.
그랬더니 더 좋습니다. delay()만 주었습니다^^ 아주 만족한 결과를 얻었습니다. 감사합니다.
else
{
if( newA != oldA || newB != oldB) // CLK, 또는 DT에서 값을 변경 했을 때
if( oldA == HIGH && newA == LOW) // 지난 CLK가 HIGH이고 새로운 CLK가 LOW 일때(즉, CLK의 값이 변할 때)
{
result = oldB * 2 - 1; // oldB의 값에 따라 -1 또는 +1(반시계방향 -1, 시계방향 +1)
led_light = led_light + result * 5; // led 값 조절
if(led_light < 0 ) led_light = 0; // led_light가 0 이하로 떨어지는 것을 방지
else if(led_light > 255) led_light = 255; // led_light가 255이상으로 올라가는것을 방지
light_setup(count); // 다시 led 불빛 재조절
delay( 30 ); // 노이즈 더 줄이기 위해 5~50 정도 위의 소스가 시간을 얼마나 잡아 먹느냐 또는 사용자가 돌리는 속도 따라 값 조정
}
oldA = newA;
oldB = newB;
}
회원에게만 댓글 작성 권한이 있습니다.