BASIC4MCU | 질문게시판 | atmega128 srf-05 초음파 센서 코딩에 FQ-041 능동 DC부저 코딩 연결 해야하는데 도움 주시면 감사하겠습니다.…
페이지 정보
작성자 도움필요 작성일2024-04-04 10:53 조회20,790회 댓글6건본문
lcd는 사용하지 못해서 빼야하고 FQ-014 능동 DC부저 코드를 만들어서 연결해야하는데 도움 주시면 감사하겠습니다..ㅜㅜ!!!
#include <mega128.h>
#include <stdio.h>
#include <delay.h>
#asm
.equ __lcd_port=0x15 ; //portc
#endasm
#include <lcd.h>
#define USTrgger
#define USEcho
void USInput_Disp();
long Time;
char sbuf[16];
float distData;
float OlddistData;
unsigned int i;
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
Time++;
}
void main(void)
{
PORTC=0xff;
DDRC=0xff;
PORTD=0x01;
DDRD=0x02;
TIMSK=0x01;
lcd_init(16);
#asm("sei")
while(1)
{
USInput_Disp();
lcd_gotoxy(0,0);
sprintf(sbuf,"Dist:%4.0f mm ",distData);
lcd_puts(sbuf);
delay_ms(100);
}
}
void USInput_Disp(void)
{
Time=0;
TCCR0=0x01;
USTrgger=1;
delay_us(10);
USTrgger=0;
while((USEcho==0) &&(Time<=2200));
while((USEcho==1) &&(Time<=2200));
TCCR0=0x00;
distData=(float)(340*(0.016*Time)/2);
if(distData<=50)
distData=OlddistData;
else
OlddistData=distData;
delay_ms(10)
}
댓글 6
조회수 20,790master님의 댓글
master 작성일
#include <mega128.h>
#include <stdio.h>
#include <delay.h>
//
#define USTrgger PORTD.0
#define USEcho PIND.1
#define BUZ PORTC.0
//
char sbuf[16];
unsigned int i;
long Time;
float distData,OlddistData;
//
void USInput_Disp(void){
Time=0;
USTrgger=1; delay_us(10); USTrgger=0;
while((USEcho==0)&&(Time<=2200)); TCCR0=1;
while((USEcho==1)&&(Time<=2200)); TCCR0=0;
distData=340.0*(0.016*(float)Time)/2.0;
if(distData<=50){ distData=OlddistData; BUZ=0; }
else { OlddistData=distData; BUZ=1; }
}
//
interrupt [TIM0_OVF] void timer0_ovf_isr(void){
Time++;
}
//
void main(void){
PORTC=0x01; DDRC=0x01; // Buzzer
PORTD=0x01; DDRD=0x02;
TIMSK=0x01;
#asm("sei")
while(1){
USInput_Disp(); delay_ms(100);
}
}
도움필요님의 댓글
도움필요 작성일코딩 옆에 주석도 같이 해주실수 있으실까요..??
master님의 댓글
master 작성일
주석은 스스로 달아야 합니다.
이해가 안가는 문장은 질문하시면 답변해드리죠
도움필요님의 댓글
도움필요 작성일위에 코드 중에 빼신 부분들은 다 불필요한 부분이라 빼신건가요?
도움필요님의 댓글
도움필요 작성일
코딩해주신거 넣어봤는데 부저가 계속 울리더라구요
부저 포트 초기값을 넣을려고 해도 다른곳에서 에러가 뜨던데 어떤 형식으로 넣으면 되나요?
master님의 댓글
master 작성일
부저 on/off만 구동해서 부저가 정상적으로 구동되는지 확인하시고
거리값을 출력해서 거리측정이 제대로 되는지 확인 가능한 방법을 찾아보세요
uart로 보시든지 하면 되겠죠
하드웨어 제어는 위 두 가지만 하면 될 것 같고
나머지는 C언어만 남겠죠