BASIC4MCU | 질문게시판 | atmega128에서 초음파 센서(HC-SR04)를 통해 부저 소리를 내려합니다.
페이지 정보
작성자 seung 작성일2022-06-08 06:12 조회7,996회 댓글0건본문
코드를 작성 후 실행을 해보았는데 일정 거리마다 부저 소리의 분주만 바뀔 뿐 소리가 지속적으로 들립니다. 일정 거리 이상 멀어지면 소리가 나지 않아야 하는데 계속 소리가 나네요...
코드 부분에서 문제가 있는지 알려주실 수 있나요? 부저는 PB5, trigger는 PE6, echo는 PE7에 연결된 상태입니다.
#include <avr/io.h>
#include<util/delay.h>
#define F_CPU 16000000UL
#define TRIG 6
#define ECHO 7
#define SOUND_VELOCITY 340UL
int main(void)
{
unsigned int distance;
int i;
distance = (unsigned int)(SOUND_VELOCITY * (TCNT1*4/2)/1000);
DDRB=0x20;
DDRE=((DDRE|(1<<TRIG)) & ~(1<<ECHO));
while(1)
{
TCCR1B=0x03;
PORTE &= ~(1<<TRIG);
_delay_us(10);
PORTE |= (1<<TRIG);
_delay_us(10);
PORTE &= ~(1<<TRIG);
while(!(PINE & (1<<ECHO)))
;
TCNT1=0x0000;
while(PINE & (1<<ECHO))
TCCR1B=0x00;
if(distance<300)
{
for(i=0; i<5; i++)
{
PORTB=0x20;
_delay_ms(1);
PORTB=0x00;
_delay_ms(1);
}
} // 30cm 이내 시 지속적으로 64분주 소리 들림.
else if(distance<600)
{
for(i=0; i<50; i++)
{
PORTB=0x20;
_delay_ms(1);
PORTB=0x00;
_delay_ms(1);
}
_delay_ms(100);
} // 60cm 이내 시 0.1초 간격으로 64분주 소리 들림.
else if(distance<1000)
{
for(i=0; i<250; i++)
{
PORTB=0x20;
_delay_ms(1);
PORTB=0x00;
_delay_ms(1);
}
_delay_ms(300);
}
else
;
} // 1m 이내 시 0.3초 간격으로 64분주 소리 들림.
}
댓글 0
조회수 7,996등록된 댓글이 없습니다.