1. 程式人生 > >溫控模擬網管 機智雲

溫控模擬網管 機智雲

double Fahrenheit(double celsius) { return 1.8 * celsius + 32; } //攝氏溫度度轉化為華氏溫度

double Kelvin(double celsius) { return celsius + 273.15; } //攝氏溫度轉化為開氏溫度

// 露點(點在此溫度時,空氣飽和併產生露珠) // 參考: [url=http://wahiduddin.net/calc/density_algorithms.htm]http://wahiduddin.net/calc/density_algorithms.htm[/url] double dewPoint(double celsius, double humidity) { double A0 = 373.15 / (273.15 + celsius); double SUM = -7.90298 * (A0 - 1); SUM += 5.02808 * log10(A0); SUM += -1.3816e-7 * (pow(10, (11.344 * (1 - 1 / A0))) - 1) ; SUM += 8.1328e-3 * (pow(10, (-3.49149 * (A0 - 1))) - 1) ; SUM += log10(1013.246); double VP = pow(10, SUM - 3) * humidity; double T = log(VP / 0.61078); // temp var return (241.88 * T) / (17.558 - T); }

// 快速計算露點,速度是5倍dewPoint() // 參考: [url=http://en.wikipedia.org/wiki/Dew_point]http://en.wikipedia.org/wiki/Dew_point[/url] double dewPointFast(double celsius, double humidity) { double a = 17.271; double b = 237.7; double temp = (a * celsius) / (b + celsius) + log(humidity / 100); double Td = (b * temp) / (a - temp); return Td; } #include <Gizwits.h> #include <Wire.h> #include <SoftwareSerial.h> #include <dht11.h> SoftwareSerial mySerial(A2, A3); // A2 -> RX, A3 -> TX dht11 DHT11;

#define DHT11PIN A0 Gizwits myGizwits; double d=1; #define KEY1 6 #define KEY2 7 #define KEY1_SHORT_PRESS 1 #define KEY1_LONG_PRESS 2 #define KEY2_SHORT_PRESS 4 #define KEY2_LONG_PRESS 8 #define NO_KEY 0 #define KEY_LONG_TIMER 3 unsigned long Last_KeyTime = 0;

unsigned long gokit_time_s(void) { return millis() / 1000; }

char gokit_key1down(void) { unsigned long keep_time = 0; if (digitalRead(KEY1) == LOW) { delay(100); if (digitalRead(KEY1) == LOW) { keep_time = gokit_time_s(); while (digitalRead(KEY1) == LOW) { if ((gokit_time_s() - keep_time) > KEY_LONG_TIMER) { Last_KeyTime = gokit_time_s(); return KEY1_LONG_PRESS; } } //until open the key

  if ((gokit_time_s() - Last_KeyTime) > KEY_LONG_TIMER)
  {
    return KEY1_SHORT_PRESS;
  }
  return 0;
}
return 0;

} return 0; }

char gokit_key2down(void) { unsigned long keep_time = 0; if (digitalRead(KEY2) == LOW) { delay(100); if (digitalRead(KEY2) == LOW) { keep_time = gokit_time_s(); while (digitalRead(KEY2) == LOW) //until open the key {

    if ((gokit_time_s() - keep_time) > KEY_LONG_TIMER)
    {
      Last_KeyTime = gokit_time_s();
      return KEY2_LONG_PRESS;
    }
  }

  if ((gokit_time_s() - Last_KeyTime) > KEY_LONG_TIMER)
  {
    return KEY2_SHORT_PRESS;
  }
  return 0;
}
return 0;

} return 0; }

char gokit_keydown(void) { char ret = 0; ret |= gokit_key2down(); ret |= gokit_key1down(); return ret;

}

/**

  • KEY_Handle
  • @param none
  • @return none / void KEY_Handle(void) { / Press for over than 3 second is Long Press */ switch (gokit_keydown()) { case KEY1_SHORT_PRESS: mySerial.println(F("KEY1_SHORT_PRESS , Production Test Mode ")); myGizwits.setBindMode(WIFI_PRODUCTION_TEST); break; case KEY1_LONG_PRESS: mySerial.println(F(“KEY1_LONG_PRESS ,Wifi Reset”)); myGizwits.setBindMode(WIFI_RESET_MODE); break; case KEY2_SHORT_PRESS: mySerial.println(F(“KEY2_SHORT_PRESS Soft AP mode”)); myGizwits.setBindMode(WIFI_SOFTAP_MODE); //Soft AP mode break; case KEY2_LONG_PRESS: mySerial.println(F(“KEY2_LONG_PRESS ,AirLink mode”)); myGizwits.setBindMode(WIFI_AIRLINK_MODE); digitalWrite(4,HIGH); delay(1000); digitalWrite(4,LOW); break; default: break; } }

void setup() { // put your setup code here, to run once:

mySerial.begin(115200); pinMode(KEY1, INPUT_PULLUP); pinMode(KEY2, INPUT_PULLUP); pinMode(4,OUTPUT);//beeWIFI_AIRLINK成功報警提示這裡是配網提示 pinMode(A0,INPUT);//溫溼度感測器 pinMode(2,OUTPUT);//開關4 pinMode(3,OUTPUT);//開關5 Serial.begin(9600); myGizwits.begin();

} void wifiStatusHandle() { if (myGizwits.wifiHasBeenSet(WIFI_SOFTAP)) { mySerial.println(F(“WIFI_SOFTAP!”)); }

if (myGizwits.wifiHasBeenSet(WIFI_AIRLINK)) { mySerial.println(F(“WIFI_AIRLINK!”)); }

if (myGizwits.wifiHasBeenSet(WIFI_STATION)) { mySerial.println(F(“WIFI_STATION!”)); }

if (myGizwits.wifiHasBeenSet(WIFI_CON_ROUTER)) { mySerial.println(F(“WIFI_CON_ROUTER!”)); }

if (myGizwits.wifiHasBeenSet(WIFI_DISCON_ROUTER)) { mySerial.println(F(“WIFI_DISCON_ROUTER!”)); }

if (myGizwits.wifiHasBeenSet(WIFI_CON_M2M)) { mySerial.println(F(“WIFI_CON_M2M!”)); }

if (myGizwits.wifiHasBeenSet(WIFI_DISCON_M2M)) { mySerial.println(F(“WIFI_DISCON_M2M!”)); } } void loop() { KEY_Handle();//key handle , network configure wifiStatusHandle();//WIFI Status Handle int chk = DHT11.read(DHT11PIN);

unsigned long varW_t = (float)DHT11.temperature;//Add Sensor Data Collection myGizwits.write(VALUE_t, varW_t); unsigned long varW_s = (float)DHT11.humidity ;//Add Sensor Data Collection myGizwits.write(VALUE_s, varW_s);

bool varR_W = 0; if(myGizwits.hasBeenSet(EVENT_W)) { myGizwits.read(EVENT_W,&varR_W);//Address for storing data

if(varR_W==1) { digitalWrite(2,HIGH);

  }
 else{
 digitalWrite(2,LOW);

} } unsigned long varR_pwm = 0; if(myGizwits.hasBeenSet(EVENT_pwm)) { myGizwits.read(EVENT_pwm,&varR_pwm);//Address for storing data d=varR_pwm*(varR_pwm-14.8); analogWrite(3,d);

}

myGizwits.process(); }在這裡插入圖片描述