Tiny Clock을 만드는데 필요한 개별 기능들에 대한 구현과 확인 절차를 모두 끝냈으면, 마지막으로 개별 기능들을 모두 합쳐 하나의 프로젝트에서 원활하게 각자의 기능을 수행하도록 만들어야 한다.먼저, 시계처럼 보이도록 시간과 분을 표시해 주고 초단위 값을 표시하기 위한 함수를 만든다.void disp_clock(uint8_t h, uint8_t m, uint8_t s) { if (h < 10) send_data(0, 0); else send_data(0, digits[h/10]); if (s & 1) send_data(1, digits[h%10] | 0x80); else send_data(1, digits[h%10]); send_data(2, digits[m/10]); send_data(3, digi..
이번 글에서는 프로그램이 시작되는 시점의 현재 시간을 맞춰 주거나 시간 경과에 따라 시간 오차가 발생할 때, 이를 보정해주기 위하여 사용자가 푸쉬버튼을 눌러 주어 시간과 분에 해당되는 값을 조정하는 방법에 대해서 구현해 보도록 하겠다.시간 단위 조정을 위하여 푸쉬버튼 하나를 이용하고, 분단위 값을 조정하기 위하여 푸쉬버튼을 하나 더 이용하기로 한다.시간을 조정하기 위하여 사용자가 언제 푸쉬버튼을 누를지 알 수 없기 때문에, 버튼을 누르는 순간 즉각 이를 알아내기 위하여 external interrupt를 사용하여야 한다. AVR에는 두가지 종류의 external interrupt를 제공하는데, 하나는 위의 그림에서 초록색 박스로 표시된 INT# 라고 되어 있는 각 핀별로 인터럽트를 발생할 수 있는 방법과..
이번 글에서는 빛의 세기에 따라 저항값이 달라지는 Cds(Photo cell)을 이용하여 빛의 밝기를 측정하는 방법에 대해서 설명하도록 하겠다.회로 구성을 보면 ATtiny85의 7번 핀에 Cds가 연결되어 있는것을 볼 수 있다. Cds의 한쪽은 VCC에 연결되어 있고, 다른 쪽은 10K옴 저항을 통하여 GND에 연결되게 된다.Cds는 빛이 세기가 강해 질 수록 저항값이 감소하게 된다. 당연히 어두워지면 저항값이 증가한다. 빛이 밝아지면 Cds의 저항값이 감소하게 된다는 의미는 10K 저항에 걸리는 전압이 증가한다는 것이고, 이를 ATtiny85의 ADC로 측정하게 되면 큰 값이 읽히게 된다. 반대로 주위가 어두워지면 Cds의 저항값이 증가하고 10K 저항에 걸리는 전압은 상대적으로 낮아지게 된다. 결과..