BASIC4MCU | 질문게시판 | atmega128 초음파센서(HC-SR04)를 이용한 LED 제어 질문있습니다.
페이지 정보
작성자 호2 작성일2021-12-04 22:43 조회1,795회 댓글2건본문
LED를 E포트에 연결하고 초음파 센서의 Trig와 Echo를 각각 D포트의 0번, 2번핀에 연결하였습니다.
코드를 실행해도 LED에 아무런 반응이 없는데 어떤게 문제인가요?
#define F_CPU 160000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#define Trigger_ON PORTD|=0x01 //초음파 트리거 PD0
#define Trigger_OFF PORTD&=~0x01
#define Echo (PIND&0x02) //초음파 에코 PD2
void hc_sr04_init(void);
unsigned int getEcho(void);
int main(void)
{
DDRE = 0xFF; // LED ON
int range=0;
hc_sr04_init();
while(1)
{
range=getEcho();
if (range < 20)
{
PORTE = 0x00;
_delay_ms(1000);
}
else
{
PORTE = 0xFF;
_delay_ms(1000);
}
}
}
unsigned int getEcho(void)
{
Trigger_ON;
_delay_us(10);
Trigger_OFF; // 10uS
while(Echo==0x00)
{
TCCR1B=0x02;
TCNT1=0x00;
}
while(Echo!=0x00)
{
TCCR1B=0x08;
}
return (TCNT1/58); //cm
}
void hc_sr04_init(void)
{
DDRD=0x03; // PD0 ouput Trigger, PF2 input Echo
TCCR1B=0x08; // Set timer up in CTC mode
TCCR0 = 0x1F;
OCR0 = 243;
}
댓글 2
조회수 1,795master님의 댓글
master 작성일
unsigned int getEcho(void){
Trigger_ON; _delay_us(10); Trigger_OFF; // 10uS
while(Echo==0);
TCCR1B=0x02; TCNT1=0;
while(Echo);
TCCR1B=0x08;
return (TCNT1/58); //cm
}
호2님의 댓글
호2
감사합니다!!