BASIC4MCU | 질문게시판 | 적외선 센서 코딩
페이지 정보
작성자 jinh 작성일2020-06-13 01:00 조회3,023회 댓글0건본문
적외선 센서를 이용하여 물체 감지후에 서보모터를 이용해서 분사기를 분사시킬 생각입니다.
그런데 적외선 센서 부분 코딩에서 막혀서 그러는데 아래 적외선 센서 코딩좀 확인 부탁드립니다.
CPU는 Atmega128 적외선 센서는 GP2Y0A21 IR C29를 사용했습니다.
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>
void TX0_char(unsigned char data) // UART 0 데이타 송신 함수
{
while((UCSR0A & 0x20) == 0x00);
UDR0 = data;
}
void TX0_string(char *string) // UART 0 문자열 송신 함수
{
while(*string !='\0')
{
TX0_char(*string);
string++;
}
}
int main(void)
{
char str[30]; // 문자열 변수 선언
float distance; // 적외선센서의 거리값 변수
DDRF=0x00; // ADC 0 핀 입력모드
DDRE=0x02; // TXD0 출력모드
ADMUX=0x00; // AREF 전원 사용, ADC값을 ADLAR 레지의 우측을 끝에 맞춰 저장, ADC0 핀 사용, 단극성입력
ADCSRA=0xE7; // 컨버터 허용, 컨버터 시작, 프리러닝모드, 분주비 128(ADC clock = 125 Khz)
UBRR0H = 0;
UBRR0L = 51; // BUADRATE 결정 51 : 19200 BUAD 송수신 속도 결정
UCSR0A = 0x00;
UCSR0B = 0x18; // RxDn, TxDn pin ENABLE
UCSR0C = 0x06; // Parity check disable, 1 stop, 8 data
while(1)
{
_delay_ms(300); // ADC변환준비시간(125uS) + 출력시간을 위한 딜레이
distance = 12343.85*pow(ADC,-1.15); // ADC 10bit 데이터를 cm 단위로 변환 공식
sprintf(str,"distance : %.2f \r\n",(double)distance); // str에 출력문자 저장
TX0_string(str); // UART 통신으로 송신해서 출력
}
}
댓글 0
조회수 3,023등록된 댓글이 없습니다.