정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

아두이노 불꽃센서 온도센서 if문 수정 하고 싶어요 도와주세요 제발 제발제발
박준현 | 2015-11-23


float temperature; 
int reading; 
int lm35Pin = A0;
int ledPin = 12;

int ledPin1 = 13;                // 13번 핀에 LED를 연결합니다.
int flame = 2;               // 디지털 2번핀에 불꽃감지센서를 연결합니다.
int pirState = LOW;             // 불꽃 감지 센서의 상태를 저장합니다.(처음 상태를 LOW로 설정)
int pirState1 = LOW;         // 온도 감지 센서의 상태를 저장합니다.(처음 상태를 LOW로 설정)

 
int val = 0;                    // 센서 값을 읽기 위해 변수를 선언합니다.
int pinSpeaker = 10;           // PWM 핀에 스피커 혹은 피에조 센서를 연결합니다.(digital 9, 10, or 11)

void setup() {
  pinMode(ledPin1, OUTPUT);      // LED 를 출력으로 설정합니다.
  pinMode(flame, INPUT);     // 불꽃 센서를 입력으로 설정합니다.
  pinMode(pinSpeaker, OUTPUT); // 스피커를 출력으로 설정합니다.
  Serial.begin(9600); // 시리얼 통신(9600)를 준비합니다.
 
  analogReference(INTERNAL);
  pinMode (ledPin, OUTPUT) ; // 온도 센서를 입력으로 설정합니다

}

void loop(){
  val = digitalRead(flame);  // 센서값을 읽어들입니다.
  if (val == HIGH) {            // 만약 값이 HIGH 일때,
    digitalWrite(ledPin1, HIGH);  // 13번 핀(보드에 내장되어 있는 LED) 를 켭니다.
    playTone(300, 160);// 주파수 0 - 0 즉, 아무소리도 내지 않습니다.
    delay(150);// 30ms 동안 대기.
   
 
   {
    reading = analogRead(lm35Pin);
    temperature = reading / 9.31;

    //온도가 30도 위로 올라가면 LED를 켠다
    if(temperature > 30)   {
      digitalWrite (ledPin, HIGH);
    } else {
      digitalWrite (ledPin, LOW);
    }
    delay(1000);  
}
   
   

   
    if (pirState == LOW) {
      // 센서의 상태가 LOW일때
      Serial.println("Beware of fire.");
      // 다음의 문구를 시리얼 모니터로 출력합니다.
      pirState = HIGH;
    }
  } else {
      digitalWrite(ledPin, LOW); // LED를 끕니다.
      playTone(0, 0);
      delay(30);   
      if (pirState == HIGH){
      //센서값이 HIGH 일때
      Serial.println("FIRE!!!!");
      // 다음의 문구를 시리얼 모니터로 출력합니다.
      pirState = LOW;
    }
  }
}
// 경보음을 만들어 냅니다.
void playTone(long duration, int freq) {
    duration *= 1000;
    int period = (1.0 / freq) * 1000000;
    long elapsed_time = 0;
    while (elapsed_time < duration) {
        digitalWrite(pinSpeaker,HIGH);
        delayMicroseconds(period / 2);
        digitalWrite(pinSpeaker, LOW);
        delayMicroseconds(period / 2);
        elapsed_time += (period);
    }
}
 

====================================================================

빨간색 친 부분 제가 따로 소스 넣은건데

이중 if 문으로 되게 해야되는데  현재 불꽃센서랑 온도센서하는데 둘이 가치 구동되여

온도센서만 구동되게 할려고 하는데 소스 수정좀 부탁드릴게요

그러니까 loop문 도는데 부분 수정해야되는데 어떻게 할지 모르겟어요

수정 부탁드려요 ㅠㅠㅠㅠㅠㅠㅠㅠ

프로필사진

수박쨈 2015-11-23 15:43:26

loop에서 온도센서랑 불꽃센서가 둘이 같이 구동되니 불꽃센서 부분을 작동하지 않게 하고 싶으시다는 건가요??  

그렇다면 빨간줄 윗쪽인 아래 소스 부분을 지우면 될거 같네요.

digitalRead(flame)을 통해 불꽃센서의 센서값을 읽어들여 13번 LED를 껐다 키는 조건문입니다.

 

val = digitalRead(flame);  // 센서값을 읽어들입니다.
  if (val == HIGH) {            // 만약 값이 HIGH 일때,
    digitalWrite(ledPin1, HIGH);  // 13번 핀(보드에 내장되어 있는 LED) 를 켭니다.
    playTone(300, 160);// 주파수 0 - 0 즉, 아무소리도 내지 않습니다.
    delay(150);// 30ms 동안 대기.
   
 
   {

이전글   |    아이폰용 오렌지보드 컨트롤러 소스... 2015-11-22
다음글   |    자전거 속도계 소스코드 질문입니다. 2015-11-23