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
반응형
'에코그로우 스마트팜' 카테고리의 다른 글
EcoGrow_4차시 수위 센서 확인 하고 액체펌프 자동화 만들기. (0) | 2024.04.17 |
---|---|
EcoGrow : 2차시_ 온습도 LCD 출력하기 (1) | 2024.04.12 |
EcoGrow : 1차시_식물성장 LED 제어하기. (0) | 2024.04.12 |