Blynk ตั้งค่าอุณหภูมิ และความชื้น DHT 21 ด้วยการตั้งค่าสไลด์บาร์

อยากรู้วิธีการเขียนโค้ด ตั้งค่าอุณหภูมิ และความชื้น DHT 21 ด้วยการตั้งค่าสไลด์บาร์ หรือกล่องใส่ค่าตัวเลข ในแอป blynk ว่าจะเขียนโค้ดใน node mcu อย่างไร ขอตัวอย่างด้วยครับ

ใช้คำสั่งนี้ครับ

การกำหนดค่าให้ Slider

Blynk.virtualWrite(V1, 55);

การตั้งชื่อให้ Slider

Blynk.setProperty(V1, "label", "My Slider Label");

กำหนดสีหรือเปลี่ยนสีให้ Slider

กำหนดให้เป็นสีแดง #D3435C

Blynk.setProperty(V1, "color", "#D3435C");

ขอบคุณครับที่ช่วยตอบให้ ความต้องการของผมคือ ตั้งค่าอุณหภูมิโดยการใช้กล่องตัวเลข หรือวไลด์บาร์ครับ แต่ผมไม่รู้ว่าเวลาเขาเขียนคำสั่งในตัวmcu ต้องใช้คำสั่งเปรียบเทียบค่างอย่างไรครับ ผมสังรูปที่ออกแบบแอปมาให้ดูด้วย พยายามหาในเน็ต ในยูทูปก็ไม่มีสอนในส่วนนี้เลยครับ Tmin<v4 relay1 on . Tmax>v4 ให้รีเลย์ 1off เราจะเขียนโค้ตรับค่าจาก V

21,V22มาทีเทียบกับv4 อย่างไรครับ ผมมือใหม่ครับแต่อยากศึกษาครับ

ขอบคุณล่วงหน้าครับ

ตอนนี้เขียนแบบไหนต้องลองเอาโค้ตมาดูกันครับ ได้เขียนเทียบกันไว้แล้วหรือยัง

1 Like

โค้ดประมานนี้ครับ 

#define BLYNK_PRINT Serial
//#define LDR       A0
#define LED       D4      //GPIO2
#define red_LED   D8      //GPIO15 Temp Relay
#define blue_LED  D7      //GPIO13 Humid Relay
#define green_LED D6      //GPIO12
#define DHTPIN    D5
#define DHTTYPE   DHT21  // DHT 11, 21
#define measurePin A0     // LDR
#define Tmin      V21
#define Tmax      V22
#define Hmin      V23
#define Hmax      V24
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include "DHT.h"

char server[] = "oasiskit.com";
int port = 8080;
char auth[] = "2ede26e45d1a416c9e0ee98aaxxxxxxx";
char* ssid[] = {"intel farm AP2","CIS HOME 2", "intel ",};   //Array containing any wifi networks the device can use
char* pass[] = {"intelwifi009","CIS9629651", "intelwifi009",};   //Array containing associated wifi passwords
int i, w = 0;
int wifi_timeout = 10;    //Timeout for each connection attempt (seconds)
#define SSID_COUNT (sizeof(ssid)/sizeof(ssid[0]))  //Determines the number of SSIDs in ssid[] array
int counter, voMeasured;

BlynkTimer timer;
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  pinMode(LED, OUTPUT);
  pinMode(red_LED, OUTPUT);
  pinMode(blue_LED, OUTPUT);
  pinMode(green_LED, OUTPUT);
  pinMode(measurePin, INPUT);
  Serial.begin(9600);
  dht.begin();
  counter = 10;

  initWifi_noLCD();
  Blynk.begin(auth, ssid[w], pass[w], server, port);
  timer.setInterval(5000L, sendSensor);

  LED_blink();
}

void loop() {
  Blynk.run();
  timer.run();
}

