国内综合精彩aⅤ无码不卡_日本少妇做爰全过程_欧美性爱在线播放免费_午夜?V日韩一区二区_免费a级毛片无码免费播放_成在人线av无码喷水_亚洲精品网站色视频_国产婷婷精品成人_老师撩起裙子让我桶的视频_秋霞影院国产

anduino 開關程序如何加上按鈕手動控制

作者:Microblue | 更新時間:2020-05-12 | 瀏覽量:1313

下面這個開關程序如何加上按鈕手動控制,按鈕接口 0。

手動按鈕程序

int led = 4;
int button = 0;
boolean buttonState = 1;
void setup() {
  // put your setup code here, to run once:
  pinMode(led, OUTPUT);
  pinMode(button, INPUT);
}
 
void loop() {
  // put your main code here, to run repeatedly:
  if (digitalRead(button) == HIGH) {
    digitalWrite(led, buttonState);
    buttonState = !buttonState;
    while (digitalRead(button) == HIGH);
  }
}

開關程序

#include <aJSON.h>
//=============  此處必須修該============
String DEVICEID = "1"; // 你的設備ID   ==
String  APIKEY = "493822592"; //設備密碼=
//=======================================

const int LED = 4;// LED正極連接針腳4
unsigned long lastCheckStatusTime = 0; //記錄上次報到時間
const unsigned long postingInterval = 40000; // 每隔40秒向服務器報到一次
unsigned long checkoutTime = 0;//登出時間

void setup() {
  pinMode(LED, OUTPUT);
  Serial.begin(115200);
  delay(5000);//等一會兒ESP8266
}
void loop() {
  //每一定時間查詢一次設備在線狀態(tài),同時替代心跳
  if (millis() - lastCheckStatusTime > postingInterval) {
    checkStatus();
  }
  //checkout 50ms 后 checkin
  if ( checkoutTime != 0 && millis() - checkoutTime > 50 ) {
    checkIn();
    checkoutTime = 0;
  }
  //讀取串口信息
  while (Serial.available()) {
    String inputString = Serial.readStringUntil('\n');
    //檢測json數據是否完整
    int jsonBeginAt = inputString.indexOf("{");
    int jsonEndAt = inputString.lastIndexOf("}");
    if (jsonBeginAt != -1 && jsonEndAt != -1) {
      //凈化json數據
      inputString = inputString.substring(jsonBeginAt, jsonEndAt + 1);
      int len = inputString.length() + 1;
      char jsonString[len];
      inputString.toCharArray(jsonString, len);
      aJsonObject *msg = aJson.parse(jsonString);
      processMessage(msg);
      aJson.deleteItem(msg);
    }
  }
}
//設備登錄
//{"M":"checkin","ID":"xx1","K":"xx2"}\n
void checkIn() {
  Serial.print("{\"M\":\"checkin\",\"ID\":\"");
  Serial.print(DEVICEID);
  Serial.print("\",\"K\":\"");
  Serial.print(APIKEY);
  Serial.print("\"}\r\n");
}
//處理網絡接收到到指令,執(zhí)行相關動作
void processMessage(aJsonObject *msg) {
  aJsonObject* method = aJson.getObjectItem(msg, "M");
  if (!method) {
    return;
  }
  String M = method->valuestring;
  if (M == "WELCOME TO BIGIOT") {
    checkOut();
    checkoutTime = millis();
    return;
  }
  if (M == "connected") {
    checkIn();
  }
  if (M == "say") {
    aJsonObject* content = aJson.getObjectItem(msg, "C");
    aJsonObject* client_id = aJson.getObjectItem(msg, "ID");
    String C = content->valuestring;
    String F_C_ID = client_id->valuestring;
    if (C == "play") {
      digitalWrite(LED, HIGH);
      say(F_C_ID, "LED on!");
    }
    if (C == "stop") {
      digitalWrite(LED, LOW);
      say(F_C_ID, "LED off!");
    }
  }
}

//發(fā)送say指令,用于設備與用戶、設備與設備間通訊
//{"M":"say","ID":"xx1","C":"xx2","SIGN":"xx3"}\n
void say(String ID, String c) {
  Serial.print("{\"M\":\"say\",\"ID\":\"");
  Serial.print(ID);
  Serial.print("\",\"C\":\"");
  Serial.print(c);
  Serial.print("\"}\r\n");
}
//強制設備下線,用消除設備掉線延時
//{"M":"checkout","ID":"xx1","K":"xx2"}\n
void checkOut() {
  Serial.print("{\"M\":\"checkout\",\"ID\":\"");
  Serial.print(DEVICEID);
  Serial.print("\",\"K\":\"");
  Serial.print(APIKEY);
  Serial.print("\"}\n");
}
//查詢設備在線狀態(tài)
//{"M":"status"}\n
void checkStatus() {
  Serial.print("{\"M\":\"status\"}\n");
  lastCheckStatusTime = millis();
}


評論:共1條

孤單一個人 評論于:2020-09-06 23:17:15
有button的庫,可以實現點擊雙擊和長按
返回頂部