Fogeaters, Light The World.

16

2016-Sep

[AVR] LED 입출력을 제어해보자 - 1

작성자: title: Zwei츠바이 IP ADRESS: *.27.32.87 조회 수: 1599

책 한권 없이 홀로 고독한 나에게 내려온 빛 줄기들.

그것은 데이터시트와 구글, 그리고 포그이터였다.

원래 인생은 멘땅에 헤딩.




avr 출력 제어에 있어서 가장 효율적인게 바로 LED가 아닐까 싶다.

그야, 은은한 불빛이 눈앞에 생생히 펼쳐지기 때문에.

확실히 인지할 수 있다고 해야하나..


솔직히 나도 입문하는 입장이라 딱히 도움될 거라고 생각 되지는 않지만,

이건 뭐 교육용 글도 아니고 사실상 일지에 가까우니까.


어차피 나도 구글로 여러가지 주워들은 거로 만들었기 때문에.





그럼 시작해보자.


led는 너무 갓 재료이기 때문에

한번 껐다가 키고 버리기엔 상당히 아깝다.

고로 앞으로 점점 심화되고 복잡한(?) 형태의 회로를 만들어가면서,

여러번에 걸쳐서 두고 두고 써먹도록 하겠다.


우선 이번엔 간단하게 8개의 led의 입출력을 동시에 제어해보도록 하자.

말은 거창하지만 그냥 껐다 키는 거다...

깜빡깜빡바가ㅏ막막ㅁ가막ㅁ






준비물은 다음과 같다.


atmega128 장착 보드 / 빵판 / 330옴 저항 8개/ led 8개


우선 회로를 제작하도록 하자.

필자는 다음과 같이 만들었다.


20160916_212453.jpg 20160916_212529.jpg

20160916_212547.jpg


필자가 전자회로 작성 방법을 몰라서 그냥 사진으로 찍어서 업로드 했다.


회로를 살펴보자면,

포트 A의 8개 구멍에서 전기가 방출되어서

각각 저항과 led를 흐르고

직렬로 연결되는 회로를 따라가

결국 gnd로 회수되는 형태이다.


혹시나,

정말 혹시나 나처럼 전자공학을 정말 1도 모르는 사람에게 알려주는 조언아닌 조언이라면,

전기가 +에서 -로 통한다는 건 초등학교 때 배웠을 것이다.

그러니까 반드시 전기가 흘러오는 쪽으로 + 부분을 꽂도록 하자... (긴 쪽)


이제 코딩을 해보도록 하자.

Atmel Studio 정도는 다들 기본으로 깔려있을 것이고,

avr 구동 및 코드 파일 삽입 방법도 다들 아리라 믿는다.

http://fogeaters.cafe24.com/xe/index.php?mid=board11&page=4&document_srl=12289

모르면 여기 보면 된다.


나처럼 atmel 사에서 만든 ASF 보드가 아닌 다른 보드 쓰는 사람들은 GCC C Executable Project를 이용하는 것이 건강에 좋다.


일단 기본적으로 delay.h 헤드 파일이 주어지지 않았으므로 직접 추가해야한다.

처음 시작하면 main.c 탭으로 설정되어 있을텐데

바로 옆의 ASF Wizard 탭 눌러서 추가 할 수 있다. 앞으로 자주 쓸테니 잘 알아두자.


설정하라는 거 다 해주면 라이브러리가 여러개 뜨는데

우리는 Delay routines 만 추가해주면 된다.

참고로 추가해주면 src 폴더 안에 main.c 파일이 하나 더 생기므로

원인도 모른 채 컴파일 오류로 암걸리기 싫으면 즉시 지우는 것이 건강에 좋다.


이제 다음과 같이 코드를 작성하자.


#include <avr/io.h> // avr 입출력 헤더
#define F_CPU 8000000UL // 크리스탈 값 상수화
#include <delay.h> // delay 헤더


