BASIC4MCU | 질문게시판 | 답변 : 초음파 센서로 LED로 표시
페이지 정보
작성자 master 작성일2018-12-04 22:40 조회9,264회 댓글4건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=6321
작성일
작성일
작성일
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-12-04 오후 10:45:28// by Ok-Hyun Park//#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; // 10uScase 1: Trigger1_ON; _delay_us(10); Trigger1_OFF; break; // 10uScase 2: Trigger1_ON; _delay_us(10); Trigger1_OFF; break; // 10uScase 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 CMreturn(range);}//int main(void){unsigned int range[4];DDRD=0x0F;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; }}}
댓글 4
조회수 9,264egld님의 댓글
egld 작성일
초음파 센서는 연결회로도 확인했는데 동작을 안하는데 혹시 클럭이나 설정을 해야되는건가요?
인터넷 찾아보니깐 C포트는 많은 사람들이 하는데 D포트에는 초음파 센서를 연결한 분들은 못본거같아서요...ㅠㅠ
master님의 댓글
master
GPIO 어느 핀을 사용해도 가능합니다.
//
포트D 또는 포트F가 고장났거나
LED 극성을 반대로 꼽았거나
뭔가 실수하신 부분이 있을겁니다.
오실로스코프가 있으면 파형을 체크하세요
master님의 댓글
master
질문의 초음파센서 예제소스는 수년 전 제가 AVR용으로 처음으로 만든 소스입니다.
소스에는 문제가 없습니다.
3핀짜리 초음파센서는 아니겠죠?
뭔가 확인할 수 있도록 회로도, 부품판매사이트 링크, 데이터시트, 동작 동영상, 연결을 확인할 수 있는 사진 등등 체크에 필요한 모든 자료를 첨부하셔야지 (고장난 것이 아니라면) 체크가 가능합니다.
egld님의 댓글
egld
초음파 센서가 동작하면 LED를 점등하기 위해 DDRF=0xFF;를 넣었습니다. 전원을 주면 LED가 켜지는데 초음파 센서가 동작을 안합니다... 우선 다시 한번 확인해 보고 질문 드리겠습니다!! 감사합니다^^