질문게시판 > 답변 : Atmega128 led 점등

TODAY252 TOTAL2,267,073
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


BASIC4MCU | 질문게시판 | 답변 : Atmega128 led 점등

페이지 정보

작성자 master 작성일2022-05-01 07:51 조회2,864회 댓글8건

본문

	

(1) 프로그램이 시작하면 LED는 왕복 점등 반복


interrupt [EXT_INT2] void external_int2(void){ // 인터럽트 
}
//
void main(){ 
  signed char led=0,dir=1;
  DDRD=0b00000000;  DDRC=0b11111111;  PORTC=~(1<<led);
  EIMSK=0b00000100; EICRA=0b00100000; SREG=0b10000000;
  while (1){
    PORTC=~(1<<led);
    if(dir){ if(++led>7){ led=7; dir=0; } }
    else   { if(--led<0){ led=0; dir=1; } }
    delay_ms(200);
  } 
}

(2) SW를 눌렀을 때 현재 점등된 LED 위치에서 방향 전환
(3) SW를 누를 때마다 방향이 전환되도록 프로그래밍 (현재 점등된 위치에서)

interrupt [EXT_INT2] void external_int2(void){ // 인터럽트 
  dir^=1;
}
//
void main(){ 
  signed char led=0,dir=1;
  DDRD=0b00000000;  DDRC=0b11111111;  PORTC=~(1<<led);
  EIMSK=0b00000100; EICRA=0b00100000; SREG=0b10000000;
  while (1){
    PORTC=~(1<<led);
    if(dir){ if(++led>7){ led=7; dir=0; } }
    else   { if(--led<0){ led=0; dir=1; } }
    delay_ms(200);
  } 
}


(4) 폴링 / 인터럽트 두 가지 방식으로 구현해볼 것 
폴링은 위 1,2,3 방식
아래는 인터럽트 방식


signed char led=0,dir=1;
//
interrupt [EXT_INT2] void external_int2(void){ // 인터럽트 
  if(dir){ if(++led>7){ led=7; dir=0; } }
  else   { if(--led<0){ led=0; dir=1; } }
  PORTC=~(1<<led);
}
//
void main(){ 
  PORTC=~(1<<led);
  DDRD=0b00000000;  DDRC=0b11111111;  PORTC=led;
  EIMSK=0b00000100; EICRA=0b00100000; SREG=0b10000000;
  while(1){} 
}


  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글 8

조회수 2,864

Eleccc님의 댓글

Eleccc 작성일

정말감사합니다....
1.2.3 번이 1코드안에 들어가게만들고싶은데
그냥 붙이면 될까요?너무너무감사합니다.

master님의 댓글

master 댓글의 댓글 작성일

2,3번에 1번이 포함되어 있습니다.

Eleccc님의 댓글

Eleccc 댓글의 댓글 작성일

정말죄송한데 스위치 를 누를떄 방향전환이안되네요.. pd 2 번에 꽂았는데스위치를 누르면 0번으로가네요..  led가 2번불들어왔으면 1번 이나 3번으로 가야하는데.

master님의 댓글

master 댓글의 댓글 작성일

10K 풀업저항 사용하고 있을테고요
스위치에 병렬로 104(0.1uF = 100nF) 커패시터 연결하세요(채터링이 심하면 1uF 또는 10uF 정도를 사용해야 합니다.)
      delay_ms(1000); // delay_ms(200);
딜레이가 길어야지 구분하기 쉬울겁니다.

Eleccc님의 댓글

Eleccc 댓글의 댓글 작성일

풀업저항부분은 문제없는데
 2.3번 시작할때  interrupt [EXT_INT2] void external_int2(void){ // 인터럽트
  dir^=1;
}
// 
이거 치고 void main 들어가니깐  Error: C:.c(16): undefined symbol 'dir'
 가뜨네요 ㅠㅠ

Eleccc님의 댓글

Eleccc 댓글의 댓글 작성일

커패시터없이 저항으로만 가능할까요??

master님의 댓글

master 댓글의 댓글 작성일

char dir=1; // 전역변수로 선언하세요
//
커패시터가 없으면 채터링 막기 어려울텐데요
딜레이로 채터링 방지하는 코드를 추가해보죠
interrupt [EXT_INT2] void external_int2(void){ // 인터럽트
  delay_ms(50);
  dir^=1;
  while(!PIND.2); delay_ms(50); // 스위치를 누르고 있는 동안 대기
  EIFR|=0x04; // 인터럽트 플래그 clear
}
텍트 스위치를 사용하는 경우 50ms 정도의 딜레이면 채터링이 잡힐겁니다.

master님의 댓글

master 작성일

