BASIC4MCU | 질문게시판 | 답변 : Atmega128 광센서를 이용한 led 제어+외부인터럽트 스위치
페이지 정보
작성자 master 작성일2021-10-27 08:48 조회2,425회 댓글1건본문
스위치가 on되면 0V가 입력되고 인터럽트가 발생하고
광센서를 노출시키면 led 가 켜지고 광센서를 차단하면 led 가 꺼져야 합니다
그리고 스위치가 눌리면 눌린 이후에는 반대로 광센서를 차단하면 led가 켜지고 광센서를 노출시키면 led가 꺼져야 합니다
광센서를 가변저항으로 생각하는것이 맞나요? 그래서 가변저항 넣는 코드를 넣어보았는데 광센서를 차단해도 아무일도 일어나지 않습니다..
스위치는 풀업 저항 입니다.
//
#include <avr/io.h>
#include <avr/interrupt.h>
#define F_CPU 16000000UL
#include <util/delay.h>
#include <stdio.h>
//
volatile char state=1; //초기 led 켜짐
//
ISR(INT0_vect){ state^=1; } //led 상태 전환
//
int main(void){
int read;
DDRB=0x01; PORTB=0x01; //led 꺼진상태에서 시작
DDRD=0x00; PORTD=0x01; //PD0 핀의 풀업 저항 사용
ADMUX=0x40; ADCSRA=0xE7;
EICRA=0xAA; EIMSK=0x01; //INT0 하강엣지
sei();
while(1){
_delay_ms(1); read=read_ADC(); // 광센서
if(state==0){
if(read>300)state=1; //광센서 차단시 //led 켜짐
}
else{ //state=1
if(read>300)state=0; //광센서 차단시 //led 꺼짐
}
//
if(state)PORTB=1; else PORTB=0;
}
return 0;
}
댓글 1
조회수 2,425pupuro님의 댓글
pupuro 작성일감사합니다 !