BASIC4MCU | 질문게시판 | 아두이노의 지속 시간에 대해 질문합니다.
페이지 정보
작성자 merry 작성일2022-05-23 12:25 조회1,323회 댓글0건본문
적외선 센서로 사람을 인식하면 LED에 불이 들어오고,
변수 num의 값이 감소하여 해당 값을 LCD 모니터에 출력하는 아두이노를 구성하였습니다.
그런데 저는 센서가 사람을 인식하는 동안 계속해서 LED가 켜져있길 원하는데,
delay 시간 동안만 켜지고 다시 꺼졌다가 켜지는 걸 반복합니다.
당연히 LCD 모니터에 출력되는 변수의 값도 delay에 맞춰 바뀝니다.
사람을 인식할 동안 계속해서 해당 값들의 출력이 지속되게 할 순 없을까요?
아래는 내부 코드입니다.
//4핀 LCD모듈
#include <Wire.h>
#include <LiquidCrystal_I2C.h> //LCD 모니터 헤더파일
int num1=0, num2=0, num3=0, num4=0, num5=0, sum=0; //남은 자리 칸을 셀 변수
LiquidCrystal_I2C lcd(0x27, 16, 2); //0x27 주소를 가진 16*2 LCD 객체 생성
// 적외선 장애물 감지 센서 핀 설정
int infrared1 = 2;
int infrared2 = 6;
int infrared3 = 11;
int infrared4 = 4;
int infrared5 = 8;
// LED 핀 설정
int led1 = 3;
int led2 = 7;
int led3 = 12;
int led4 = 5;
int led5 = 9;
void setup() {
lcd.init();
lcd.backlight();
// 적외선 장애물 감지 센서 핀을 INPUT으로 설정합니다.
pinMode(infrared1, INPUT);
pinMode(infrared2, INPUT);
pinMode(infrared3, INPUT);
pinMode(infrared4, INPUT);
pinMode(infrared5, INPUT);
// LED 핀을 OUTPUT으로 설정합니다.
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
lcd.begin(16, 2); //LCD 모니터
lcd.print("EMPTY SEAT is "); //남은 자리 수는
}
void loop() {
// 적외선 감지 센서 부터 센서값을 읽습니다.
// 감지되면 0, 감지되지 않으면 1이 나옵니다.
int state1 = digitalRead(infrared1); delay(1000);
int state2 = digitalRead(infrared2); delay(1000);
int state3 = digitalRead(infrared3); delay(1000);
int state4 = digitalRead(infrared4); delay(1000);
int state5 = digitalRead(infrared5); delay(1000);
{
// 측정된 센서값이 0(감지)면 아래 블록을 실행합니다.
if(state1 == 0){
// LED를 켜지도록 합니다.
digitalWrite(led1, HIGH);
num1=0;
}
/// 측정된 센서값이 0 이외(감지되지 않음) 이면 아래 블록을 실행합니다.
else{
// LED를 꺼지도록 합니다.
digitalWrite(led1, LOW);
num1=1;
}
}
{
// 측정된 센서값이 0(감지)면 아래 블록을 실행합니다.
if(state2 == 0){
// LED를 켜지도록 합니다.
digitalWrite(led2, HIGH);
num2=0;
}
/// 측정된 센서값이 0 이외(감지되지 않음) 이면 아래 블록을 실행합니다.
else{
// LED를 꺼지도록 합니다.
digitalWrite(led2, LOW);
num2=1;
}
}
{
// 측정된 센서값이 0(감지)면 아래 블록을 실행합니다.
if(state3 == 0){
// LED를 켜지도록 합니다.
digitalWrite(led3, HIGH);
num3=0;
}
/// 측정된 센서값이 0 이외(감지되지 않음) 이면 아래 블록을 실행합니다.
else{
// LED를 꺼지도록 합니다.
digitalWrite(led3, LOW);
num3=1;
}
}
{
// 측정된 센서값이 0(감지)면 아래 블록을 실행합니다.
if(state4 == 0){
// LED를 켜지도록 합니다.
digitalWrite(led4, HIGH);
num4=0;
}
/// 측정된 센서값이 0 이외(감지되지 않음) 이면 아래 블록을 실행합니다.
else{
// LED를 꺼지도록 합니다.
digitalWrite(led4, LOW);
num4=1;
}
}
{
// 측정된 센서값이 0(감지)면 아래 블록을 실행합니다.
if(state5 == 0){
// LED를 켜지도록 합니다.
digitalWrite(led5, HIGH);
num5=0;
}
/// 측정된 센서값이 0 이외(감지되지 않음) 이면 아래 블록을 실행합니다.
else{
// LED를 꺼지도록 합니다.
digitalWrite(led5, LOW);
num5=1;
}
}
sum = num1 + num2 + num3 + num4 + num5;
lcd.setCursor(0, 14);
lcd.print(sum); // 칸 수 출력
delay(10000);
}
댓글 0
조회수 1,323등록된 댓글이 없습니다.