BASIC4MCU | 질문게시판 | 답변 : avr 블루투스, 초음파, LED 설계
페이지 정보
작성자 master 작성일2020-06-02 22:54 조회3,203회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=12574
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2020-06-02 오후 11:00:01// by Ok-Hyun Park//#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; // 10uScase 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 CMreturn(range);}//int main(void){unsigned int range[2];char data;DDRA=0xFF; // LED PORTDDRC=0x03; // PC0,PC1 ouput Trigger,PC2,PC3 input EchoTCCR1B=0x08; // Set timer up in CTC mode//UCSR0B=0x98; UBRR0L=103;UCSR0B=0x18; UBRR0L=103; // 9600 baudwhile(1){if(!(UCSR0A&0x80)){data=UDR0;tx_char(data);range[0]=getEcho(0); _delay_ms(100);range[1]=getEcho(1); _delay_ms(100);//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; }}}}
댓글 0
조회수 3,203등록된 댓글이 없습니다.