BASIC4MCU | 질문게시판 | 답변 : (초보)초음파센서 시니얼모니터에 0cm라고 뜹니다
페이지 정보
작성자 master 작성일2018-12-20 09:35 조회7,221회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=7106
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-12-20 오전 9:39:05// by Ok-Hyun Park//int echo_i=A1,trig_i=A2;int echo_o=A3,trig_o=A4;//int digit[]={10,11,12,13};int seg[]={2,3,4,5,6,7,8,9}; //a,b,c,d,e,f,g,dp순//byte FND[10]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE4,0xFE,0xE6};//long t;int status=0,cnt=0,a;bool flag=0,check=0;//void setup(){Serial.begin(9600);pinMode(echo_i,INPUT); pinMode(trig_i,OUTPUT);pinMode(echo_o,INPUT); pinMode(trig_o,OUTPUT);for(int i=0;i<8;i++)pinMode(seg[i],OUTPUT);for(int i=0;i<4;i++)pinMode(digit[i],OUTPUT);}//void show_digit(int position,int number){byte f[4];f[0]=FND[cnt/1000];f[1]=FND[cnt/100%10];f[2]=FND[cnt/10%10];f[3]=FND[cnt%10];//for(int i=0;i<4;i++){for(int s=0;s<8;s++)digitalWrite(seg[7-i],(f[i]>>i)&1);digitalWrite(digit[i],HIGH);delay(1);digitalWrite(digit[i],LOW);}}}//void loop(){if(millis()-t>100){ t=millis(); // 100ms 마다 초음파센서 측정bool^=1;if(bool){ // 처음엔 i 초음파센서 측정digitalWrite(trig_i,HIGH); delayMicroseconds(10); digitalWrite(trig_i,LOW);float distance_i=pulseIn(echo_i,HIGH)/58.2;Serial.print(distance_i); Serial.println("cm/in");}else{ // 다음엔 o 초음파센서 측정digitalWrite(trig_o,HIGH); delayMicroseconds(10); digitalWrite(trig_o,LOW);float distance_o=pulseIn(echo_o,HIGH)/58.2;Serial.print(distance_o); Serial.println("cm/out");}}//a=0;if(distance_i<30)a|=1; // i 감지if(distance_o<30)a|=2; // o 감지//// 감지 안된 상태에서 처음 감지if((status==0)&&(a==1))status=1;if((status==0)&&(a==2))status=2;//// i가 감지된 후에 o가 감지if((status==1)&&(a==2)){ status=4; cnt++; }//// o가 감지된 후에 1가 감지if((status==2)&&(a==1)){ status=4; cnt--; }//// 둘 다 감지된 후에 감지되지 않은 상태라면 초기화if((status==4)&&(a==0))status=0;//show_digit();}
초음파센서는 느립니다.
(동시에 두 개가 감지되는 일이 없도록) 물체가 천천히 지나가야 합니다.
댓글 0
조회수 7,221등록된 댓글이 없습니다.