BASIC4MCU | 질문게시판 | 답변 : 초음파 센서 2개를 이용한 카운트
페이지 정보
작성자 master 작성일2022-11-25 14:32 조회713회 댓글0건본문
#include <Servo.h>
Servo myservo1;
Servo myservo2;
//
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd1(0x27,16,2);
LiquidCrystal_I2C lcd2(0x27,16,2);
//
int trig1=2,echo1=3;
int trig2=4,echo2=5;
int trig3=6,echo3=7;
int trig4=8,echo4=9;
//
int count=0;
int Stat12=0,Stat34=0;
//
void setup(){
pinMode(trig1,OUTPUT); pinMode(echo1,INPUT);
pinMode(trig2,OUTPUT); pinMode(echo2,INPUT);
pinMode(trig3,OUTPUT); pinMode(echo3,INPUT);
pinMode(trig4,OUTPUT); pinMode(echo4,INPUT);
//
lcd1.begin(); lcd1.backlight();
lcd2.begin(); lcd2.backlight();
//
myservo1.attach(10); myservo2.attach(11);
//
Serial.begin(9600);
}
//
void loop(){
digitalWrite(trig1,1); delayMicroseconds(10); digitalWrite(trig1,0);
double duration1=pulseIn(echo1,1);
double distance1=duration1/58;
if(distance1<10)distance1=1; else distance1=0; // 10cm이내면 1, 아니면 0
delay(100);
//
digitalWrite(trig2,1); delayMicroseconds(10); digitalWrite(trig2,0);
double duration2=pulseIn(echo2,1);
double distance2=duration2/58;
if(distance2<10)distance2=1; else distance2=0;
delay(100);
//
digitalWrite(trig3,1); delayMicroseconds(10); digitalWrite(trig3,0);
double duration3=pulseIn(echo3,1);
double distance3=duration3/58;
if(distance3<10)distance3=1; else distance3=0;
delay(100);
//
digitalWrite(trig4,1); delayMicroseconds(10); digitalWrite(trig4,0);
double duration4=pulseIn(echo4,1);
double distance4=duration4/58;
if(distance4<10)distance4=1; else distance4=0;
delay(100);
//------------------------------------
if(!distance1 && distance2){ // 2만 10cm이내
if(Stat12!=1){ Stat12=1; count++; }
}
else if(distance1 && !distance2){ // 1만 10cm이내
if(Stat12!=2){ Stat12=2; count--; }
}
else{ Stat12=0; } // 둘 다 10cm 이내 또는 둘 다 10cm 이상
//------------------------------------
if(!distance3 && distance4){ // 4만 10cm이내
if(Stat34!=1){ Stat34=1; count++; }
}
else if(distance3 && !distance4){ // 3만 10cm이내
if(Stat34!=2){ Stat34=2; count--; }
}
else{ Stat34=0; } // 둘 다 10cm 이내 또는 둘 다 10cm 이상
//------------------------------------
Serial.println(count);
//------------------------------------
if(count>5){ myservo1.write(180); myservo2.write(180); }
else { myservo1.write( 0); myservo2.write( 0); }
//------------------------------------
lcd1.setCursor(0,0); lcd1.print("People "); lcd1.print(count);
lcd2.setCursor(0,0); lcd2.print("People "); lcd2.print(count);
}
댓글 0
조회수 713등록된 댓글이 없습니다.