<noscript id="mmkmi"><source id="mmkmi"></source></noscript>
  • <noscript id="mmkmi"><kbd id="mmkmi"></kbd></noscript>
  • <table id="mmkmi"><source id="mmkmi"></source></table>
  • arduino加ESP8266-

    arduino加ESP8266-的詳細介紹

    創作者:Tracis | 更新日期:2016-07-17 | 在線時長:4時
    arduino+ESP8266-01 實現遠程控制數碼管輸出

    功能介紹

    遠程控制數碼管輸出

    ESP8266-01與wifi連接不穩定,常上線后又離線

    指令:play, 循環顯示0-9;

        stop,關閉;

        1 ,顯示1;

        2,顯示2;

        ...

    硬件組成

    arduino r3 +ESP8266-01  


    代碼說明

    基本是參考貝殼 

    遠程控制通訊——基于Arduino + ESP8266控制LED燈并返回控制結果

    的代碼。

    /*

    * arduino+ESP8266-01 實現遠程控制數碼管顯示0123456789程序

    *使用貝殼物聯平臺的接口

    */

    #include<aJSON.h>

    String DEVICEID="xxx"; // 設備編號

    String  APIKEY="zzzzzz"; // 設備密碼

    unsigned long lastCheckInTime = 0; //記錄上次報到時間

    const unsigned long postingInterval = 40000; // 每隔40秒向服務器報到一次

    String inputString = "";

    boolean stringComplete = false;

    boolean CONNECT = true; 

    char* parseJson(char *jsonString);


    const int N=8;//led總數

    const unsigned char duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//段碼

    const int LEDpins[]={2,3,4,5,6,7,8,9};//定義led引腳

    //循環輸出0-9函數

    void led_loop (unsigned char value){

      for(int i=0;i<N;i++){

        digitalWrite(LEDpins[i],bitRead(value,i));//數碼管共陽用非 !bitRead(value[i],i)//共陰bitRead(value[i],i) 

        }

      } 

    void setup() {

      //初始化引腳為輸出

      for(int i=0;i<N;i++){

        pinMode(LEDpins[i], OUTPUT);

        }

      //設置波特率

      Serial.begin(115200);

      delay(5000);

    }


    void loop() {

      //登錄服務器

       if (millis() - lastCheckInTime > postingInterval || lastCheckInTime==0) {

          checkIn();

      }


        serialEvent();

        if (stringComplete) {

          inputString.trim();

          //Serial.println(inputString);

          if(inputString=="CLOSED"){

            Serial.println("connect closed!");

            CONNECT=false;        

          }else{

            int len = inputString.length()+1;    

            if(inputString.startsWith("{") && inputString.endsWith("}")){

              char jsonString[len];

              inputString.toCharArray(jsonString,len);

              aJsonObject *msg = aJson.parse(jsonString);

              processMessage(msg);

              aJson.deleteItem(msg);          

            }

          }      

          // clear the string:

          inputString = "";

          stringComplete = false;    

      }

    }

    void checkIn() {

      if (!CONNECT) {

        Serial.print("+++");

        delay(500);  

        Serial.print("\r\n"); 

        delay(1000);

        Serial.print("AT+RST\r\n"); 

        delay(6000);

        CONNECT=true;

        lastCheckInTime=0;

      }

      else{

        Serial.print("{\"M\":\"checkin\",\"ID\":\"");

        Serial.print(DEVICEID);

        Serial.print("\",\"K\":\"");

        Serial.print(APIKEY);

        Serial.print("\"}\r\n");

        lastCheckInTime = millis();   

      }

    }

    void processMessage(aJsonObject *msg){

      aJsonObject* method = aJson.getObjectItem(msg, "M");

      aJsonObject* content = aJson.getObjectItem(msg, "C");     

      aJsonObject* client_id = aJson.getObjectItem(msg, "ID");  

      //char* st = aJson.print(msg);

      if (!method) {

        return;

      }

        String M=method->valuestring;

        String C=content->valuestring;

        String F_C_ID=client_id->valuestring;

        if(M=="say"){

          if(C=="play"){

            for(int i=0;i<10;i++){

              led_loop(duanma[i]);

              delay(1000);

              }

              delay(1000);

              led_loop(0);//關閉

              sayToClient(F_C_ID,"play 0~9循環");

              }

          if(C=="0"){

            led_loop(duanma[0]);

            sayToClient(F_C_ID,"輸出0");    

          }

          if(C=="1"){

            led_loop(duanma[1]);

            sayToClient(F_C_ID,"輸出1");    

          }

          if(C=="2"){

            led_loop(duanma[2]);

            sayToClient(F_C_ID,"輸出2");    

          }

          if(C=="3"){

            led_loop(duanma[3]);

            sayToClient(F_C_ID,"輸出3");    

          }

          if(C=="4"){

            led_loop(duanma[4]);

            sayToClient(F_C_ID,"輸出4");    

          }

          if(C=="5"){

            led_loop(duanma[5]);

            sayToClient(F_C_ID,"輸出5");    

          }

          if(C=="6"){

            led_loop(duanma[6]);

            sayToClient(F_C_ID,"輸出6");    

          }

          if(C=="7"){

            led_loop(duanma[7]);

            sayToClient(F_C_ID,"輸出7");    

          }

          if(C=="8"){

            led_loop(duanma[8]);

            sayToClient(F_C_ID,"輸出8");    

          }

          if(C=="9"){

            led_loop(duanma[9]);

            sayToClient(F_C_ID,"輸出9");    

          } 

          if(C=="stop"){

            led_loop(0);

            sayToClient(F_C_ID,"關閉");    

          } 

        }

    }

    void sayToClient(String client_id, String content){

      Serial.print("{\"M\":\"say\",\"ID\":\"");

      Serial.print(client_id);

      Serial.print("\",\"C\":\"");

      Serial.print(content);

      Serial.print("\"}\r\n");

      lastCheckInTime = millis();

    }

    void serialEvent() {

      while (Serial.available()) {

        char inChar = (char)Serial.read();

        //delay(2);

        inputString += inChar;

        if (inChar == '\n') {

          stringComplete = true;

        }

      }

    }


    <noscript id="mmkmi"><source id="mmkmi"></source></noscript>
  • <noscript id="mmkmi"><kbd id="mmkmi"></kbd></noscript>
  • <table id="mmkmi"><source id="mmkmi"></source></table>
  • 三上悠亚在线观看