BASIC4MCU | 질문게시판 | 초음파 센서로 LED로 표시
페이지 정보
작성자 egld 작성일2018-12-04 21:45 조회4,162회 댓글0건본문
초음파 센서가 동작을 하면 LED가 꺼지는 코딩을 했는데 LED가 미동도 없습니다...
코딩에는 오류가 안뜨는데 어떤게 문제인가요?
#include<avr/io.h>
#include<avr/interrupt.h>
#include<stdio.h>
#define F_CPU16000000UL// 16 MHz
#include<util/delay.h>
//
#define Trigger1_ON PORTD|=0x01 //트리거1
#define Trigger2_ON PORTD|=0x02 //트리거2
#define Trigger3_ON PORTD|=0x04 //트리거3
#define Trigger4_ON PORTD|=0x08 //트리거4
//
#define Trigger1_OFF PORTD&=~0x01 //트리거1
#define Trigger2_OFF PORTD&=~0x02 //트리거2
#define Trigger3_OFF PORTD&=~0x04//트리거3
#define Trigger4_OFF PORTD|&=~0x08 //트리거4
//
#define Echo1 (PIND&0x10)//초음파 에코 PC2
#define Echo2 (PIND&0x20)//초음파 에코 PC3
#define Echo3 (PIND&0x40)//초음파 에코 PC2
#define Echo4 (PIND&0x80)//초음파 에코 PC3
char s[30];
//
unsigned int getEcho(char ch){
unsigned int range;
switch(ch){case 0: Trigger1_ON; _delay_us(200); Trigger1_OFF; break; // 10uS
case 1: Trigger1_ON; _delay_us(200); Trigger1_OFF; break; // 10uS
case 2: Trigger1_ON; _delay_us(200); Trigger1_OFF; break; // 10uScase 3: Trigger1_ON; _delay_us(200); Trigger1_OFF; break; // 10uS
}
switch(ch){
case 0: while(Echo1==0x00); TCNT1=0; TCCR1B=2; while(Echo1); break;case 1: while(Echo2==0x00); TCNT1=0; TCCR1B=2; while(Echo2); break;
case 2: while(Echo3==0x00); TCNT1=0; TCCR1B=2; while(Echo3); break;
case 3: while(Echo4==0x00); TCNT1=0; TCCR1B=2; while(Echo4); break;
}TCCR1B=0;range=TCNT1/116;// the range in CM
return(range);
}
int main(void){unsigned int range[4];
DDRD=0x0F;
TCCR1A=0; TCCR1B=8;
_delay_ms(100);
while(1){
range[0]=getEcho(0); _delay_ms(100);range[1]=getEcho(1); _delay_ms(100);
range[2]=getEcho(2); _delay_ms(100);
range[3]=getEcho(3); _delay_ms(100);
if (PORTD|=0x01)
{
PORTF|=1;
}
else{PORTF&=~1;}
if (PORTD|=0x02)
{
PORTF|=2;
}
else{PORTF&=~2;}
if (PORTD|=0x04)
{
PORTF|=4;
}
else{PORTF&=~4;}
if (PORTD|=0x08)
{
PORTF|=8;
}
else{PORTF&=~8;}
}
}
댓글 0
조회수 4,162등록된 댓글이 없습니다.