BASIC4MCU | 질문게시판 | 아두이노 센서 2개를 동시에 인식해야 값을 나타내는 코딩 방법을 알고 싶습니다.
페이지 정보
작성자 따치 작성일2020-08-31 09:49 조회16,220회 댓글4건본문
지금 현재 사진과 같이 브레드보드에 아두이노센서 1개만 꽂혀있습니다.
아두이노 센서를 1개 더 꽂아서 2개의 센서가 인식을 해야만 램프에 불이 들어오고 꺼지게끔 코딩을 짜고싶은데 고수님들 부탁좀 드리겠습니다.
댓글 4
조회수 16,220master님의 댓글
master 작성일
센서 1개로 불을 키는 소스코드를 첨부해보세요
초음파센서 (라이브러리) 방식도 2 종류가 있기 때문입니다.
https://monibu.tistory.com/32
이 예제와 비슷하게 작성한다면
루프문 마지막에 500ms 딜레이가 있는데
500ms 딜레이를 줄일 생각이라면
초음파센서1 측정 후 100ms 딜레이를 주고
초음파센서2 측정 후 100ms 딜레이를 주는 식으로 만들어보세요
즉, 100ms 딜레이를 2번 사용해서 루프 전체로는 200ms 딜레이를 주는 식입니다.
따치님의 댓글
따치
제가 아두이노에 아직 지식이 없어서 일단 제가 한 아두이노 코딩 한 번 올려봅니다.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define TRIG 9 //TRIG 핀 설정 (초음파 보내는 핀)
#define ECHO 8 //ECHO 핀 설정 (초음파 받는 핀)
int LED1 = 5;
int LED2 = 6;
int LED3 = 4;
int m_cds=0;
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x20 for a 16 chars and 2 line display
void setup() {
Serial.begin(9600);
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
lcd.begin();
// Turn on the blacklight and print a message.
lcd.backlight();
}
int cost = 0;
void loop()
{
long duration, distance;
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
duration = pulseIn (ECHO, HIGH); //물체에 반사되어돌아온 초음파의 시간을 변수에 저장합니다.
//34000*초음파가 물체로 부터 반사되어 돌아오는시간 /1000000 / 2(왕복값이아니라 편도값이기때문에 나누기2를 해줍니다.)
//초음파센서의 거리값이 위 계산값과 동일하게 Cm로 환산되는 계산공식 입니다. 수식이 간단해지도록 적용했습니다.
distance = duration * 17 / 1000;
//PC모니터로 초음파 거리값을 확인 하는 코드 입니다.
//Serial.println(duration ); //초음파가 반사되어 돌아오는 시간을 보여줍니다.
//Serial.print("\nDIstance : ");
//Serial.print(distance); //측정된 물체로부터 거리값(cm값)을 보여줍니다.
//Serial.println(" Cm");
if(distance < 500){
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
Serial.println(distance);
lcd.begin();
lcd.print(cost);
lcd.print(" WON");
cost += 10;
}
else if(distance > 500){
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
Serial.println(distance);
lcd.begin();
lcd.print("Waiting");
cost = 0;
}
digitalWrite(LED3, HIGH);
delay(1000); //1초마다 측정값을 보여줍니다.
digitalWrite(LED3, LOW);
}
따치님의 댓글
따치
여기서 어떤 코딩을 어느 위치에 추가해야 2개 센서 동시 인식 할 때 램프가 작동되는지 궁금합니다.
master님의 댓글
master 작성일
에코 측정 후에는 적어도 50ms의 딜레이를 주어야지 먼거리에서 반사되는 에코 신호를 무시해서 신호 안정도를 높일 수 있으며
100ms 정도의 딜레이를 사용하면 50ms보다 조금 더 깨끗한 거리값을 얻을 수 있습니다.
초음파 센서 각각의 측정마다 딜레이를 주어야지 다음 초음파 센서 측정 시 앞의 초음파센서의 에코 노이즈에 영향을 받지 않게 됩니다.