<em id="ri2my"></em>
  • <em id="ri2my"></em>
    <em id="ri2my"><label id="ri2my"><nav id="ri2my"></nav></label></em>
  • <em id="ri2my"><label id="ri2my"></label></em>
    <div id="ri2my"></div>
    1. <em id="ri2my"><label id="ri2my"></label></em>
    2. <em id="ri2my"><ol id="ri2my"></ol></em>
      <em id="ri2my"></em>

      1. 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;

            }

          }

        }


        <em id="ri2my"></em>
      2. <em id="ri2my"></em>
        <em id="ri2my"><label id="ri2my"><nav id="ri2my"></nav></label></em>
      3. <em id="ri2my"><label id="ri2my"></label></em>
        <div id="ri2my"></div>
        1. <em id="ri2my"><label id="ri2my"></label></em>
        2. <em id="ri2my"><ol id="ri2my"></ol></em>
          <em id="ri2my"></em>

          1. 免费高清视频