ผมต้องการทำตู้ควบคุมความชื้น อุณภูมิ ด้วยESP2866

เลือกบอร์ดถูกรึป่าวครับ

image

ออผมยังไม่ได้ลงไลเบอรี่บอด ซักครู่ครับ

Arduino: 1.8.10 (Windows 10), Board: "NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, Legacy (new can return nullptr), All SSL ciphers (most compatible), 4MB (FS:2MB OTA:~1019KB), 2, v2 Lower Memory, Disabled, None, Only Sketch, 115200"

C:\Users\User\Desktop\a\a.ino: In function 'void sendUptime()':

a:74:2: error: 'sensors_event_t' was not declared in this scope

  sensors_event_t event;

  ^

a:74:18: error: expected ';' before 'event'

  sensors_event_t event;

                  ^

a:75:6: error: 'class DHT' has no member named 'temperature'

  dht.temperature().getEvent(&event);

      ^

a:75:30: error: 'event' was not declared in this scope

  dht.temperature().getEvent(&event);

                              ^

a:80:6: error: 'class DHT' has no member named 'humidity'

  dht.humidity().getEvent(&event);

      ^

Multiple libraries were found for "ESP8266WiFi.h"
 Used: C:\Users\User\Documents\Arduino\libraries\ESP8266WiFi
 Not used: C:\Users\User\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.1\libraries\ESP8266WiFi
Multiple libraries were found for "BlynkSimpleEsp8266.h"
 Used: C:\Users\User\Documents\Arduino\libraries\Blynk
Multiple libraries were found for "DHT.h"
 Used: C:\Users\User\Documents\Arduino\libraries\DHT
Multiple libraries were found for "SimpleTimer.h"
 Used: C:\Users\User\Documents\Arduino\libraries\SimpleTimer-master
Multiple libraries were found for "Adafruit_Sensor.h"
 Used: C:\Users\User\Documents\Arduino\libraries\Adafruit_Unified_Sensor
exit status 1
'sensors_event_t' was not declared in this scope

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

วางโค้ตล่าสุดมาหน่อย

#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <DHT.h>
#include <SimpleTimer.h>
#define DHTPIN D4 // กำหนดขาให้กับอุปกรณ์ตรวจสอบความชื้น DHT11
#define DHTTYPE DHT11
//////////////////////////////////////////จุดที่เพิ่ม

int setTemp;
int setHumid;

BLYNK_WRITE(V4) //temperature slider in app on pin V22
{
setTemp = param.asInt();
}
BLYNK_WRITE(V3) //temperature slider in app on pin V23
{
setHumid = param.asInt();
}

//////////////////////////////////////////

DHT dht(DHTPIN, DHTTYPE);
SimpleTimer timer;

//* **BLYNK TOKEN** //
char auth[] = "XXXXXXXXXXXXXXXX";
char ssid[] = "AndroidAP";
char pass[] = "123654789a";


BLYNK_CONNECTED() {
Blynk.syncAll();
}

void sendSensor()
{
  float h = dht.readHumidity();
  float t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit

  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  // You can send any value at any time.
  // Please don't send more that 10 values per second.
  Blynk.virtualWrite(V5, h);
  Blynk.virtualWrite(V6, t);
}

void setup()
{
Serial.begin(115200);




pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
pinMode(D1, OUTPUT); // ***ควบคุมอุณหภูมิ*** ///
digitalWrite(D1, HIGH);

dht.begin();

timer.setInterval(1000L, sendUptime);

}

void sendUptime()
 {
 // *****ชุดคำสั่งการทำงานของอุณหภูมิ***** *//
 Blynk.virtualWrite(V5, millis() / 1000);
 sensors_event_t event;
 dht.temperature().getEvent(&event);
 if (!isnan(event.temperature)) //ตรงนี้เป็นการกำหนดเงื่อนไข >=, <= , ==  ใช่ไหมครับ
   {
 Blynk.virtualWrite(V1, event.temperature); //หรือผมต้องมากำหนด เงื่อนไข >=, <= , == ตรงนีครับ
  }
 dht.humidity().getEvent(&event);
 if (!isnan(event.relative_humidity)) {
 Blynk.virtualWrite(V2, event.relative_humidity);
 
 }
 }
