728x90
반응형
1. 기존 코드에서 수위 센서 정의하고 확인하기.
#include "DHT.h"
#include <LiquidCrystal_I2C.h>
#define DHTPIN A0
#define DHTTYPE DHT11
#define fan 10
#define led 23
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
dht.begin();
lcd.init();
lcd.backlight();
pinMode(fan,OUTPUT);
pinMode(led, OUTPUT);
}
void loop() {
float humidity = dht.readHumidity();
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 : ";
humi += (String)humidity;
humi += "%";
String temp = "temp : ";
temp += (String)temperature;
temp += "C";
lcd.setCursor(0, 0);
lcd.print(humi);
lcd.setCursor(0, 1);
lcd.print(temp);
int cds = analogRead(A3);
// Serial.print("cds = ");
// Serial.println(cds);
// CDS 조도센서값 주석처리
if (cds>880){
digitalWrite(led,LOW);
}
else{
digitalWrite(led,HIGH);
}
digitalWrite(fan,HIGH);
// 수위센서 확인
int water = analogRead(A1);
Serial.print("water = "); // 수위센서 값 출력
Serial.println(water);
}
수위 센서 아날로그 1번 핀(A1)에 연결
수위 센서 값을 읽어서 변수 water에 저장하고 시리얼 모니터로 출력하여
수위 값을 측정
물 수위가 센서보다 낮을때 물 수위가 센서보다 높거나 잠겨 있을때
우리가 사용하는 수위센서는 물 접촉 수위에 따라 센서 값이 다르다.
2. 수위센서를 활용하여 물이 없을때 액체 펌프로 물을 공급해 보자.
액체펌프 연결 디지털 9번 핀
#include "DHT.h"
#include <LiquidCrystal_I2C.h>
#define DHTPIN A0
#define DHTTYPE DHT11
#define fan 10
#define led 23
#define pump 9 // 액체펌프 디지털핀 9번으로 정의하기 (릴레이 모듈)
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
dht.begin();
lcd.init();
lcd.backlight();
pinMode(fan,OUTPUT);
pinMode(led, OUTPUT);
pinMode(pump, OUTPUT); //디지털 핀 9번 출력모드 설정(액체펌프 릴레이)
}
void loop() {
float humidity = dht.readHumidity();
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 : ";
humi += (String)humidity;
humi += "%";
String temp = "temp : ";
temp += (String)temperature;
temp += "C";
lcd.setCursor(0, 0);
lcd.print(humi);
lcd.setCursor(0, 1);
lcd.print(temp);
int cds = analogRead(A3);
// Serial.print("cds = ");
// Serial.println(cds);
// CDS 조도센서값 주석처리
if (cds>880){
digitalWrite(led,LOW);
}
else{
digitalWrite(led,HIGH);
}
digitalWrite(fan,HIGH);
// 수위센서 확인
int water = analogRead(A1);
Serial.print("water = ");
Serial.println(water);
if (water>850){ // 조건문 물수위가 낮으면 액체펌프를 가동하고
digitalWrite(pump,1);
}
if (water<300){ // 조건문 물수위가 오르면 액체펌프를 정지한다.
digitalWrite(pump,0);
}
}
보조 물 공급 통에 물이 없을 경우
물의 수위를 맞추지 못하면 액체펌프가 계속 동작하므로 이를 해결할 방안을 구상해 보자 !
728x90
반응형
'에코그로우 스마트팜' 카테고리의 다른 글
EcoGrow: 3차시_ 식물성장LED, 온습도 출력, 팬 코드 합치기 (0) | 2024.04.15 |
---|---|
EcoGrow : 2차시_ 온습도 LCD 출력하기 (0) | 2024.04.12 |
EcoGrow : 1차시_식물성장 LED 제어하기. (0) | 2024.04.12 |