|
我用专属设备的时候这个程序写进去有时候会配网失败,如果配网成功配网则会一直重启请问是哪里的问题呢,有阻塞吗?
代码如下:
#define BLINKER_PRO_ESP
#define BLINKER_BUTTON
#define BLINKER_BUTTON_PIN D7
#include <Blinker.h>
char type[] = "***";
char auth[] = "****";
BlinkerNumber TEMP("temp");
BlinkerNumber TEMPK("tempk");
BlinkerNumber TEMPH("temph");
#include <MAX6675_Thermocouple.h>
#define SCK_PIN D4 // 模块上的SCK口连接到 pin3
#define CS_PIN D5 // 模块上的CS口连接到 pin4
#define SO_PIN D6 // 模块上的SO口连接到 pin5
MAX6675_Thermocouple* thermocouple = NULL;
float temp; //定义一个变量
float tempk;
float temph;
//屏幕部分
#include <Arduino.h>
#include <U8g2lib.h>
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, D1, D2, U8X8_PIN_NONE);//定义屏幕引脚为D1、D2(分辨率为128x64)
#if defined(BLINKER_BUTTON)
void buttonTick()
{
Blinker.tick();
}
void singalClick()
{
BLINKER_LOG("Button clicked!");
}
#endif
void dataStorage() //图表格拉取云端数据
{
Blinker.dataStorage("temp",temp);
Blinker.dataStorage("tempk",tempk);
Blinker.dataStorage("temph",temph);
}
void heartbeat()
{
TEMP.print(temp);
TEMPK.print(tempk);
TEMPH.print(temph);
}
void setup()
{
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
Blinker.attachHeartbeat(heartbeat);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
Blinker.begin(auth, type);
Blinker.attachDataStorage(dataStorage);//云回调函数
thermocouple = new MAX6675_Thermocouple(SCK_PIN, CS_PIN, SO_PIN);
u8g2.begin(); //启动屏幕
u8g2.enableUTF8Print();
#if defined(BLINKER_BUTTON)
Blinker.attachClick(singalClick);
attachInterrupt(BLINKER_BUTTON_PIN, buttonTick, CHANGE);
#endif
}
void loop()
{
Blinker.run();
double celsius = thermocouple->readCelsius(); // 摄氏度
const double kelvin = thermocouple->readKelvin(); // 开尔文温度
const double fahrenheit = thermocouple->readFahrenheit(); // 华氏温度
Serial.print("Temperature: ");
Serial.print(String(celsius) + " C, ");
Serial.print(String(kelvin) + " K, ");
Serial.println(String(fahrenheit) + " F");
temp=celsius;
tempk=kelvin;
temph=fahrenheit;
u8g2.setFont(u8g2_font_unifont_t_chinese2); //设置字体格式
u8g2.setFontDirection(0); //纵向显示或者横向显示
u8g2.clearBuffer(); //清空屏幕
u8g2.setCursor(0,30);
u8g2.print("摄氏度:");
u8g2.setCursor(80, 30); //显示输出位置
u8g2.print(temp); //输出字符
u8g2.sendBuffer(); //还是清空屏幕
Blinker.delay(2000);
}
|
|