BASIC4MCU | 질문게시판 | master님!! 도와주세요..
페이지 정보
작성자 egld 작성일2018-12-11 12:52 조회3,499회 댓글0건본문
master님 저번에 초음파 동작 시에 LED 동작하게 하고싶어하는 학생입니다.
초음파 센서와 LED는 작동은 잘 합니다.(초음파 센서는예전에 만든 회로에서 동작시켜보았습니다.)
그런데 master님이 도와주신 코딩에서 LED 동작을 바꿔보니 초음파 센서는 관계없이 LED만 동작하는것을 볼수있었습니다...
어느부분이 문제인지 잘 모르겠습니다.. 회로부분에서는 몇번이나 확인했는데... 동작이안되요..
#include <avr/io.h>
#define F_CPU16000000UL // 16 MHz
#include <util/delay.h>
//
#define Trigger1_ON PORTD|=1 //트리거1
#define Trigger2_ON PORTD|=2 //트리거2
#define Trigger3_ON PORTD|=4 //트리거3
#define Trigger4_ON PORTD|=8 //트리거4
//
#define Trigger1_OFF PORTD&=~1 //트리거1
#define Trigger2_OFF PORTD&=~2 //트리거2
#define Trigger3_OFF PORTD&=~4 //트리거3
#define Trigger4_OFF PORTD&=~8 //트리거4
//
#define Echo1 (PIND&0x10)//초음파 에코 PD4
#define Echo2 (PIND&0x20)//초음파 에코 PD5
#define Echo3 (PIND&0x40)//초음파 에코 PD6
#define Echo4 (PIND&0x80)//초음파 에코 PD7
//
char s[30];
//
unsigned int getEcho(char ch){
unsigned int range;
switch(ch){
case 0: Trigger1_ON; _delay_us(10); Trigger1_OFF; break; // 10uS
case 1: Trigger1_ON; _delay_us(10); Trigger1_OFF; break; // 10uS
case 2: Trigger1_ON; _delay_us(10); Trigger1_OFF; break; // 10uS
case 3: Trigger1_ON; _delay_us(10); Trigger1_OFF; break; // 10uS
}
switch(ch){
case 0: while(!Echo1); TCNT1=0; TCCR1B=2; while(Echo1); break;
case 1: while(!Echo2); TCNT1=0; TCCR1B=2; while(Echo2); break;
case 2: while(!Echo3); TCNT1=0; TCCR1B=2; while(Echo3); break;
case 3: while(!Echo4); 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;
DDRF=0xFF;
while(1){
_delay_ms(100); 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);
if(range[0]<30){ PORTF|=1; } else{ PORTF&=~1; }
if(range[1]<30){ PORTF|=2; } else{ PORTF&=~2; }
if(range[2]<30){ PORTF|=4; } else{ PORTF&=~4; }
if(range[3]<30){ PORTF|=8; } else{ PORTF&=~8; }
}
댓글 0
조회수 3,499등록된 댓글이 없습니다.