BASIC4MCU | 질문게시판 | 아두이노 코딩 질문
페이지 정보
작성자 kkan 작성일2021-04-13 17:54 조회7,348회 댓글1건본문
int led1 = 13; // LED 핀 번호 13
int led2 = 12; // LED 핀 번호 12
int led3 = 11; // LED 핀 번호 11
int led4 = 10; // LED 핀 번호 10
int flame1 =7; // 불꽃감지 센서 핀 번호 7
int flame2 =6; // 불꽃감지 센서 핀 번호 6
int flame3 =5; // 불꽃감지 센서 핀 번호 5
int flame4 =4; // 불꽃감지 센서 핀 번호 4
int state1 = 0; // 불꽃감지 센서의 상태 값 저장 변수
int state2 = 0;
int state3 = 0;
int state4 = 0;
void setup() {
pinMode(led1, OUTPUT); // LED를 출력으로 설정
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(flame1, INPUT); // 불꽃 감지 센서를 입력으로 설정
pinMode(flame2, INPUT);
pinMode(flame3, INPUT);
pinMode(flame4, INPUT);
Serial.begin(9600);
}
void loop() {
state1 = digitalRead(flame1); // 불꽃 감지 센서값 입력받음
state2 = digitalRead(flame2);
state3 = digitalRead(flame3);
state4 = digitalRead(flame4);
digitalWrite(led1, LOW); // 초기 LED값을 0FF로 설정해주기
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
Serial.print(state1);
Serial.print(state2);
Serial.print(state3);
Serial.print(state4);
if (state1 == 0 ){ // 불꽃 감지 센서1에서 화재를 감시했을때
Serial.println("on1");
digitalWrite(led1, HIGH); // LED ON
digitalWrite(led2, LOW); // LED OFF
digitalWrite(led3, LOW); // LED OFF
}
else if (state2 == 0 ) { // 불꽃 감지 센서2에서 화재를 감시했을때
Serial.println("on2");
digitalWrite(led1, LOW); // LED OFF
digitalWrite(led2, HIGH); // LED on
digitalWrite(led3, LOW); // LED Off
}
else if (state3 == 0 ) { // 불꽃 감지 센서3에서 화재를 감시했을때
digitalWrite(led1, LOW); // LED OFF
digitalWrite(led2, LOW); // LED OFF
digitalWrite(led3, HIGH); // LED ON
}
else if (state4 == 0 ) { // 불꽃 감지 센서4에서 화재를 감시했을때
digitalWrite(led1, LOW); // LED OFF
digitalWrite(led2, HIGH); // LED on
digitalWrite(led3, HIGH); // LED ON
}
else if ( !(state1 || state2) ) { // 불꽃 감지 센서1,2에서 화재를 감시했을때
Serial.println("on5");
digitalWrite(led1, HIGH); // LED on
digitalWrite(led2, HIGH); // LED on
digitalWrite(led3, HIGH); // LED ON
}
else if ( !(state1 || state3) ) { // 불꽃 감지 센서1,3에서 화재를 감시했을때
Serial.println("on6");
digitalWrite(led1, HIGH); // LED on
digitalWrite(led2, HIGH); // LED on
digitalWrite(led3, HIGH); // LED ON
}
else if ( !(state1 || state4) ) { // 불꽃 감지 센서1,4에서 화재를 감시했을때
Serial.println("on7");
digitalWrite(led1, HIGH); // LED on
digitalWrite(led2, HIGH); // LED on
digitalWrite(led3, HIGH); // LED ON
}
else if ( !(state2 || state3) ) { // 불꽃 감지 센서2,3에서 화재를 감시했을때
Serial.println("on8");
digitalWrite(led1, HIGH); // LED on
digitalWrite(led2, HIGH); // LED on
digitalWrite(led3, HIGH); // LED ON
}
else if ( !(state2 || state4) ) { // 불꽃 감지 센서2,4에서 화재를 감시했을때
Serial.println("on9");
digitalWrite(led1, HIGH); // LED on
digitalWrite(led2, HIGH); // LED on
digitalWrite(led3, HIGH); // LED ON
}
else if ( !(state3 || state4) ) { // 불꽃 감지 센서3,4에서 화재를 감시했을때
Serial.println("on10");
digitalWrite(led1, HIGH); // LED on
digitalWrite(led2, HIGH); // LED on
digitalWrite(led3, HIGH); // LED ON
}
delay(100);
}
위와 같이 코딩을 했을 때 경우 센서 1개에 신호가 들어왔을 경우는 정상 작동을 하지만
2개의 신호가 같이 들어왔을 때 led가 켜지지가 않습니다. 코딩을 한지 얼마 안되어서 부족한 곳이 많습니다.
2개 이상의 센서에 신호가 들어올 때 어떻게 하면 코딩한대로 led에 불이 들어오게 할 수 있을까요?
댓글 1
조회수 7,348master님의 댓글
master 작성일
if문의 순서를 보면 1개를 체크 한 후에 2개 동시에 들어온 것을 체크하고 있는데요
순서를 바꿔서 2개짜리부터 체크하고 아랫쪽에 1개를 체크하면 원하는대로 동작합니다.