int main(void)
{
 PORTA = 0x00; // 포트 A 초기값을 0으로.
 DDRA = 0xFF; // 포트 A를 출력으로 설정.
 
    while (1)  // 무한루프-------
    {
  PORTA = 0xFF; // 포트 A에 전력을 쑤신다.
  delay_ms(100); // 0.1초 간 대기.
 PORTA = 0x00; // 포트 A에 쑤시기를 멈춘다.
  delay_ms(100); // 0.1초간 대기.
    }
 
 return 0;  // 앙 반환 띠
}


delay_ms는 밀리초 동안 대기하도록 해주는 함수다...내가 알기론.

괄호 안에 있는 값은 마음대로 조정해도 상관 없다.


일반 avr 코드랑은 몇가지 차이가 있는데,

#include <util/delay.h> 를 #include <delay.h> 로 했다던가,

_delay_ms(100); 를 delay_ms(100); 로 했다는 것.


원래 코드대로 하니까 컴파일 오류 뜨길래

니 임의대로 바꿨더니 잘 되더라.

처음엔 project 만들때 잘못 설정해서 그런가 싶었는데 아니더라.

원인은 나도 잘 모르겠다; 누가 친절히 설명해주면 참 좋을 것 같다..


여튼...무사히 빌드 되었으면 atmega128에 쑤셔넣어주자.


그러면...


요렇게 광란의 4.4V ㅅㅅ 파티를 즐길 수 있다.


아이 신나라

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 [Web] 클라우드 IDE + 2 title: MoonBlonix 2017-06-25 15121
72 [VS] 다중 프로젝트 dll로 연결하기 title: MoonBlonix 2016-11-13 1626
71 [VS] DllMain 에서 DLL 호출하기 title: MoonBlonix 2016-11-13 1590
70 [Win API] 유니코드, 멀티바이트, TCHAR 문자열함수 title: MoonBlonix 2016-11-08 1457
» [AVR] LED 입출력을 제어해보자 - 1 file title: Zwei츠바이 2016-09-16 1599
68 [알고리즘] 문자열 검색 title: MoonBlonix 2016-04-17 1697
67 [AVR] ATTiny13A 그리고 ADC에 대해 + 2 title: MoonBlonix 2016-04-01 1545
66 [OpenCV] 32bit(x86) 빌드 및 초기설정(GPU, TBB, IPP 등) title: MoonBlonix 2016-03-29 1542
65 [OpenCV] Mat 픽셀 접근방법 title: MoonBlonix 2016-03-26 1676
64 [OpenCV] Mat 구조를 Tesseract 에서 쓸 수 있게 title: MoonBlonix 2016-03-24 1452
63 [영상처리] Bitmap 구조 분석 title: MoonBlonix 2016-03-24 1703
62 [OpenCV] 3.x - 캠 사용 & 얼굴 인식 title: MoonBlonix 2016-03-24 1682
61 [tesseract] (3.0.4) vs2013으로 빌드하기 title: MoonBlonix 2016-03-23 1604
60 [OpenCV] 3.1 설치하기 file title: MoonBlonix 2016-03-17 1425
59 AVR / ARM / DSP 비교 file + 2 title: MoonBlonix 2016-03-12 1735
58 (작성중)[OpenCV/ARM/DSP] 임베디드 환경에서의 OpenCV 사용 title: MoonBlonix 2016-03-12 1602
57 [OpenCV] 예제 코드 모음 file title: MoonBlonix 2016-03-12 1789
56 [OpenCV] 마커 추출 file title: MoonBlonix 2016-03-12 1404
55 [OpenCV] 영상 이진화 & 레이블링(Blob Labeling) file + 3 title: MoonBlonix 2016-03-12 1534
54 [OpenCV] 문자 인식 file + 1 title: MoonBlonix 2016-03-12 1465
53 [AVR] ATTiny13A 에 대한 숨겨진 사실들 title: MoonBlonix 2016-03-10 1626