#include <mega128.h>
#include <stdlib.h>
#include <math.h>
#include <delay.h>
//
char dir=1;
//
interrupt [EXT_INT2] void external_int2(void){
  delay_ms(50);
  dir^=1;
  while(!PIND.2); delay_ms(50);
  EIFR|=0x04;
}
//
void main(void){
  char led = 0xFE;
  DDRC = 0xFF; PORTC = led;
  EICRA = 0x20; EIMSK = 0x04; SREG = 0x80;
  while(1){
    PORTC = led;
    if(dir){
      led=(led<<1)|0x01;
      if(led==0x7F)dir=0;
    }
    else{
      led=(led>>1)|0x80;
      if(led==0xFE)dir=1;
    }
    delay_ms(200);
  }
}

질문게시판HOME > 질문게시판 목록

MCU, AVR, 아두이노 등 전자공학에 관련된 질문을 무료회원가입 후 작성해주시면 전문가가 답변해드립니다.
ATMEGA128PWMLED초음파
아두이노AVR블루투스LCD
UART모터적외선ATMEGA
전체 스위치 센서
질문게시판 목록
제목 작성자 작성일 조회
질문 스텝모터 드라이버 선정 질문드립니다. 아흐흑 22-05-18 1233
답변 답변글 답변 : 스텝모터 드라이버 선정 질문드립니다.댓글[1] 이미지 master 22-05-19 1114
질문 아두이노로 모터+드라이버 제어댓글[6] 모토 22-05-18 2374
질문 온도센서로 서보모터 제어 코딩댓글[1] 진수네1조 22-05-18 1476
질문 라즈베리파이 웹캠 데이터 아두이노 전송 (초보)댓글[3] 전자과 22-05-17 1284
질문 아두이노 코딩 도와주세요 (초음파센서와 금속감지센서로 서보모터 제어하기) 이현주 22-05-17 1878
답변 답변글 답변 : 아두이노 코딩 도와주세요 (초음파센서와 금속감지센서로 서보모터 제어하기) master 22-05-18 1449
질문 아두이노 우노 2개와 앱인벤터끼리의 블루투스 통신 방법댓글[3] 이미지첨부파일 pyoleo 22-05-17 2071
질문 졸업작품 첨부파일 ejdog 22-05-16 1460
질문 PCB의 커넥터 연결관련 이슈같은데.. 원인을 정확히 모르겠습니다.댓글[2] 이미지 설계못해서개털림 22-05-16 1571
질문 STM32F767 사용중인데 발열이 발생합니다.댓글[5] 존클라프 22-05-16 2695
질문 리니어 레일 거리 조절댓글[1] 면수 22-05-16 1351
질문 아두이노 심전도 센서 BPM 계산댓글[3] 쥬쥬 22-05-16 1560
질문 아두이노 서로 다른 전압을 가진 부품 제어 이미지 chovo 22-05-16 1134
질문 앱인벤터 질문입니다.댓글[2] 이미지 귀끠우유 22-05-16 2126
질문 아두이노 우노끼리 블루투스 통신댓글[1] 첨부파일 pyoleo 22-05-16 1657
질문 마이크로 받은 입력을 주파수로 변경댓글[3] 생늧판출 22-05-16 1317
질문 while문 안 if문 빠져나오는 방법 kyho3855 22-05-15 1332
답변 답변글 답변 : while문 안 if문 빠져나오는 방법댓글[1] master 22-05-16 1173
질문 초음파센서로 속도구하기(코드 합치는법) 쥰니 22-05-15 1480
답변 답변글 답변 : 초음파센서로 속도구하기(코드 합치는법)댓글[1] master 22-05-16 1241
질문 360서보모터 질문입니다댓글[1] 한잔해2 22-05-14 1256
질문 아두이노 초보 24V DC 제품 제어댓글[2] 제로펲시 22-05-13 1169
질문 임베디드 시스템 디지털 도어락 구현댓글[1] 이미지첨부파일 ejdog 22-05-12 1238
질문 임베디드 시스템 디지털 도어락 구현댓글[1] ejdog 22-05-12 1442
질문 ATMEGA128 TCCR2 = 0X0B가 의미하는것은 무엇인지 궁금합니다. dfas123 22-05-12 1524
답변 답변글 답변 : ATMEGA128 TCCR2 = 0X0B가 의미하는것은 무엇인지 궁금합니다.댓글[1] master 22-05-12 1409
질문 ATMEGA128 0번핀과1번핀 스위치를 누르면 LED점등 속도 제어댓글[3] dfas123 22-05-11 1017
질문 아두이노 로드셀 관련 질문드립니다.댓글[1] 끼약 22-05-11 1359
질문 앱 인벤터 및 아두이노 질문 suhosin 22-05-10 1594
게시물 검색

2022년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2021년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2020년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2019년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2020
모바일버전으로보기