void loop()
{
//if(Blynk.connected()) {
Blynk.run();
timer.run();

}

อ่าวของผมก็ขึ้นนะนิ 555

เอาล่ะมีซำติงแน่นอน55555555

ผมควรเริ่มเขียนใหม่ใช่ใหมครับ ท่าใช่อยากให้ช่วยแนะนำการดึงค่าอุณหะภูมิมาเปรียบเทียบกับค่าปุ่มในบลิ้งหน่อยครับ

แก้เป็นแบบนี้ครับ มันมีหลายฟังก์ชันที่ซ้อนทับกันอยู่

image

และ library ที่เขียนกันคนละแบบเอามาใช้ที่เดียวกันจะไม่ได้ครับ

#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <DHT.h>
#include <SimpleTimer.h>
#define DHTPIN D4 // กำหนดขาให้กับอุปกรณ์ตรวจสอบความชื้น DHT11
#define DHTTYPE DHT11
//////////////////////////////////////////จุดที่เพิ่ม

int setTemp;
int setHumid;

BLYNK_WRITE(V4) //temperature slider in app on pin V22
{
setTemp = param.asInt();
}
BLYNK_WRITE(V3) //temperature slider in app on pin V23
{
setHumid = param.asInt();
}

//////////////////////////////////////////

DHT dht(DHTPIN, DHTTYPE);
SimpleTimer timer;

//* **BLYNK TOKEN** //
char auth[] = "XXXXXXXXXXXXXXXX";
char ssid[] = "AndroidAP";
char pass[] = "123654789a";

void setup()
{
Serial.begin(115200);




pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
pinMode(D1, OUTPUT); // ***ควบคุมอุณหภูมิ*** ///
digitalWrite(D1, HIGH);

dht.begin();
timer.setInterval(1000L, sendSensor);

}

BLYNK_CONNECTED() {
Blynk.syncAll();
}

void sendSensor()
{
  float h = dht.readHumidity();
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();

  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
   Blynk.virtualWrite(V1, t); //หรือผมต้องมากำหนด เงื่อนไข >=, <= , == ตรงนีครับ
 Blynk.virtualWrite(V2, h);

  Serial.println("Humidity: ");
  Serial.print(h + String("%"));
  Serial.println("Temperature: ");
  Serial.print(t + String("c"));

}


void loop()
{
//if(Blynk.connected()) {
Blynk.run();
timer.run();

}

image

สีแดงๆคือผิดผมเข้าใจถูกไหมครับ

ที่ลบออกไปครับ เขียวคือเพิ่มเข้ามา

แล้วโด้ดเปรียบเทียบนี่จะทำยังไงหลอครับ

ขยายความหน่อยครับว่าเปรียบเทียบอะไรแบบไหน

ต้องการเปรียบเทียบ “ค่าอุณหะภูมิ กับ Widget Numeric Input ท่าอุณหะภูมิมากกว่าที่Widget Numeric Input กำหนดใว้ให้สั่งรีเลย์ทำงาน”
“ความชื้น กับ Widget Numeric Input ท่าความชื้นน้อยกว่า Widget Numeric Input กำหนดใว้ ให้สั่งรีเลย์ทำงาน”

ตอนนี้คอมไพ ผ่านรึยัง

ผ่านแล้วครับ

เดียวผมจะเขียนกระทู้มาตอบเรื่องนี้ให้นะครับ ต้องอธิบายหลายส่วน เดียวเอามาแปะไว้ให้

ขอบคุนมากๆครับ ติดกับโค้ดนี้มานานมากๆแล้ว