这里是一些个人整理的,觉得比较好用的 Arduino 库,会不定期更新。
Bounce2
使用它处理防抖效果,非常不错!
#include <Bounce2.h> const byte BOUNCE_PIN = 7; Bounce myBounce = Bounce(); /* 初始化 */ myBounce.attach(BOUNCE_PIN); myBounce.interval(100); // interval in ms /* 循环 */ myBounce.update(); myBounce.changed(); // 是否监测到变化 myBounce.fell(); // HIGH to LOW myBounce.rose(); // LOW to HIGH myBounce.read(); // 读取其状态
EventButton
专业处理按钮的库,自带防抖效果(也是基于 Bounce2),基于事件的处理方式,监听的事件类型非常丰富。
#include <EventButton.h> const byte BTN_PIN = 7; EventButton myBtn(BTN_PIN); /* 定义事件 */ void handleMyBtnReleased(EventButton& btn) { // 如果设置为按钮设置了 UserId 可以通过此方式获取,然后再基于此判断该进行什么操作 byte userId = btn.getUserId(); // do something... } /* 初始化 */ myBtn.setUserId(100); myBtn.setReleasedHandler(handleMyBtnReleased); /* 循环 */ myBtn.update();
ArduinoHttpClient
专业处理基于 http 的通信,例如 GET / POST…
需要注意的是,如果请求的域名不是 IP 地址,请一定要给 WiFi 配置 DNS,否则会报 DNS Failed for futurama.ink 错误。DNS 推荐腾讯云的 IPv4 DNS 119.29.29.29,具体请见这里。
#include <WiFi.h> #include <ArduinoHttpClient.h> const char* SERVER_ADDRESS = "futurama.ink"; const unsigned int SERVER_PORT = 1026; WiFiClient wifiClient; HttpClient httpClient(wifiClient, SEVER_ADDRESS, SERVER_PORT); /* GET */ void doHttpGet() { httpClient.get("/gets/1"); unsigned int statusCode = httpClient.responseStatusCode(); String response = httpClient.responseBody(); // 接下来就是基于 status code 和 response 的解析处理 } /* POST */ void doHttpPose() { // {"code": "something"} String data = "{\"code\":\"" + String(something) + "\"}"; httpClient.post("/posts", "application/json", data); unsigned int statusCode = httpClient.responseStatusCode(); String response = httpClient.responseBody(); // 接下来就是基于 status code 和 response 的解析处理 }
Arduino_JSON
专业处理 JSON
#include <Arduino_JSON.h> JSONVar obj = JSON.parse(String); if(JSON.typeof(obj) == "undefined") { // 解析失败 } else { if(obj.hasOwnProperty("code")) { unsigned int code = (int) obj["code"]; // const char* code = (const char*) obj["code"]; // bool code = (bool) obj["code"]; // float code = (float) obj["code"]; // double code = (double) obj["code"]; } }