<noscript id="mmkmi"><source id="mmkmi"></source></noscript>
  • <noscript id="mmkmi"><kbd id="mmkmi"></kbd></noscript>
  • <table id="mmkmi"><source id="mmkmi"></source></table>
  • 8266+貝殼+小度 修改后可以控制,但是延時很嚴重

    作者:yjf | 更新時間:2020-12-25 | 瀏覽量:675

    #include <ESP8266WiFi.h>
     WiFiClient client;
    const int relay1 =D3;//#define relay1 D3(原來的代碼不行,改了就可以控制了)//LED連接在8266的GPIO2上
    const char *ssid     = "*****";//這里是我的wifi,你使用時修改為你要連接的wifi ssid
    const char *password = "*******";//你要連接的wifi密碼
    const char *host = "121.42.180.30";

    void setup() {
      Serial.begin(115200);
      delay(10);
      pinMode(relay1,OUTPUT);
      // We start by connecting to a WiFi network

      Serial.println();
      Serial.println();
      Serial.print("Connecting to ");
      Serial.println(ssid);
      
      WiFi.begin(ssid, password);
      
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }

      Serial.println("");
      Serial.println("WiFi connected");  
      Serial.println("IP address: ");
      Serial.println(WiFi.localIP());
      const int httpPort =8181;
      if (!client.connect(host, httpPort)) {
        Serial.println("connection failed");
        return;
      }
      Serial.print("connecting to ");
      Serial.println(host);
      client.write("{\"M\":\"checkin\",\"ID\":\"****\",\"K\":\"****\"}\r\n");//登陸設備,修改成自己的ID和key
      delay(10);
    }

    void loop() {
     char valueread;
          while(client.available()){
          String line = client.readStringUntil('\r');
         Serial.print(line);
         int i;     
         for(i=0;i<=150;i++)
         { 
          if((line[i]=='s') &&( line[i+1]=='t'))//這里需要修改為stop才可以控制
          {  
            digitalWrite(relay1,HIGH);
            client.write("{\"M\":\"say\",\"ID\":\"ALL\",\"C\":\"LED1 is on\",\"SIGN\":\"ok\"}\r\n");        
            }

             if((line[i]=='p') && (line[i+1]=='l'))//這里需要修改為Play才可以控制
          {  
            digitalWrite(relay1,LOW);
            client.write("{\"M\":\"say\",\"ID\":\"ALL\",\"C\":\"LED1 is off\",\"SIGN\":\"ok\"}\r\n");  
           }
      
         
         }   
      }
      client.write("{\"M\":\"say\",\"ID\":\"*****\",\"C\":\"123456\"}\r\n");//修改自己的ID,向設備發送信息,防止掉線
      delay(2000);
    }

     

    開始使用網站的代碼一直不行,研究好久改了幾個地方可以控制了,但是現在有個問題,控制延時5秒左右,不知道是什么情況,請大家參謀參謀。。。謝謝嘻嘻嘻


    評論:共4條

    貝殼物聯 評論于:2020-12-26 21:26:37
    整個loop不要delay(2000),太長,心跳間隔通過millis()函數差值控制。
    貝殼物聯 評論于:2020-12-26 21:27:50
    譬如:
    void loop() {
    
    delay(5);
    //定時檢查在線狀態,兼做心跳
    if (millis() - lastCheckStatusTime > statusInterval) {
    checkStatus();
    }
    //定時上傳光照數據
    if (millis() - lastUpdateTime > updateInterval) {
    int sensorValue = analogRead(sensorPin);
    sensorValue = map(sensorValue, 0, 512, 0, 100);
    update1(DEVICEID, INPUTID, sensorValue);
    lastUpdateTime = millis();
    }
    //監聽esp01s透傳過來的服務器指令
    if (Serial.available()) {
    String wifiInputString = Serial.readStringUntil('\n');
    processWifiMessage(wifiInputString);
    }
    }
    yjf 評論于:2020-12-30 11:46:49
    謝謝老板,我試試 ,,但是我前面試過把delay(2000)刪除也還是延時5秒
    wangplus 回復于:2021-04-26 18:16:16
    回復 @yjf:想法反饋調試信息,確認程序確實更新了。
    返回頂部
    <noscript id="mmkmi"><source id="mmkmi"></source></noscript>
  • <noscript id="mmkmi"><kbd id="mmkmi"></kbd></noscript>
  • <table id="mmkmi"><source id="mmkmi"></source></table>
  • 三上悠亚在线观看