Arduino 如何获得+;知识产权署的回应
问题是,+IPD response的值没有显示在ReadLastEntryThingSpeak()上,因此我的代码不正确,或者我必须添加一些内容?我搜索了很多网站Arduino论坛、Thingspeak论坛等。但我没有看到任何解决办法( 我试着做这个系统已经5天了,但它不起作用,为什么Arduino 如何获得+;知识产权署的回应,arduino,arduino-c++,Arduino,Arduino C++,问题是,+IPD response的值没有显示在ReadLastEntryThingSpeak()上,因此我的代码不正确,或者我必须添加一些内容?我搜索了很多网站Arduino论坛、Thingspeak论坛等。但我没有看到任何解决办法( 我试着做这个系统已经5天了,但它不起作用,为什么 #include <SoftwareSerial.h> #include <string.h> #define esp8266 Serial1 #define SSID "test"
#include <SoftwareSerial.h>
#include <string.h>
#define esp8266 Serial1
#define SSID "test" // put here the name of your wifi network
#define PASS "lolman123"
#define IP "184.106.153.149"
int counter = 120;
String keep;
String valuetosend;
const byte maxDataLength = 30; // maxDataLength is the maximum length
allowed for received data.
char receivedChars[31] ;
boolean newData = false;
String GET = "GET /update?key=FYPW04TOYR3FX2QH&"; // put here your
thingspeak key
String GET1 = "field1=";
String readGET1 = "GET
https://api.thingspeak.com/channels/864152/fields/1/last";
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
esp8266.begin(115200);
esp8266.println("AT");
delay(5000);
if(esp8266.find("OK")){
connectWiFi();
Serial.println("WIFI CONNECTED");
}
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
newData = false;
}
void loop() {
// put your main code here, to run repeatedly:
int readBtn = digitalRead(7);
int readSend = digitalRead(8);
if (readBtn == 0)
{
ReadLastEntryThingSpeak();
}
if (readSend == 0)
{
WriteThingSpeak();
}
}
boolean connectWiFi(){
esp8266.println("AT+CWMODE=1");
delay(2000);
String cmd="AT+CWJAP=\"";
cmd+=SSID;
cmd+="\",\"";
cmd+=PASS;
cmd+="\"";
esp8266.println(cmd);
delay(5000);
if(esp8266.find("OK")){
Serial.println("OK");
return true;
}else{
Serial.println("KO");
return false;
}
}
void updateFunction(String valuetosend){
String cmd = "AT+CIPSTART=\"TCP\",\"";
cmd += IP;
cmd += "\",80";
esp8266.println(cmd);
delay(2000);
if(esp8266.find("Error")){
Serial.print("Error1");
return;
}
cmd = GET + GET1;
cmd += valuetosend;
cmd += "\r\n";
Serial.print(cmd);
esp8266.print("AT+CIPSEND=");
esp8266.println(cmd.length());
if(esp8266.find(">")){
esp8266.print(cmd);
}else{
esp8266.println("AT+CIPCLOSE");
}
}
void ReadLastEntryThingSpeak()
{
String cmd = "AT+CIPSTART=\"TCP\",\""; //connect to thingspeak
cmd += IP;
cmd += "\",80";
esp8266.println(cmd);
delay(2000);
if(esp8266.find("Error")){
Serial.print("Error1");
return;
}
cmd = readGET1;
cmd += "\r\n";
Serial.print(cmd);
esp8266.print("AT+CIPSEND=");
esp8266.println(cmd.length());
if(esp8266.find(">")){
esp8266.print(cmd);
}else{
esp8266.println("AT+CIPCLOSE");
}
delay(2000);
recvWithStartEndMarkers(); // check to see if we have
received any new commands
if (newData) { processCommand(); }
}
void WriteThingSpeak ()
{
String valuetosend = String(counter);
updateFunction(valuetosend);
}
void recvWithStartEndMarkers()
{
static boolean recvInProgress = false;
static byte ndx = 0;
char startMarker = ':';
char endMarker = 'C';
if (esp8266.available() > 0)
{
char rc = esp8266.read();
if (recvInProgress == true)
{
if (rc != endMarker)
{
if (ndx < maxDataLength) { receivedChars[ndx] = rc;
ndx++; }
}
else
{
receivedChars[ndx] = '\0'; // terminate the string
recvInProgress = false;
ndx = 0;
newData = true;
}
}
else if (rc == startMarker) { recvInProgress = true; }
}
}
void processCommand()
{
Serial.print("Recieved data = "); Serial.println(receivedChars);
newData = false;
}
#包括
#包括
#定义esp8266 Serial1
#定义SSID“测试”//在此处输入您的wifi网络名称
#定义PASS“lolman123”
#定义IP“184.106.153.149”
int计数器=120;
串保持;
字符串值ToSend;
常量字节maxDataLength=30;//maxDataLength是最大长度
允许接收数据。
char-receivedChars[31];
布尔newData=false;
String GET=“GET/update?key=FYPW04TOYR3FX2QH&”;//将您的
说话键
字符串GET1=“field1=”;
String readGET1=“获取
https://api.thingspeak.com/channels/864152/fields/1/last";
无效设置(){
//将安装代码放在此处,以便运行一次:
Serial.begin(9600);
esp8266.开始(115200);
esp8266.println(“AT”);
延迟(5000);
如果(esp8266.查找(“确定”)){
连接WiFi();
Serial.println(“WIFI连接”);
}
pinMode(7,输入\上拉);
pinMode(8,输入\上拉);
newData=false;
}
void循环(){
//将主代码放在此处,以便重复运行:
int readBtn=数字读取(7);
int readSend=digitalRead(8);
如果(readBtn==0)
{
ReadLastEntryThingSpeak();
}
如果(readSend==0)
{
WriteThingSpeak();
}
}
布尔连接WiFi(){
esp8266.println(“AT+CWMODE=1”);
延迟(2000年);
字符串cmd=“AT+CWJAP=\”;
cmd+=SSID;
cmd+=“\”,\”;
cmd+=通过;
cmd+=“\”;
esp8266.println(cmd);
延迟(5000);
如果(esp8266.查找(“确定”)){
Serial.println(“OK”);
返回true;
}否则{
序列号:println(“KO”);
返回false;
}
}
void updateFunction(字符串值ToSend){
String cmd=“AT+CIPSTART=\“TCP\”,\”;
cmd+=IP;
cmd+=“\”,80”;
esp8266.println(cmd);
延迟(2000年);
如果(esp8266.查找(“错误”)){
串行打印(“错误1”);
返回;
}
cmd=GET+GET1;
cmd+=valuetosend;
cmd+=“\r\n”;
串行打印(cmd);
esp8266.打印(“AT+CIPSEND=”);
esp8266.println(cmd.length());
如果(esp8266.find(“>”){
esp8266.打印(cmd);
}否则{
esp8266.println(“AT+CIPCLOSE”);
}
}
void ReadLastEntryThingSpeak()
{
String cmd=“AT+CIPSTART=\“TCP\”,\“”;//连接到thingspeak
cmd+=IP;
cmd+=“\”,80”;
esp8266.println(cmd);
延迟(2000年);
如果(esp8266.查找(“错误”)){
串行打印(“错误1”);
返回;
}
cmd=readGET1;
cmd+=“\r\n”;
串行打印(cmd);
esp8266.打印(“AT+CIPSEND=”);
esp8266.println(cmd.length());
如果(esp8266.find(“>”){
esp8266.打印(cmd);
}否则{
esp8266.println(“AT+CIPCLOSE”);
}
延迟(2000年);
recvWithStartEndMarkers();//检查是否有
收到任何新命令
if(newData){processCommand();}
}
void WriteThingSpeak()
{
字符串值ToSend=字符串(计数器);
updateFunction(valuetosend);
}
void recvWithStartEndMarkers()
{
静态布尔值recvInProgress=false;
静态字节ndx=0;
char startMarker=':';
char endMarker='C';
如果(esp8266.available()>0)
{
char rc=esp8266.read();
如果(recvInProgress==true)
{
如果(rc!=endMarker)
{
如果(ndx
我得到的结果是接收到的数据=,但实际输出是接收到的数据=120。我不知道+IPD响应的值是多少,我们大多数人也是如此。说出你观察到这个问题的函数,解释+IPD响应是什么样子的,这样每个熟悉Arduino/C++的人都可以帮助+IPD,3:120关闭它这样的响应。我不知道知道+IPD响应的值是什么,我们大多数人都会知道。说出你观察到问题的函数,解释+IPD响应是什么样子的,这样每个熟悉Arduino/C++的人都可以帮助+IPD,3:120关闭it响应,如下所示。