'MPU'에 해당되는 글 1건

  1. 2007/05/18 [5/17]드디어 LED 켜기 성공! (8)

5월 17일.

드디어 마이컴을 이용하여 LED를 제어하는 데 성공했습니다!

어제 오늘 계속 프로그램 다운로드가 안되어서 못하고 있었는데, AVR Studio 4에서 다운로드 할 때 뜨는 펌웨어 업그레이드 메시지에서 취소를 누르니 다운로드가 정상적으로 되는군요.

연결은 매우 원시적?으로 했습니다. 아직 회로를 설계하는 기술이 없어서, 어떤 게 좋은 회로인지 감이 안잡히더군요.

사용자 삽입 이미지

사용자 삽입 이미지

처음으로 켠 LED의 모습입니다. LED에 불이 들어왔을 때 너무 기뻐 울 뻔(ㅡㅡ;) 했다는...;;

위 LED를 켠 소스코드입니다.

(Language : c)
  1. #include <avr/io.h>
  2.  
  3. int main(void)
  4. {
  5.     DDRA=0xff;
  6.     PORTA=0xff;
  7.     return 0;
  8. }

보시다시피 캐소드 커먼 방식입니다. 전구가 많아지면 빛이 약해진다는,,,

처음 LED를 켜고 이번엔 센서를 해보겠다는 마음으로 백방으로 일단 발광 소자에서는 LED와 같은 방법으로 발광을 시켰고, 수광은 VCC - 수광 - 저항 - 입력포트 순으로 연결을 하였습니다. 그런데 전혀 반응을 안하더군요. 테스터기로 찍어보니 빛의 밝기에 따라 전류의 양은 변하던데, 전압이 안 변해서 읽지를 못하는 건지 아무튼 3~4시간정도 센서와 씨름하다가 결국에는 카페에 질문 하나 올려 놓고 포기했습니다.

그래도 그걸로 끝내긴 뭐해서 LED와 슈퍼플럭스 8개를 쭉 달아서 순차적으로 불이 들어오는 것을 만들어봤습니다.

사용자 삽입 이미지

사용자 삽입 이미지사용자 삽입 이미지사용자 삽입 이미지

이번엔 애노드 커먼 방식으로 했습니다. 확실히 밝더군요.

8개의 LED 순차적으로 점등 (Language : c)
  1. #include <avr/io.h>
  2.  
  3. int table[8]={0x7e, 0xfc, 0xf9, 0xf3, 0xe7, 0xcf, 0x9f, 0x3f};
  4.  
  5. void DELAY(int time)
  6. {
  7.     while(time>0)
  8.         time--;
  9. }
  10.  
  11. int main(void)
  12. {
  13.     int i;
  14.     DDRA=0xff;
  15.     PORTA=0xff;
  16.     for(i=0;i<8;i++)
  17.     {
  18.         PORTA=table[i];
  19.         DELAY(10000);
  20.     }
  21.     return 0;
  22. }


오늘은 이것으로 만족해야겠습니다.
인터넷을 뒤져보니 센서 활용에는 ADC가 필수던데, 다음번엔 ADC 공부좀 해서 센싱에 성공해야겠습니다.



2008년 1월 19일 이후 작성된 모든 글에 대해서 퍼가는 것을 금지합니다.
퍼가고자 하시는 분은 링크를 달아 주시기 바랍니다.
Posted by Harry