BASIC4MCU | 질문게시판 | atmega 128 적외선 거리 감지 센서[MD0052] 값이 받아지질 않아서 질문 드립니다 ㅠ
페이지 정보
작성자 dkxmap 작성일2019-11-21 12:06 조회8,988회 댓글2건본문
코드도 주어진 소스 코드를 입력하고 회로도 맞게 연결했는데
거리 값이 측정되지 않고 다음과 같이 떠서 도움을 얻고자 합니다 ㅠㅠㅠ
코드나 회로에 문제가 있는지 조언 부탁드립니다
#define F_CPU 16000000L
#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>
#include "UART1.h"
//#include "uart.h"
#include "adc.h"FILE OUTPUT \
= FDEV_SETUP_STREAM(UART1_transmit, NULL, _FDEV_SETUP_WRITE);FILE INPUT \
= FDEV_SETUP_STREAM(NULL, UART1_receive, _FDEV_SETUP_READ);
void adc_init(unsigned char channel)
{
ADMUX |= (1 << REFS0);
ADCSRA |= 0x07;
ADCSRA |= (1 << ADEN);
ADCSRA |= (1 << ADFR);ADMUX |= ((ADMUX & 0xE0) | channel);
ADCSRA |= (1 << ADSC);
}int adc_read(void)
{
while(!(ADCSRA & (1 << ADIF)));
return ADC;
}void adc_change_channel(unsigned char channel) {
ADMUX = ((ADMUX & 0xE0) | channel);
_delay_us(50);
}float calc_distance(float volt)
{
float val = 0.04 * volt;
return (1/val);
}
int main(void)
{
float volt, dist;
UART1_init();
adc_init(1);
stdout=&OUTPUT;
stdin=&INPUT;
/* Replace with your application code */
while (1)
{
volt = 5.0*adc_read()/1024;
// printf("voltage:%f\r\n", 5.0*adc_read()/1024);
dist = calc_distance(volt);
// if(dist>=10 && dist<=80) {
printf("dist:%f\r\n", dist);
// }
}
}
댓글 2
조회수 8,988master님의 댓글
master 작성일dkxmap님의 댓글
dkxmap
댓글 감사합니다ㅠㅠㅠ !! 덕분에 숫자가 뜨지않는 현상을 해결햇어요