게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
Atmega128 4x4키패드 한번만 봐주세요..
게시물ID : programmer_22711짧은주소 복사하기
작성자 : 기마온
추천 : 0
조회수 : 1166회
댓글수 : 0개
등록시간 : 2018/12/03 01:48:40
123a
456b
789C
*0#D 
 
단순하게 4x4키패드에서 그냥1595누르면 모터 돌아가도록만 하려는데 정말 21시간 버렸네요 ㅜㅜ 너무 답답하네요 ㅠ
최대한 밑에 코드 사용해서 x,y이용해서 만들어보려고 하는데요.. 입력인 행을 인터럽트 4개 사용해서 하는거 같긴한데  도통 제 머리로는 안되네요 ㅜㅜ
쉬울거 같아서 놓지를 못하겠어요 ㅜㅜ  
입력인 행따로 D파트 1,2,3,4 자리에 놓아서 ISR 4개 해주고
출력인 열따로 B파트 1,2,3,4 자리에 넣어주고 어떻게든 해보려고하는데 머리로는 알겠는데 코드로 표현을 못하겟네요... 
전문가님들 구원해 주시면 진짜 어제 생일 때 받은 네네치킨 스노윙치즈 기프티콘 쏴 드릴게요ㅠㅠ
 
키패드 푸티 구동
 
#define F_CPU 16000000
#define COL_OUT PORTB
#define ROW_IN PINB
#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>
#include "UART1.h"
FILE OUTPUT \
= FDEV_SETUP_STREAM(UART1_transmit, NULL, _FDEV_SETUP_WRITE);
FILE INPUT \
= FDEV_SETUP_STREAM(NULL, UART1_receive, _FDEV_SETUP_READ);
uint8_t keystate[4][4];
void read_key(void)
{
 for(int x=0; x<4; x++){//
  COL_OUT |= 0x0F; //
  COL_OUT &= ~(0x01 << x);
  
  _delay_ms(10);
  
  uint8_t read = ROW_IN >> 4;
  for(int y = 0; y < 4; y++){
   if(bit_is_set(read, y)){
    keystate[x][y] = 0;
   }
   else{
    keystate[x][y] = 1;
   }
  }
 }
}
void print_key(void)
{
 for(int x=0; x<4; x++){
  for(int y=0; y <4; y++){
   printf("%c ", (keystate[y][x] ? '0' : '.'));
  }
  printf("\r\n");
 }
 printf("\r\n\r\n");
}
int main(void)
{
 DDRB = 0x0F;
 
 stdout = &OUTPUT;
 stdin = &INPUT;
 
 UART1_init();
 
 while(1)
 {
  read_key();
  print_key();
  
  _delay_ms(1000);
 }
 return 0;
}
 
 
서보모터 구동
 
#define F_CPU 16000000L
#include <avr/io.h>
#include <util/delay.h>
#define ROTATION_DELAY 1000
#define PULSE_MIN 1087
#define PULSE_FIRSTMID   2324

void InitializeTimer3(void)
{
 TCCR3A |= (1 << WGM31);
 TCCR3B |= (1 << WGM32) | (1 << WGM33);
 
 TCCR3A |= (1 << COM3A1);
 
 TCCR3B |= (1 << CS31);
 
 ICR3 = 39999;
}
int main(void)
{
 DDRE |= (1 << PE3);
 
 InitializeTimer3();
 while(1)
 {
  OCR3A = PULSE_MIN;
  _delay_ms(ROTATION_DELAY);
  
  OCR3A = PULSE_FIRSTMID;
  _delay_ms(ROTATION_DELAY);
 }
 
 return 0;
}
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호