본문 바로가기

ATMEGA1288

[AVR] 점핑 게임 Jumping Game - LCD로 만드는 게임 [Jumping Game - LCD로 만드는 게임] 방학 시즌이 다가오면서 학교에서도 수행평가와 시험에 대한 마무리가 진행되었다. 이 글에서는 마이크로프로세서 제어 과목에서 내가 1학기 개인과제로 제출한 LCD로 만든 게임 - Jumping Game 프로젝트에 대해서 기록하고자 한다. 일단 거두절미하고 실행영상부터 보여주고자 한다. 이 프로젝트는 LCD를 이용해서 Jumping Game을 구현한다. 하트를 먹으면 100점을 얻으며 장애물에 걸리거나 9900점을 얻으면 게임이 끝난다. 점수 9900점 미만의 경우 모두 게임에 진 것으로 판단한다. 이렇게 얻은 점수를 기준으로 A,B,C,... 등급으로 게임 성적이 표현되며 이것은 6개의 LED로 확인할 수 있다. LED의 색깔이 바뀔 경우 아이템(장애물, .. 2020. 7. 30.
[AVR] LCD1602A를 ATmega128에서 쉽게 사용하기 with lcd1602a_h68 라이브러리 (+ 커스텀 문자 출력, Display Shift) + 2020.06.27 첫 작성 + 2020.06.28 기준으로 lcd1602a_h68에 커스텀 문자를 생성하는 함수가 추가되어 이 부분을 다루는 내용을 추가함 + 2020.06.30 기준으로 lcd1602a_h68에 LCD display를 shift 시키는 함수가 추가되어 이 부분을 다루는 내용을 추가함(이 부분에 대해서 오류랄까 문제를 발견하여 현재 수정 중에 있음) [LCD1602A를 ATmega128에서 쉽게 사용하기 with lcd1602a_h68] 이번에는 ATmega128에서 LCD를 다뤄봤다. 블로그 글만 보면, LED만 실습하다가 갑자기 LCD로 넘어간 것처럼 보이는 데 블로그 실습은 개인적으로 실습한 내용을 다룬 것뿐이라 학교 수업 진도는 계속 나갔다. 어찌됐든 그리하여 LCD를 학교에.. 2020. 6. 27.
[AVR] LED 실습 6. LED 순차 점등 제어(for 문 이용) [LED 실습 5. LED 순차 점등 제어(for 문 이용) ] 이 글에서는 AVR(Atmega128A)에서 LED제어하는 것을 실습한 내용을 다루려고 한다. 이 글은 지식을 나누고자 하는 목적이 아닌 개인 기록의 목적으로 작성했다는 점을 기억하기를 바란다. # 실습 6. LED 순차 점등 제어(for 문 이용) 이 문제에서 알아야 할 것은 LED실습2와 같으므로 생략하겠다. 회로의 경우, 실습1 과 동일하다. 코드의 핵심 동작은 LED 실습 5와 동일하다. 여기서 달라지는 것은 구현 방식이다. 기존에는 while문 안에서 buff 변수의 값이 모두 시프트되었는 지를 확인하여 모두 시프트되어 켜졌을 때 다시 buff 변수에 초깃값을 대입해줬다면, 아래의 코드는 while문의 반복이 시작되었을 때 buff.. 2020. 6. 9.
[AVR] LED 실습 5. LED 순차 점등 제어(if 문 이용) [LED 실습 5. LED 순차 점등 제어(if 문 이용) ] 이 글에서는 AVR(Atmega128A)에서 LED제어하는 것을 실습한 내용을 다루려고 한다. 이 글은 지식을 나누고자 하는 목적이 아닌 개인 기록의 목적으로 작성했다는 점을 기억하기를 바란다. # 실습 5. LED 순차 점등 제어(if 문 이용) 이 문제에서 알아야 할 것은 LED실습2와 같으므로 생략하겠다. 회로의 경우, 실습1 과 동일하다. LED 상태를 기록하는 버퍼 역할의 변수를 선언하고, while(1){}안에서 이 버퍼를 PORTn에 대입한다. 그리고 이 버퍼를 시프트 시킨 값에 1을 더한 후 버퍼에 대입한다. 이때 만약 버퍼값이 0xFF라면 이 작업 대신 버퍼를 초기값인 0x00로 초기화시킨다. 버퍼를 시프트시키고 1을 더하는 .. 2020. 6. 8.
[AVR] LED 실습 4. LED 일일히 설정하여 Shift On/Off [LED 실습 4. LED 일일히 설정하여 Shift ON/OFF ] 이 글에서는 AVR(Atmega128A)에서 LED제어하는 것을 실습한 내용을 다루려고 한다. 이 글은 지식을 나누고자 하는 목적이 아닌 개인 기록의 목적으로 작성했다는 점을 기억하기를 바란다. # 실습 4. LED 일일히 설정하여 Shift ON/OFF 이 문제에서 알아야 할 것은 LED실습2와 같으므로 생략하겠다. 회로의 경우, 실습1 과 동일하다. 먼저 LED를 모두 키고 500ms동안 대기한다. 그 다음에는 LED를 모두 끄고 500ms만큼 대기한다. 그 다음에는 왼쪽 LED 4개를 키고 500ms만큼 대기하고 LED를 모두 끄고 500ms만큼 대기한다. 이번에는 오른쪽 LED 4개를 키고 500ms만큼 대기하고 LED를 모두 .. 2020. 6. 4.
[AVR] LED 실습 3. LED 잔상 실험 [LED 실습 3. LED 잔상 실험 ] 이 글에서는 AVR(Atmega128A)에서 LED제어하는 것을 실습한 내용을 다루려고 한다. 이 글은 지식을 나누고자 하는 목적이 아닌 개인 기록의 목적으로 작성했다는 점을 기억하기를 바란다. # 실습 3. LED 잔상 실험 이 문제에서 알아야 할 것은 LED실습2와 같으므로 생략하겠다. 회로의 경우, 실습1 과 동일하다. 코드의 로직은 LED실습2와 매우 유사하다. 단지 지연 시간만 짧게 해주면 된다. 그 이유는 LED가 짧은 시간 동안 껐다 켜지게 되면 우리 눈에 LED의 "잔상"이 남아 LED가 켜진 것으로 인식하기 때문이다. 이 실습은 그것을 실험하기 위함일 듯하다. 여기서는 지연 시간을 10ms로 설정하였다. #define F_CPU 16000000UL.. 2020. 6. 4.
[AVR] LED 실습 2. LED의 ON/OFF 반복 [LED 실습 2. LED의 ON/OFF 반복 ] 이 글에서는 AVR(Atmega128A)에서 LED제어하는 것을 실습한 내용을 다루려고 한다. 이 글은 지식을 나누고자 하는 목적이 아닌 개인 기록의 목적으로 작성했다는 점을 기억하기를 바란다. # 실습 2. LED의 ON/OFF 반복 이 문제에서 알아야 할 것은 LED실습1 과 동일하지만 지연(delay) 시키는 것을 더 알아야 한다. 일반적으로 ms단위로 delay시키는 함수인 _delay_ms()함수를 사용하며, 이를 위해 F_CPU를 정의하여 외부 클럭을 정의해준다. 내가 사용하고 있는 ATmega128 보드의 경우 16MHz를 사용하고 있어 16000000UL로 정의해줬다. 회로의 경우, 실습1 과 동일하다. 코드의 로직은 단순하다. 먼저 DDR.. 2020. 6. 4.
[AVR] LED 실습 1. LED 출력 포트 설정하고 다 켜놓기 [LED 실습 1. LED 출력 포트 설정하고 다 켜놓기 ] 이 글에서는 AVR(Atmega128A)에서 LED제어하는 것을 실습한 내용을 다루려고 한다. 이 글은 지식을 나누고자 하는 목적이 아닌 개인 기록의 목적으로 작성했다는 점을 기억하기를 바란다. # 실습 1. LED 출력 포트 설정하고 다 켜놓기 이 문제에서 알아야 할 것은 AVR 포트를 출력으로 설정하는 것과 포트의 출력값을 변경하는 것이다. 이것을 위해서는 각각 DDRn 레지스터와 PORTn 레지스터를 다뤄야 한다.(여기서 n은 포트 A,B,C,D ...를 의미한다. 포트의 m핀을 입력으로 설정하고자 한다면 DDRn레지스터의 m번째 비트를 0으로, 출력으로 설정하고 싶다면 DDRn레지스터의 m번째 비트를 1로 설정하면 된다. 포트의 m핀의 .. 2020. 6. 3.
반응형