BASIC4MCU | 질문게시판 | 초음파 센서 2개를 이용한 카운트
페이지 정보
작성자 이이힝현 작성일2022-11-25 09:21 조회1,295회 댓글0건본문
초음파 센서를 이용해서 인원카운트를 할려고 합니다.
직사각형 면에 양쪽 출입구에서 초음파 2개씩 설치하여 총 4개를 이용하여, 카운트하려고 합니다.
초음파는 총 4개를 이용하려고 하며, 카운트 된수를 LCD에 나타내고 일정수 이상이 될때 2개의 서보모터까지 작동하려고 합니다.
제가 아두이노에 익숙하지 않아, 초음파 센서 2개를 이용해 카운트가 쉽지 않은 것 같습니다.
초음파 1>2,3>4는 인원수 + '들어옴'
초음파 2>1,4>3은 인원수 - '나감'
아래는 코딩인데, 한번만 살펴봐주세요ㅠㅠ
#include <Servo.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
LiquidCrystal_I2C lcd2(0x27, 16, 2);
int trig1 = 2;
int trig2 = 4;
int trig3 = 6;
int trig4 = 8;
int echo1 = 3;
int echo2 = 5;
int echo3 = 7;
int echo4 = 9;
int count = 0;
Servo myservo1;
Servo myservo2;
void setup() {
Serial.begin(9600);
pinMode(trig1, OUTPUT); // trigPin을 출력으로
pinMode(echo1, INPUT); // echoPin을 입력이다.
pinMode(trig2, OUTPUT); // trigPin을 출력으로
pinMode(echo2, INPUT); // echoPin을 입력이다.
pinMode(trig3, OUTPUT); // trigPin을 출력으로
pinMode(echo3, INPUT); // echoPin을 입력이다.
pinMode(trig4, OUTPUT);
pinMode(echo4, INPUT);
lcd.begin();
lcd.backlight();
lcd2.begin();
lcd2.backlight();
myservo1.attach(10);
myservo2.attach(11);
}
void loop() {
// 초음파 신호 송신
digitalWrite(trig1, LOW);
delayMicroseconds(2);
digitalWrite(trig1, HIGH);
delayMicroseconds(5);
digitalWrite(trig1, LOW);
//초음파 신호 수신
double duration1 = pulseIn(echo1, HIGH);
double distance1 = duration1 / 29 / 2 ;
// 초음파 신호 송신
digitalWrite(trig2, LOW);
delayMicroseconds(2);
digitalWrite(trig2, HIGH);
delayMicroseconds(5);
digitalWrite(trig2, LOW);
//초음파 신호 수신
double duration2 = pulseIn(echo2, HIGH);
double distance2 = duration2 / 29 / 2 ;
// 초음파 신호 송신
digitalWrite(trig3, LOW);
delayMicroseconds(2);
digitalWrite(trig3, HIGH);
delayMicroseconds(5);
digitalWrite(trig3, LOW);
//초음파 신호 수신
double duration3 = pulseIn(echo3, HIGH);
double distance3 = duration3 / 29 / 2 ;
// 초음파 신호 송신
digitalWrite(trig4, LOW);
delayMicroseconds(2);
digitalWrite(trig4, HIGH);
delayMicroseconds(5);
digitalWrite(trig4, LOW);
//초음파 신호 수신
double duration4 = pulseIn(echo4, HIGH);
double distance4 = duration4 / 29 / 2 ;
if(distance1<10){
distance2<10;
count = count+1;
Serial.println(count);
lcd.setCursor(0,0);
lcd.print("People ");
lcd.print(count);
lcd2.setCursor(0,0);
lcd2.print("People ");
lcd2.print(count);
delay(100);
}
if(distance2<10){
distance1<10;
count = count-1;
Serial.println(count);
lcd.setCursor(0,0);
lcd.print("People ");
lcd.print(count);
lcd2.setCursor(0,0);
lcd2.print("People ");
lcd2.print(count);
delay(100);
}
if(distance4<10){
distance3<10;
count = count+1;
Serial.println(count);
lcd.setCursor(0,0);
lcd.print("People ");
lcd.print(count);
lcd2.setCursor(0,0);
lcd2.print("People ");
lcd2.print(count);
delay(100);
}
if(distance3<10){
distance4<10;
count = count-1;
Serial.println(count);
lcd.setCursor(0,0);
lcd.print("People ");
lcd.print(count);
lcd2.setCursor(0,0);
lcd2.print("People ");
lcd2.print(count);
delay(100);
}
if(count>5){
myservo1.write(180);
myservo2.write(180);}
else{
myservo1.write(0);
myservo2.write(0);}
}
댓글 0
조회수 1,295등록된 댓글이 없습니다.