void sendSensor() {
  delay(1000);
  float h = dht.readHumidity();
  //if use byte h, t can display gauge on blynk but some 255
  float t = dht.readTemperature();
  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  voMeasured = analogRead(measurePin);

  if (counter < 10) {
    counter++;
  } else {
    counter = 0;
  }
  Serial.print("Count: ");
  Serial.print(counter);
  Serial.print("\t");
  Serial.print("Temp: ");
  Serial.print(t);
  Serial.print(" *C\t");
  Serial.print("LDR: ");
  Serial.println(voMeasured);

  //Blynk.virtualWrite(V1, red_LED);
  //Blynk.virtualWrite(V2, blue_LED);
  //Blynk.virtualWrite(V3, green_LED);
  Blynk.virtualWrite(V4, t);
  Blynk.virtualWrite(V7, h);
  Blynk.virtualWrite(V5, voMeasured);
  Blynk.virtualWrite(V6, counter);
  //Blynk.virtualWrite(D4, LED);
  LED_blink();
}

void initWifi_noLCD() {
  //connect multiplt ssid
  Serial.flush();
  Serial.println("Searching available ssid...");
  Serial.print(ssid[w]);
  WiFi.begin(ssid[w], pass[w]);

  while (WiFi.status() != WL_CONNECTED) {
    //If timeout is reached, increment w counter, try the next wifi network
    if (i == wifi_timeout) {
      Serial.println("");
      w++;
      //Make sure we havent reached the end of the list of SSIDs
      if (w < SSID_COUNT) {
        Serial.print("Switching to alternate SSID...");
        Serial.println(w);
        WiFi.begin(ssid[w], pass[w]);
        Serial.print(ssid[w]);
        delay(1000);
      } else {
        //If we have tried all the defined SSIDs, reboot and try again, or change to break; and continue on with program
        Serial.println("No WiFi connection available, rebooting...");
        w = 0;
        //ESP.restart();
      }
      i = 0;
    } else {
      Serial.print(".");
      delay(1000);
    }
    i++;
  }
  if (WiFi.status() == WL_CONNECTED) {
    Serial.println("");
    Serial.print("Connected to: ");
    Serial.print(WiFi.SSID());
    Serial.print(", Signal: ");
    Serial.println(WiFi.RSSI());
    Serial.print("MAC address: ");
    Serial.println(WiFi.macAddress());
    Serial.print("IP address: ");
    Serial.println(WiFi.localIP());
  }
}


void LED_blink() {
  digitalWrite(LED, LOW);
  delay(50);
  digitalWrite(LED, HIGH);
}```

ทำได้หรือยังครับ ผมใช้คำสั่งนี้ครับ ที่ Blynk ก็สร้าง สไลด์บาร์ เลือก V21 ( V อะไรก็ได้)
int Tmin ;

BLYNK_WRITE(V21) //ส่งค่าจาก Blynk หน้าจอมือถือ ไปที่ NodeMCU
{
Tmin = param.asInt();
}

2 Likes

ขอดูตัวอย่างที่เขียนด้วยครับ

1 Like

ตอนนี้ทำไปถึงไหนแล้วครับ

1 Like

ผลเป็นอย่างไรบ้างครับ
ผมเองก็รอดูครับจะได้เอาไปพัฒนาต่อ


แต่ยังปรับ Tmax ที่ app blynk แล้วส่งเข้าไปแก้ไขโปรแกรมที่เขียนไว้ใน node esp8266 เปลี่ยนตามไม่ได้เลย
รบกวนหน่อยครับ

@11171

รบกวนขึ้นกระทู้ใหม่เลยครับ ลงรายละเอียดหน่อยว่า

1.ทำอะไรอยู่
2.ติดปัญหาอะไร
3.ใช้โค้ตแบบไหน

1 Like

ทำได้แล้วครับ
ขอบคุณมากครับ

สอนผมบ้างครับ ขอดูตัวอย่างโค้ดด้วยครับ

ตามนี้ครับ

ขอบคุณกระทู้พี่ @11171

free
hit counter