질문게시판 > Atmega128과 도트매트릭스을 이용해 16x16미로찾기

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > 질문게시판

Atmega128과 도트매트릭스을 이용해 16x16미로찾기

페이지 정보

작성자 JJEE 작성일23-05-26 17:28 조회462회 댓글0건

본문

조이스틱으로 움직이게 하는 미로찾기를
만들고 싶어요 혹시 도움을 좀 주실수 있을까요? 이 코딩을 하면 16x16에서 오른쪽 절반만 나와요...
#include <mega128.h>
#include <delay.h>
#include <stdio.h>

#define RED PORTC.0
#define GREEN PORTC.1
#define ENABLE PORTC.2
#define LATCH PORTC.3
#define CLOCK PORTA.3

#define X_ST 512
#define Y_ST 512
#define DXY  200

int dot_i=0;
unsigned int dot_gval[16];
unsigned int dot_rval[16];
int gx=0, gy=0;

flash char stage[16]={0x209F, 0xEA91, 0xA97, 0xEA97, 0x2AF4, 0x2A04, 0x2BF4, 0x2894, 0x2094, 0x3E97, 0x291, 0xFE9F, 0x8000, 0xBFFF, 0x8000, 0xFFFF};

void up_move(void);
void down_move(void);
void left_move(void);
void right_move(void);

void main(void)
{
    int i, joy_x=0, joy_y=0;
   
    DDRA=0xFF;
    DDRC=0xFF;
   
    PORTC=0b00001000;
   
    TIMSK=0x01;
    ASSR=0x00;
    TCCR0=0x04;
    TCNT0=0x00;
   
    SREG=0x80;
   

   
    for(i=0;i<16;i++)dot_rval[i]=stage[i]<<0;
    dot_gval[gy]=1<<(15-gx);
   
    ADCSRA=0x87;
   
    while (1)
    { 
        ADMUX=0x0;
        ADCSRA=ADCSRA | 0x40;
        while((ADCSRA & 0x10)==0);
        joy_x=ADCW;
       
        ADMUX=0x01;
        ADCSRA=ADCSRA | 0x40;
        while((ADCSRA & 0x10)==0);
        joy_y=ADCW;
       
        if((joy_x-X_ST)>DXY)up_move();
        else if((X_ST-joy_x)>DXY)down_move();
       
        if((joy_y-Y_ST)>DXY)right_move();
        else if((Y_ST-joy_y)>DXY)left_move();
       
        delay_ms(200);
    }
}

void up_move(void)
{
    int tmp;
   
    if(gy>0){
        tmp=dot_gval[gy];
        dot_gval[gy]=0;
        gy--;
        dot_gval[gy]=tmp;
    }
}

void down_move(void)
{
    int tmp;
   
    if(gy<15){
        tmp=dot_gval[gy];
        dot_gval[gy]=0;
        gy++;
        dot_gval[gy]=tmp;
    }
}

void left_move(void)
{
    if(gx>0){
        gx--;
        dot_gval[gy]<<=1;
    }

}

void right_move(void)
{
    if(gx<15){
        gx++;
        dot_gval[gy]>>=1;
    }
}

interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
    int di;
   
    for(di=0;di<16;di++){
        if(((dot_rval[dot_i]<<di) & 0x8000)!=0) RED=1;
        else RED=0;
       
        if(((dot_gval[dot_i]<<di) & 0x8000)!=0) GREEN=1;
        else GREEN=0;
       
        CLOCK=1;
        delay_us(1);
        CLOCK=0;
        delay_us(1);
    }
   
    ENABLE=1;
    LATCH=0;
    delay_us(2);
    LATCH=1;
    PORTC=(PORTC & 0b00001111) | (dot_i<<4);
    delay_us(2);
    ENABLE=0;
   
    dot_i=(dot_i+1)%16;
}
  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기
  • 카카오톡으로 보내기

댓글 : 0

조회수 : 462

등록된 댓글이 없습니다.

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[29] master  17-10-29
질문 타이머 인터럽트를 이용한 LCD제어 질문입니다. Tell 새글 23-09-27
답변 답변 : 타이머 인터럽트를 이용한 LCD제어 질문입니다… master 새글 09:19
질문 아두이노 무한루프 코드 질문... 댓글[1] vnpaz 새글 23-09-27
질문 질문있습니다ㅠㅠ 부탁드려요 댓글[1] keldeo 새글 23-09-27
질문 0 ~ 99 이중 for문으로 작성하는법! 댓글[2] 상어 새글 23-09-26
질문 리튬배터리로 화면 출력 질문드립니다 ! 댓글[1] 멘탈나간다 새글 23-09-26
질문 lcd,바코드,서보모터, 아두이노 질문 드립니다. ㅠㅠ 댓글[1] 아두이노개발자  23-09-26
질문 stm32에서 변수 값을 유지하는 방법 댓글[1] 라칸  23-09-26
질문 안녕하세요 스위치로 led 제어 관련 질문이 있습니다 댓글[1] 노형빈  23-09-25
질문 16X16 도트 매트릭스 구동방법 질문입니다. 댓글[1] 첨부파일맹균  23-09-25
질문 stm32에서 RTC 시간 함수 쓰는데 의문점 댓글[1] 라칸  23-09-25
질문 GPS 모듈 관련 질문입니다. 댓글[3] 지구과학  23-09-22
질문 아두이노 블루투스와 초음파센서를 이용한 장애물 정지 댓글[2] 둘둘이  23-09-22
답변 답변 : 아두이노 블루투스와 초음파센서를 이용한 장애물… 댓글[1] master  23-09-25
질문 stm32 보드에서 시간설정과 불러오기를 하는데 댓글[5] 라칸  23-09-22
질문 아두이노 인터럽트 질문입니다. 댓글[2] Tell  23-09-21
답변 답변 : 아두이노 인터럽트 질문입니다. 댓글[1] master  23-09-22
질문 아두이노와 거리 감지 센서의 전류 관련 댓글[1] hmkim  23-09-21
질문 아두이노 코딩 질문있습니다. 도와주세요.... 댓글[1] 첨부파일vnpaz  23-09-20
질문 아두이노를 사용한 dc모터 위치제어 댓글[2] 모터위치  23-09-20
질문 stm32 디버깅이나 rst버튼 없이 하는 방법좀 댓글[1] 라칸  23-09-20
질문 LCD에 숫자 표기법을 바꾸고 싶습니 댓글[2] Bs드리프터  23-09-19
질문 알코올 측정기(MQ-3) 관련 질문 소오금  23-09-18
답변 답변 : 알코올 측정기(MQ-3) 관련 질문 master  23-09-19
질문 스텝모터 제어하는 소스파일 수정방법 질문드립니다. Bs드리프터  23-09-15
답변 답변 : 스텝모터 제어하는 소스파일 수정방법 질문드립니… 댓글[1] master  23-09-15
질문 atmega 128을 이용한 악기 튜너기 댓글[1] 아두이노짱  23-09-15
질문 stm32 보드 ip주소 찾는법 댓글[1] 라칸  23-09-13
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전