센서 > 초음파센서 2개 - 회전 선풍기

TODAY16,350 TOTAL4,210,599
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


BASIC4MCU | 센서 | 초음파센서 | 초음파센서 2개 - 회전 선풍기

페이지 정보

작성자 키트 작성일2017-08-23 14:45 조회2,007회 댓글0건

본문

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include<mega128.h>      
#include<delay.h>
//
#define trig1 PORTA.// srf04-1 트리거
#define echo1 PINA. // srf04-1 에코
//
#define trig2 PORTA.// srf04-2 트리거
#define echo2 PINA. // srf04-2 에코
//
unsigned char mode,step=0;
unsigned int  cnt1,cnt2;
//
void srf04(){
    trig1=1;       delay_us(10); trig1=0//트리거1
    while(!echo1); TCNT1=0;      TCCR1B=2;
    while( echo1); TCCR1B=0;
    cnt1=TCNT1/116;
    delay_ms(50);
    //
    trig2=1;       delay_us(10); trig2=0//트리거2
    while(!echo2); TCNT1=0;      TCCR1B=2;
    while( echo2); TCCR1B=0;
    cnt2=TCNT1/116;
    delay_ms(50);
    //
    if     (cnt1<100){ OCR0=cnt1; mode=1; } // 0도
    else if(cnt2<100){ OCR0=cnt2; mode=2; } //90도
    else             { OCR0=0;    mode=0; } //서보 회전, DC팬 정지
}
//
void main(void){
    DDRA=0x05;   // 초음파센서
    DDRB=0x10;   // DC팬
    DDRE=0x08;   // RC서보모터
    TCCR0=0x6A;  // DC팬, 8비트 fast pwm 모드
    TCCR3A=0x82; TCCR3B=0x1A; OCR3AH=3000>>8; OCR3AL=3000&0xFF; ICR3H=39999>>8; ICR3L=39999&0xFF// RC서보
    while(1){
        srf04();
        //
        if     (mode==1){ OCR3AH=3000>>8; OCR3AL=3000&0xFF; step=0; } // 0도
        else if(mode==2){ OCR3AH=4600>>8; OCR3AL=4600&0xFF; step=1; } // 90도
        else//mode==0
            if(step==0){ OCR3AH=3000>>8; OCR3AL=3000&0xFF; step=1; delay_ms(400); } //  0도
            if(step==1){ OCR3AH=4600>>8; OCR3AL=4600&0xFF; step=2; delay_ms(400); } // 90도
            if(step==2){ OCR3AH=3000>>8; OCR3AL=3000&0xFF; step=3; delay_ms(400); } //  0도
            if(step==3){ OCR3AH=1400>>8; OCR3AL=1400&0xFF; step=0; delay_ms(400); } //-90도
        }
    }
}
cs
//

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#define F_CPU 16000000UL // 16 MHz
#include <avr/io.h>
#include <util/delay.h>
//
#define trig1_1 PORTA|= // PA0, srf04-1 트리거
#define trig1_0 PORTA&=~// PA0, srf04-1 트리거
#define echo1   (PINA&2)  // PA1, srf04-1 에코
//
#define trig2_1 PORTA|= // PA2, srf04-2 트리거
#define trig2_0 PORTA&=~// PA2, srf04-2 트리거
#define echo2   (PINA&8)  // PA3, srf04-2 에코
//
unsigned char mode,step=0;
unsigned int  cnt1,cnt2;
//
void srf04(){
    trig1_1;       _delay_us(10); trig1_0; //트리거1
    while(!echo1); TCNT1=0;       TCCR1B=2;
    while( echo1); TCCR1B=0;      cnt1=TCNT1/116;
    _delay_ms(50);
    //
    trig2=1;       _delay_us(10); trig2=0//트리거2
    while(!echo2); TCNT1=0;       TCCR1B=2;
    while( echo2); TCCR1B=0;      cnt2=TCNT1/116;
    _delay_ms(50);
    //
    if     (cnt1<100){ OCR0=cnt1; mode=1; } // 0도
    else if(cnt2<100){ OCR0=cnt2; mode=2; } //90도
    else             { OCR0=0;    mode=0; } //서보 회전, DC팬 정지
}
//
int main(void){
    DDRA=0x05;   // 초음파센서
    DDRB=0x10;   // DC팬
    DDRE=0x08;   // RC서보모터
    TCCR0=0x6A;  // DC팬, 8비트 fast pwm 모드
    TCCR3A=0x82; TCCR3B=0x1A; OCR3AH=3000>>8; OCR3AL=3000&0xFF; ICR3H=39999>>8; ICR3L=39999&0xFF// RC서보
    while(1){
        srf04();
        //
        if     (mode==1){ OCR3AH=3000>>8; OCR3AL=3000&0xFF; step=0; } // 0도
        else if(mode==2){ OCR3AH=4600>>8; OCR3AL=4600&0xFF; step=1; } // 90도
        else//mode==0
            if(step==0){ OCR3AH=3000>>8; OCR3AL=3000&0xFF; step=1; _delay_ms(400); } //  0도
            if(step==1){ OCR3AH=4600>>8; OCR3AL=4600&0xFF; step=2; _delay_ms(400); } // 90도
            if(step==2){ OCR3AH=3000>>8; OCR3AL=3000&0xFF; step=3; _delay_ms(400); } //  0도
            if(step==3){ OCR3AH=1400>>8; OCR3AL=1400&0xFF; step=0; _delay_ms(400); } //-90도
        }
    }
}
cs

//

RC서보는 700us~2300us 범위로 회전합니다.
//
사람이 디텍트 되지 않았을 때에 RC서보는 계속 회전합니다.
회전 시 이동 후 정지하는 시간이 길면 delay_ms(400); 딜레이 시간을 줄이세요
//
거리가 멀면 DC팬 속도 증가 거리가 가까워지면 DC팬 속도 감소
//
2093095301_TiYyFCdG_DC12V_25C625D225B125B825B525BF.PNG3Ftype3Dw740
DC팬은 PB4에 연결합니다

 

댓글 0

조회수 2,007

등록된 댓글이 없습니다.

센서HOME > 센서 > 초음파센서 목록

게시물 검색

2022년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2021년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2020년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2019년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2020
모바일버전으로보기