Re: DHT22+Relay를 이용한 온습도측정 및 전원제어

Re: DHT22+Relay를 이용한 온습도측정 및 전원제어

Makerist 0 619

아래는const가아닌  #define을 사용하여 동일한 코드를 작성한 예제입니다. 오타나 오류가 있을 수 있습니다.


#include <DHT.h>


#define DHTPIN 2             // DHT22 데이터 핀
#define DHTTYPE DHT22        // DHT 타입
#define RELAYPIN 3           // 릴레이 모듈 핀


#define INTERVAL 28800000UL  // 8시간(밀리초 단위)


DHT dht(DHTPIN, DHTTYPE);


unsigned long previousMillis = 0;
bool relayState = false; // 릴레이 상태 (true: 켜짐, false: 꺼짐)


void setup() {
  Serial.begin(9600);
  dht.begin();
  
  pinMode(RELAYPIN, OUTPUT);
  digitalWrite(RELAYPIN, LOW); // 처음에는 릴레이를 끈 상태로 설정
}


void loop() {
  unsigned long currentMillis = millis();


  // DHT22 센서 값 읽기
  float h = dht.readHumidity();
  float t = dht.readTemperature();


  // 릴레이 상태 출력
  Serial.print("릴레이 상태: ");
  Serial.print(relayState ? "켜짐" : "꺼짐");
  Serial.print("t");


  // 온습도 값 출력
  if (isnan(h) || isnan(t)) {
    Serial.println("센서에서 데이터를 읽을 수 없습니다.");
  } else {
    Serial.print("Humidity: ");
    Serial.print(h);
    Serial.print(" %t");
    Serial.print("Temperature: ");
    Serial.print(t);
    Serial.println(" *C");
  }


  // 경과 시간이 8시간(밀리초) 이상일 때마다 릴레이 상태 변경
  if (currentMillis - previousMillis >= INTERVAL) {
    previousMillis = currentMillis;
    relayState = !relayState; // 릴레이 상태 토글
    digitalWrite(RELAYPIN, relayState ? HIGH : LOW); // 릴레이 상태 적용
    Serial.println(relayState ? "릴레이가 켜졌습니다." : "릴레이가 꺼졌습니다.");
  }


  delay(2000); // 2초 대기 (센서 읽기 간격)
}

0 Comments
Category
반응형 구글광고 등
State
  • 현재 접속자 81 명
  • 오늘 방문자 1,339 명
  • 어제 방문자 3,368 명
  • 최대 방문자 4,586 명
  • 전체 방문자 676,599 명
  • 전체 게시물 26,447 개
  • 전체 댓글수 36 개
  • 전체 회원수 22 명
Facebook Twitter GooglePlus KakaoStory KakaoTalk NaverBand