제가 만들려고 하는 작품은 LCD에 현재 온습도와 적정 습도를 표시하고 적정 습도를 50%로 기준으로 하여 스위치를 한번 누를때마다 습도 값이 10%씩 증가하고 100%이상이되면 다시 0%로 돌아가는 소스를 추가해야하는데요.. 여기 소스에서 무엇을 추가해야 하는지 아무리 추가해봐도 되질않네요..ㅜ 도움 좀 받을 수 있을까요?
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT11.h>
LiquidCrystal_I2C lcd(0x27,20,4);
int button=2;
int buttonPushCnt = 6;
int buttonState = 0;
int lastButtonState = 0;
int relay = 7;
int state = LOW;
int pin=3;
DHT11 dht11(pin);
void setup()
{
Serial.begin(9600);
lcd.init();
pinMode(button, INPUT);
pinMode(relay, OUTPUT);
}
boolean debounce(boolean last, int BUT){
boolean current = digitalRead(BUT);
if(last!=current)
{
delay(5);
current=digitalRead(BUT);
}
return current;
}
void loop()
{
buttonState=debounce(lastButtonState, button);
if(lastButtonState==0&&buttonState==1&&buttonPushCnt<=10) {buttonPushCnt++;}
else if(buttonPushCnt>10){buttonPushCnt=0;}
lastButtonState=buttonState;
lcd.setCursor(1,2);
lcd.print("Value: ");
lcd.print(buttonPushCnt*10);
lcd.print(" %");
lcd.print(" ");
int err;
float temp, humi;
if((err=dht11.read(humi, temp))==0)
{
if (humi>(buttonPushCnt*10)) { state = LOW;}
else {state = HIGH;}
digitalWrite(relay, state);
lcd.backlight();
lcd.display();
lcd.setCursor(1,0);
lcd.print("TEMP: ");
lcd.print(temp);
lcd.print(" C");
lcd.setCursor(1,1);
lcd.print("HUMI: ");
lcd.print(humi);
lcd.print(" %");
Serial.print(" temp: ");
Serial.print(temp);
Serial.print(" humi: ");
Serial.print(humi);
Serial.println();
delay(5000);
lcd.clear();
}
else
{
lcd.backlight();
lcd.display();
lcd.print("ERROR NO.: ");
lcd.print(err);
}
}
|