발로 그렸습니다. 흠.. 회로는 저것이 다구요.. 클럭도 내부 클럭이용해서.. 정말 간단합니다. 앗.. 스위치가 빠졌네요.. 스위치는 알아서들 다시면 되겠습니다.
외부인터럽트를 이용하려고 PD2,3에 센서를 연결했는데.. 엄청난 채터링과 알수 없는 오동작으로 그냥 PORT 입력으로 센서를 확인 합니다.
제가 만든것은.. LED를 2개 더 달았습니다. 센서 확인용으로 PORTA에 2개.. 이건 없어두 되는것이라 뺐음
SW 460D는 접점이 2개있어서..양쪽의 기울임을 확인할 수 있습니다. 그런데.. 문제는 아래와 같은 문제가 발생합니다.
실제 움직임과 접점이 ON 되는 시점이 다릅니다. 시점도 다르고.. 게다가 엄청난 채터링..
어쩔수 없이.. 저부분은.. 센서가 on 되는 시점에서 실제로 방향이 바뀌는 부분까지는 딜레이 함수로 해결했습니다. 물론 그때그때 정확하지 않습니다.
흔들때 속도에 따라 넓이에 따라 다 다릅니다.
그냥.. 편하게 흔들때 LED 로 확인 하면서 딜레이 값을 조정했습니다.
이후는 센서와 딜레이로 끝부분을 알고 있다는 가정을 전제로..
제가 한 방법..........................
타이머를 이용해서 .. ABCD 의 시간을 알아 냅니다.
A일때 TCNT=0 으로 해주고..
한쪽 끝에서 다른쪽 끝까지 이동할때.. B(데이터 시작 시간), C(데이터끝나는 시간), D(다른쪽 끝) 지점의 타이머 값을 각각 다른 변수 에 저장 해주었습니다.
이렇게 되면.. 한쪽 끝A에서 0이고 다른쪽끝D에서 타이머 값이 한쪽으로 이동하는 시간입니다.
D= 전체 시간
C-B= 데이터 출력시간
(D-(C-B))/2= A에서B 구간시간(=CD 구간시간)
이 됩니다.
A에서B 구간시간을 아니까.. 이제 뿌려 주면.. 됩니다.
그러니까.. 데이터가 시작되는 시간을 이전에 흔든 시간을 이용해서 결정해 줍니다.
A에서B까지는 While문을 이용해서.. 타이머 값이 A에서B 구간시간이 될때까지 기다리고 있다가..
시간이 되면.. 데이터를 뿌리기 시작
데이터는 그냥 PORTB 로 약간의 한줄씩 뿌려주면 됩니다. 각줄의 딜레이 시간은.. 알아서들.. 흠흠..
한번 뿌려준후에.. 반대쪽으로 뿌려줄때는.. 데이터는 거꾸로 출력해 줘야하고.. ABCD 도 DCBA 가 되어야 합니다.
소스를 올리려 했는데.. 이것저것 수정 해보느라 소스가 이상해 졌네요.. 흠흠..
어렵지 않으니 직접 짜보시길..
|
'03_Ideas > AID_After Image Desplay_잔상표시기' 카테고리의 다른 글
흔들이_After Image Display_jaytee (0) | 2009.12.29 |
---|---|
흔들이_AID_잔상 표시기_2 (0) | 2009.10.14 |
흔들이_AID_잔상표시기_ex_바사라이터 (0) | 2009.10.14 |