질문게시판 > avr 블루투스, 초음파, LED 설계

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > 질문게시판

avr 블루투스, 초음파, LED 설계

페이지 정보

작성자 전과자14학번 작성일20-06-02 11:43 조회4,305회 댓글1건

본문

#include <avr/io.h>

#define F_CPU 8000000UL

#include <stdio.h>

#include <util/delay.h>

 

#define Trigger1_ON      PORTC|=1 //초음파 트리거 PC0

#define Trigger1_OFF     PORTC&=~1

#define Trigger2_ON      PORTC|=2 //초음파 트리거 PC1

#define Trigger2_OFF     PORTC&=~2

#define Echo1            (PINC&0x04) //초음파 에코 PC2

#define Echo2            (PINC&0x08) //초음파 에코 PC3

 

//

char rx_char(void){ while(!(UCSR0A&0x80)); return UDR0; }

void tx_char(char tx_data){ while(!(UCSR0A&0x20)); UDR0=tx_data; }

//

 

unsigned int getEcho(char ch){

unsigned int range;

switch(ch){

 

case 0: Trigger1_ON; _delay_us(10); Trigger1_OFF; break;  // 10uS

case 1: Trigger2_ON; _delay_us(10); Trigger2_OFF; break;  // 10uS

 

}

switch(ch){

 

case 0: while(Echo1==0x00); TCNT1=0x00; TCCR1B=0x02; while(Echo1); break;

case 1: while(Echo2==0x00); TCNT1=0x00; TCCR1B=0x02; while(Echo2); break;

 

}

TCCR1B=0x08; range=TCNT1/116;   // the range in CM

return(range);

}

int main(void){ 

unsigned int range[2];

char data;

UCSR0A=0x00; UCSR0B=0x98; UCSR0C=0x06;

UBRR0L=103; UBRR0H=0x00;

DDRA=0xFF;               // LED PORT

DDRC=0x03;               // PC0,PC1 ouput Trigger, PC2,PC3 input Echo

TCCR1B=0x08;             // Set timer up in CTC mode

//UCSR0B=0x18; UBRR0L=103; // 9600 baud

while(1){

data=rx_char();

tx_char(data);

range[0]=getEcho(0); _delay_ms(100);

range[1]=getEcho(1); _delay_ms(100);

 

//

if(data=='1'){

if(range[0]<10||range[1]<10) {PORTA|=0xFF;}

else if (range[0]<20||range[1]<20) {PORTA|=0xFF; _delay_ms(1000); PORTA&=~0xFF;}

else if (range[0]<30||range[1]<30) {PORTA|=0xFF; _delay_ms(1500); PORTA&=~0xFF;}

}

}

}

 

제가 원하는 동작은 어플리케이션 블루투스 연동시켜서 어플의 1스위치 버튼을 눌렀을때, 초음파센서가 작동하면서 초음파센서 조건이 만족했을때 LED가 작동하는걸로 구상중입니다.

그래서 if문을 저렇게 짜봤어요. 근데 실행 시키니까 어플 1스위치를 눌렀을때만 작동이 되더라구요.. 계속적으로 작동이 되어야하는데 버튼을 누르는 그때만 작동이 됩니다 ㅠㅠ 뭔가 소스에 문제가 있는것 같은데 제 지식으로는 저렇게 if 문을 써야하는게 맞지 않나 싶네요..? 

if 문에 세가지 조건 즉 (data=='1' && (range[0]<10 || rang[1]<10))  이렇게도 쓸 수 있는건가요??

  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기
  • 카카오톡으로 보내기

댓글 : 1

조회수 : 4,305

master님의 댓글

master 작성일

UCSR0B=0x98; 인터럽트 함수가 없이 인터럽트를 이네이블 시키면 심각한 오동작을 하게 됩니다.
UCSR0B=0x18;

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[25] master  17-10-29
질문 아두이노 센서 쉴드 v5.0 과 음성인식 모듈(V2)통… 첨부파일AutoSun 새글 17:58
질문 초음파 센서를 사용한 dc모터 제어에 관해 질문 있습니… 첨부파일뉴비에오 새글 22-07-04
답변 답변 : 초음파 센서를 사용한 dc모터 제어에 관해 질… 댓글[2] master 새글 10:56
질문 아두이노 Sensor Shield 5.0 시리얼 통신 … 댓글[2] AutoSun 새글 22-07-04
질문 Atmega 코드 좀 봐주세요. 댓글[1] 첨부파일chelsea 새글 22-07-04
질문 아두이노 while문 탈출 질문 yhj2644  22-07-01
답변 답변 : 아두이노 while문 탈출 질문 댓글[8] master  22-07-01
질문 ESP32-C3 리튬폴리머 ADC 전압 체크 관련 문의… 댓글[3] cansad  22-06-30
질문 ESP32-C3 리튬폴리머 ADC 전압 체크 관련 문의 댓글[3] cansad  22-06-30
질문 빵판없이 디스플레이 넣을 수 있을까요? 댓글[2] 첨부파일오소로롯  22-06-29
질문 라즈베리파이4 신형 선택문제 댓글[1] maximum  22-06-26
질문 음전압 ADC 댓글[2] 412904  22-06-26
질문 아두이노 센서값 출력 질문입니다! 댓글[1] 아궁2  22-06-24
질문 ATmega128, ATmega28 RS232통신 첨부파일Moon4201  22-06-24
답변 답변 : ATmega128, ATmega28 RS232… 댓글[1] master  22-06-25
질문 서보모터, 온습도센서 코드 질문 댓글[2] 첨부파일kshdlfaldfh  22-06-22
답변 답변 : 서보모터, 온습도센서 코드 질문 댓글[15] master  22-06-22
질문 steppermulti5 질문 응애  22-06-21
답변 답변 : steppermulti5 질문 댓글[1] master  22-06-22
질문 atmega128 avr usart 질문 snoflak  22-06-21
답변 답변 : atmega128 avr usart 질문 댓글[5] master  22-06-21
질문 사용자 정의 함수 변환 하는 방법 댓글[2] 첨부파일da0800  22-06-21
질문 atmega128 댓글[1] 양의노래  22-06-20
질문 아두이노 동시동작 재질문 댓글[9] 첨부파일죠르디  22-06-20
질문 초음파센서로 dc모터 제어하기 댓글[1] 첨부파일난쟁2  22-06-20
질문 아두이노 동시동작 댓글[7] 죠르디  22-06-19
질문 ATMEGA128 UART,FND 연동 질문 JMOD  22-06-19
답변 답변 : ATMEGA128 UART,FND 연동 질문 댓글[1] master  22-06-20
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전