본문 바로가기
에코그로우 스마트팜

EcoGrow: 3차시_ 식물성장LED, 온습도 출력, 팬 코드 합치기

by SwMaker_Jun 2024. 4. 15.
728x90
반응형

 

1차시 2차시 코드 합치기

// 필요한 라이브러리를 호출
#include "DHT.h"                 // DHT 센서를 사용하기 위한 라이브러리
#include <LiquidCrystal_I2C.h>   // LCD를 제어하기 위한 라이브러리

#define DHTPIN A0                // DHT 센서와 연결된 아두이노 핀을 정의
#define DHTTYPE DHT11            // 사용하는 DHT 센서의 모델을 지정

#define fan 10                   // 쿨링팬 디지털 10번을 지정 (두팬 모두 10번핀으로 동시제어)
#define led 23                   // 식물성장 LED
 
DHT dht(DHTPIN, DHTTYPE);        // DHT 객체를 생성

LiquidCrystal_I2C lcd(0x27, 16, 2); 
// LCD 객체를 생성. I2C 주소는 0x27이지만, 연결이 안 되면 0x3F를 사용해 보세요.
 
void setup() {
  Serial.begin(9600);
  dht.begin();                   // DHT 센서를 초기화
  lcd.init();                    // LCD를 초기화
  lcd.backlight();               // LCD의 백라이트를 on
  pinMode(fan,OUTPUT);           // 쿨링팬 출력모드 
  pinMode(led, OUTPUT);          // led 출력모드 
}
 
void loop() {
  float humidity = dht.readHumidity();        // DHT 센서로부터 습도와 온도를 읽기.
  float temperature = dht.readTemperature();
 
  if (isnan(humidity) || isnan(temperature) ) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  // 만약 습도나 온도를 제대로 읽지 못했다면 오류 메시지를 출력하고 함수를 종료.
  
  // 읽은 온도와 습도를 시리얼 모니터에 출력.
  Serial.print((int)temperature); Serial.print(" *C, ");
  Serial.print((int)humidity); Serial.println(" %");
 
  
  String humi = "Humi : ";         // LCD에 표시할 습도 문자열을 생성
  humi += (String)humidity;
  humi += "%";
 
  String temp = "temp : ";         // LCD에 표시할 온도 문자열을 생성
  temp += (String)temperature;
  temp += "C";
 
  lcd.setCursor(0, 0);             // LCD의 첫 번째 줄에 습도, 두 번째 줄에 온도를 표시
  lcd.print(humi);
  lcd.setCursor(0, 1);
  lcd.print(temp);
  
  int cds = analogRead(A3);   // 아날로그 A3 핀에 연결된 cds 값 읽어 오기
  Serial.print("cds = "); 
  Serial.println(cds);        // 시리얼모니터에 cds값 출력

  if (cds>880){               // 어두울때 led 끄고 밝을때 led 켜기
    digitalWrite(led,LOW);
  }
  else{
    digitalWrite(led,HIGH);
  }

  digitalWrite(fan,HIGH);     // 팬 항상 켜기
}

 

 

 

코드 복사 사용 ==============================================================================

 

// 필요한 라이브러리를 호출
#include "DHT.h"                 // DHT 센서를 사용하기 위한 라이브러리
#include <LiquidCrystal_I2C.h>   // LCD를 제어하기 위한 라이브러리

#define DHTPIN A0                // DHT 센서와 연결된 아두이노 핀을 정의
#define DHTTYPE DHT11            // 사용하는 DHT 센서의 모델을 지정

#define fan 10                   // 쿨링팬 디지털 10번을 지정 (두팬 모두 10번핀으로 동시제어)
#define led 23                   // 식물성장 LED
 
DHT dht(DHTPIN, DHTTYPE);        // DHT 객체를 생성

LiquidCrystal_I2C lcd(0x27, 16, 2);
// LCD 객체를 생성. I2C 주소는 0x27이지만, 연결이 안 되면 0x3F를 사용해 보세요.
 
void setup() {
  Serial.begin(9600);
  dht.begin();                   // DHT 센서를 초기화
  lcd.init();                    // LCD를 초기화
  lcd.backlight();               // LCD의 백라이트를 on
  pinMode(fan,OUTPUT);           // 쿨링팬 출력모드
  pinMode(led, OUTPUT);          // led 출력모드
}
 
void loop() {
  float humidity = dht.readHumidity();        // DHT 센서로부터 습도와 온도를 읽기.
  float temperature = dht.readTemperature();
 
  if (isnan(humidity) || isnan(temperature) ) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  // 만약 습도나 온도를 제대로 읽지 못했다면 오류 메시지를 출력하고 함수를 종료.
 
  // 읽은 온도와 습도를 시리얼 모니터에 출력.
  Serial.print((int)temperature); Serial.print(" *C, ");
  Serial.print((int)humidity); Serial.println(" %");
 
 
  String humi = "Humi : ";         // LCD에 표시할 습도 문자열을 생성
  humi += (String)humidity;
  humi += "%";
 
  String temp = "temp : ";         // LCD에 표시할 온도 문자열을 생성
  temp += (String)temperature;
  temp += "C";
 
  lcd.setCursor(0, 0);             // LCD의 첫 번째 줄에 습도, 두 번째 줄에 온도를 표시
  lcd.print(humi);
  lcd.setCursor(0, 1);
  lcd.print(temp);
 
  int cds = analogRead(A3);   // 아날로그 A3 핀에 연결된 cds 값 읽어 오기
  Serial.print("cds = ");
  Serial.println(cds);        // 시리얼모니터에 cds값 출력

  if (cds>880){               // 어두울때 led 끄고 밝을때 led 켜기
    digitalWrite(led,LOW);
  }
  else{
    digitalWrite(led,HIGH);
  }

  digitalWrite(fan,HIGH);     // 팬 항상 켜기
}
 
 
========================================================================================
728x90
반응형