BASIC4MCU | 질문게시판 | 답변 : 아두이노 스마트 가습기 만드는중인데 코딩좀 알려주세요,,
페이지 정보
작성자 master 작성일2020-06-19 20:22 조회3,509회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=12925
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2020-06-19 오후 8:28:14// by Ok-Hyun Park//#include <LiquidCrystal_I2C.h>#include <Wire.h>LiquidCrystal_I2C lcd(0x27,16,2);#include "DHT.h"#include <SoftwareSerial.h>#define DHTPIN A3#define DHTTYPE DHT22DHT dht(DHTPIN,DHTTYPE);//SoftwareSerial hc06(2,3);//int buttonPin1=10,buttonPin2=11,buttonPin3=12,buttonPin4=13;int atomizationPin=6;int RelayPin=4;//int AutoModeRelayLimit=50;int RelayState=0;//char strH[]="",strT[]="",strHT[]="";int buttonState1=0,buttonState2=0,buttonState3=0,buttonState4=0;int intDelay=400;int setMode=0,ModeVal1=0,ModeVal2=0;float h,t,f;//void setup(){Serial.begin(9600);Serial.println("Enter AT commands: ");hc06.begin(9600);dht.begin();lcd.begin();lcd.backlight();pinMode(buttonPin1,INPUT_PULLUP);pinMode(buttonPin2,INPUT_PULLUP);pinMode(buttonPin3,INPUT_PULLUP);pinMode(buttonPin4,INPUT_PULLUP);setMode=0;pinMode(RelayPin,OUTPUT);pinMode(atomizationPin,OUTPUT);}//void loop(){if(hc06.available()){char r=hc06.read();if(r=='1'){if (setMode==0){ setMode=1; }else if(setMode==1){ setMode=2; }else { setMode=0; }lcd.clear(); delay(intDelay);}Serial.write(r);}if(Serial.available()){ hc06.write(Serial.read()); }//buttonState1=digitalRead(buttonPin1);buttonState2=digitalRead(buttonPin2);buttonState3=digitalRead(buttonPin3);buttonState4=digitalRead(buttonPin4);FuncButtonClickEvent();FuncPrintDisplay();}//void FuncGetDHT(){delay(100);h=dht.readHumidity();t=dht.readTemperature();f=dht.readTemperature(true);if(isnan(h)||isnan(t)||isnan(f)){Serial.println(F("Failed to read from DHT sensor!"));h=0.00; t=0.00; f=0.00;return;}float hif=dht.computeHeatIndex(f,h);float hic=dht.computeHeatIndex(f,h,false);//hc06.print("Temp:"); hc06.print(t);hc06.print(",Humid:"); hc06.print(h); hc06.println();}//void FuncPrintDisplay(){FuncGetDHT();if(setMode==0){FuncLCDPrint(0,0,"Temp,Humid ");String strVal="T: "+String(t)+",H: "+String(h);FuncLCDPrint(1,0,strVal);}else if(setMode==1){FuncLCDPrint(0,0,"Maual Mode");String OnOff="OFF";if(RelayState==1){ OnOff="ON "; }String strVal="Switch: "+OnOff;FuncLCDPrint(1,0,strVal);}else if(setMode==2){String strTVal="AutoModeSet: "+String(AutoModeRelayLimit)+" ";FuncLCDPrint(0,0,strTVal);String strVal="Humidity: "+String(h)+" ";FuncLCDPrint(1,0,strVal);//if(AutoModeRelayLimit>h){ digitalWrite(RelayPin,1); RelayState=1; }else { digitalWrite(RelayPin,0); RelayState=0; }}}//void FuncLCDPrint(int xLine,int xPoint,String xStr){lcd.setCursor(xPoint,xLine);lcd.print(xStr);}//void FuncButtonClickEvent(){if(buttonState1==1){if (setMode==0){ setMode=1; }else if(setMode==1){ setMode=2; }else { setMode=0; }lcd.clear(); delay(intDelay);}else if(buttonState2==1){if(setMode==1){if(RelayState==0){ digitalWrite(RelayPin,1); RelayState=1; }else { digitalWrite(RelayPin,0); RelayState=0; }}if(setMode==2){if(AutoModeRelayLimit<100){ AutoModeRelayLimit=AutoModeRelayLimit+5; }else { AutoModeRelayLimit=0; }}}else if(buttonState3==1){if(setMode==2){if(AutoModeRelayLimit>0){ AutoModeRelayLimit=AutoModeRelayLimit-5; }else { AutoModeRelayLimit=0; }}}else if(buttonState4==1){ ModeVal1=0; ModeVal2=0; setMode=0; lcd.clear(); delay(intDelay); }//if (h> AutoModeRelayLimit){ digitalWrite(atomizationPin,0); }else if(h<=AutoModeRelayLimit){ digitalWrite(atomizationPin,1); }}//이게 제가 짠 가습기 인데요if(buttonState1==1){if (setMode==0){ setMode=1; }else if(setMode==1){ setMode=2; }else { setMode=0; }lcd.clear(); delay(intDelay);}//이 부분에서 제가 4버튼 써서 1번 버튼 누르면 모드변경 하게 해놨는데이제 블루투스 연결해서 핸드폰에서 1값을 보내면 모드 변경이 되게랑온,습도 값을 아두에노에서 받아서 핸드폰에 뜨게 보내주는 방법좀 알려주세요
댓글 0
조회수 3,509등록된 댓글이 없습니다.