BASIC4MCU | 질문게시판 | 답변 : 초음파센서와 led
페이지 정보
작성자 master 작성일2018-04-13 23:39 조회6,460회 댓글1건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=500
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-04-13 오후 11:41:50// by Ok-Hyun Parkint trigPin1=2,echoPin1=3; // 초음파#1int trigPin2=4,echoPin2=5; // 초음파#2int r=12,g=13;int maximumRange=10,minimumRange=0; // 초음파 최대-최소거리 설정int Sound=A1; // 피에조센서//const int system_time=50; // 전체 시스템 시간const int ultrasonic_time=10; // 초음파 측정 시간long duration1,duration2,distance1,distance2; // 펄스 시간,거리 측정용 변수long distance1_a,distance2_a; // 구동연산 변수int ultrasonic_count=2; // 초음파 Count만큼 감지 후 평균 값에 의해 동작 함const long distanse_set=9; // 초음파 사람 감지 세팅 값//int mode=0,cnt=0;//void setup(){Serial.begin(9600);pinMode(trigPin1,OUTPUT); pinMode(echoPin1,INPUT);pinMode(trigPin2,OUTPUT); pinMode(echoPin2,INPUT);pinMode(Sound,OUTPUT); pinMode(r,OUTPUT); pinMode(g,OUTPUT);delay(system_time);digitalWrite(r,HIGH);}//void loop(){delay(system_time); distance1_a=0; distance2_a=0; // #1.초음파 센서 ultrasonic_count 만큼 감지 후 저장//for(int i=1; i<=ultrasonic_count; i++){ /***초음파1 감지***/digitalWrite(trigPin1,HIGH); delayMicroseconds(10); digitalWrite(trigPin1,LOW);duration1=pulseIn(echoPin1,HIGH); distance1=duration1/58.2; // 측정된 시간을 cm로 환산distance1_a=distance1_a+distance1; delay(ultrasonic_time);}for(int i=1; i<=ultrasonic_count; i++){ /***초음파2 감지***/digitalWrite(trigPin2,HIGH); delayMicroseconds(10); digitalWrite(trigPin2,LOW);duration2=pulseIn(echoPin2,HIGH); distance2=duration2/58.2; // 측정된 시간을 cm로 환산distance2_a=distance2_a+distance2; delay(ultrasonic_time);}//distance1=long(distance1_a/ultrasonic_count); distance2=long(distance2_a/ultrasonic_count); //#2.평균if(distance1>=maximumRange)distance1=maximumRange; Serial.println(distance1); //#3.초음파 측정 거리 제한if(distance2>=maximumRange)distance2=maximumRange; Serial.println(distance2);//if(mode==0){if((distance1<=distanse_set)||(distance2<=distanse_set)){ tone(A1,7000,200); Serial.println("\n"); }}if((distance1> distanse_set)||(distance2> distanse_set)){ digitalWrite(Sound,LOW); }//if(++cnt>=55){ cnt=0;mode^=1;if(mode){ digitalWrite(r, LOW); digitalWrite(g,HIGH); }else { digitalWrite(r,HIGH); digitalWrite(g, LOW); }}}
댓글 1
조회수 6,460뭘보노옹님의 댓글
뭘보노옹 작성일정말 감사합니다!! 원하는 구동방식으로 구동이 됩니다!! ㅠㅠ