ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 온도,습도 센서
    Arduino/온도,습도 센서 2020. 10. 27. 18:05

     

     

    화씨,섭씨,습도 값을 이용하여(dth11:입력센서) 버튼을 누를 때마다 (버튼:입력센서)
    캐릭터 LCD에 3개의 값이 순차적으로 출력되도록 구성하자.

    먼저, 버튼은 풀업 저항으로 구성을 한다.

    아래의 그림을 보자.

    버튼에는 2개의 선만 연결한다. 남색은 GND로 연결하면 되고

    초록색선은 13번핀에 연결한다.

    아래에서 온도,습도 센서의 연결을 보자.

    맨 오른쪽 노란선은 GND에 연결되고 맨 왼쪽의 노란선은 빵판의 +선에 연결한다.

    그리고 가운데 초록색 선은 8번핀에 연결한다. 

    그리고 캐릭터 LCD 기존에 했던 것과 연결이 같다.

    소스 코드

    더보기
    
    //  버튼의 반응이 느리므로 이에 대한 처리는 인터럽트를 통해서 처리할 수 있다.
    //  dht11, 화씨 섭씨 습도 값을 이용하여(dth11:입력센서)
    //  버튼을 누를 때마다 (버튼:입력센서)
    //  LCD에 3개의 값이 순차적으로 출력되도록 구성하자.(LCD:출력센서)
    //  버튼은 13번핀에 연결한다.
    #include <LiquidCrystal.h>//  LCD를 사용하기 위해 라이브러리 추가
    #include "DHT.h"          //  온도, 습도 센서를 사용하기 위한 라이브러리 추가
    
    #define DHTPIN 8          // 온도,습도 핀을 8번핀에 연결
    #define DHTTYPE DHT11     // DHT 11
    DHT dht(DHTPIN, DHTTYPE); 
    
    const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
    LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
    
    //  스케치에서 라이브러리 포함하기에서 라이브러리 관리 선택
    void setup() {
      // put your setup code here, to run once:
      pinMode(13,INPUT_PULLUP);
      lcd.begin(16, 2);
      Serial.begin(9600);
      dht.begin();
      delay(2000);  //  Heating하는 시간을 위해 약간의 시간동안 딜레이
    }
    
    int menu = -1;
    
    void loop() {
      //Serial.println(digitalRead(13));  //  for checking
      
      //화씨 섭씨 습도 값
      float h = dht.readHumidity();          //%
      float t = dht.readTemperature();      //°C
      float f = dht.readTemperature(true);  //°F
      
      if (isnan(h) || isnan(t) || isnan(f)) {
          Serial.println(F("Failed to read from DHT sensor!"));
          return;
        }
        
     // Serial.println(digitalRead(13));
    
     // 풀업저항으로 인해, LOW상태가 버튼이 눌린 경우이다. 
     if(!digitalRead(13))
     {
      //  버튼이 눌려져 있으면, 메뉴가 변경이 되고 while 루프 빠져나온다.
      while(!digitalRead(13))
      {
        //  Serial.println("quit");
        menu = (++menu) % 3;
        Serial.println(String("menu:")+menu);
        //Serial.println(String("menu:")+(++menu)%3);
        delay(500);
        break;
      }
     }
    
      lcd.clear();
      lcd.home();
      if(menu==0)       lcd.print(String("Humidity:")+ h + String("%"));
      else if(menu==1)  lcd.print(String("Temperature:")+ t + String("°C"));
      else if(menu==2)  lcd.print(String("Temperature:")+ f + String("°F"));
     
      delay(100);
    }

     

    'Arduino > 온도,습도 센서' 카테고리의 다른 글

    LM35 온도 센서  (0) 2020.10.27

    댓글

Designed by Tistory.