数码之家

 找回密码
 立即注册
搜索
查看: 3162|回复: 16

[Arduino] 跟风买了智能插座,请教点问题。小葱的编译不成功

[复制链接]
发表于 2021-8-31 22:07:24 来自手机浏览器 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
看到坛友发的8.5的智能插座,也跟风买了几个,不过联想的没货了,就买的5孔的。
本人这方面小白,刷固件时遇到点问题,想请教一下。
卖家提供了两份代码,一个是联想的,一个是小葱的,也就是我买的这个。但小葱的编译不成功,提示如下
8E051A07-4FCD-46C6-81FB-6DF198CE6FD3.jpeg
而我用联想的那个代码就没问题,可以正常刷写。
对比了一下两份代码,基本大同小异,只是小葱的多了几处代码。我贴出一部分
这是联想的:
  1. #define BLINKER_WIFI                    //官方wifi协议库
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库
  4. #define BLINKER_PRINT Serial            //串口协议库
  5. #include <Blinker.h>                    //官方库
  6. #include <ESP8266WiFi.h>                //官方库
  7. WiFiServer server(80);                  // 服务器端口号

  8. char auth[] = "改这里";     //设备key
  9. char ssid[] = "改这里";     //路由器wifi ssid
  10. char pswd[] = "改这里";     //路由器wifi 密码

  11. bool oState = false;

  12. int kg=5;//继电器输出
  13. int de=12;//灯输出
  14. int key=4 ;//按键
  15. //*******新建组件对象

  16. BlinkerButton Button1("btn-abc");              //设置app按键的键名
  17. //*******app上按下按键即会执行该函数app里按键
  18. void button1_callback(const String & state)
  19. {
  20.    if (digitalRead(kg)==LOW)
  21.    {
  22.         BLINKER_LOG("get button state: ", state);
  23.         digitalWrite(kg, HIGH);
  24.         digitalWrite(de, LOW);
  25.         Button1.print("on");
  26.         Button1.color("#0000FF");              //设置app按键是浅蓝色
  27.         Button1.text("开启中");
  28.    }
  29.    else if (digitalRead(kg)==HIGH)
  30.    {
  31.         BLINKER_LOG("get button state: ", state);
  32.         digitalWrite(kg, LOW);
  33.         digitalWrite(de, HIGH);
  34.         Button1.print("off");
  35.         Button1.color("#00FFFF");              //设置app按键是深蓝色
  36.         Button1.text("关闭中");
  37.    }
  38. }
复制代码


这是小葱的:
  1. #define BLINKER_WIFI                    //官方wifi协议库
  2. #define BLINKER_MIOT_LIGHT              // 设置小爱灯类库
  3. #define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库
  4. #define BLINKER_DUEROS_LIGHT            // 设置小度灯类库
  5. #define BLINKER_PRINT Serial            //串口协议库
  6. #include <Blinker.h>                    //官方库
  7. #include <ESP8266WiFi.h>                //官方库
  8. WiFiServer server(80);                  // 服务器端口号


  9. char auth[] = "改这里";     //设备key
  10. char ssid[] = "改这里";     //路由器wifi ssid
  11. char pswd[] = "改这里";     //路由器wifi 密码

  12. bool oState = false;

  13. int kg=14; //继电器输出
  14. int de=4; //灯输出
  15. int key=13 ;//按键
  16. //*******新建组件对象

  17. BlinkerButton Button1("btn-abc");              //设置app按键的键名
  18. BlinkerNumber Number1("num-abc");

  19. int counter = 0;

  20. void button1_callback(const String & state)
  21. {
  22.   BLINKER_LOG("get button state: ", state);
  23.   digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
  24. }

  25. void dataRead(const String & data)
  26. {
  27.   BLINKER_LOG("Blinker readString: ", data);
  28.   counter++;
  29.   Number1.print(counter);
  30. }

  31. void setup()
  32. {
  33.   Serial.begin(115200);
  34.   BLINKER_DEBUG.stream(Serial);
  35.   BLINKER_DEBUG.debugAll();

  36.   WiFi.mode(WIFI_STA);
  37.   WiFiManager wm;

  38.   bool res;
  39.   res = wm.autoConnect("AutoConnectAP", "password");
  40.   if (!res) {
  41.     Serial.println("Failed to connect");
  42.     ESP.restart();
  43.   }
  44.   else {   
  45.     Serial.println("connected...yeey :)");
  46.    
  47.     Blinker.begin(auth, wm.getWiFiSSID().c_str(), wm.getWiFiPass().c_str());
  48.     Blinker.attachData(dataRead);

  49.     Button1.attach(button1_callback);
  50.   }
  51.   
  52.   pinMode(LED_BUILTIN, OUTPUT);
  53.   digitalWrite(LED_BUILTIN, HIGH);
  54. }

  55. //*******app上按下按键即会执行该函数app里按键
  56. void button1_callback(const String & state)
  57. {
  58.    if (digitalRead(kg)==LOW)
  59.    {
  60.         BLINKER_LOG("get button state: ", state);
  61.         digitalWrite(kg, HIGH);
  62.         digitalWrite(de, LOW);
  63.         Button1.print("on");
  64.         Button1.color("#0000FF");              //设置app按键是浅蓝色
  65.         Button1.text("开启中");
  66.    }
  67.    else if (digitalRead(kg)==HIGH)
  68.    {
  69.         BLINKER_LOG("get button state: ", state);
  70.         digitalWrite(kg, LOW);
  71.         digitalWrite(de, HIGH);
  72.         Button1.print("off");
  73.         Button1.color("#00FFFF");              //设置app按键是深蓝色
  74.         Button1.text("关闭中");
  75.    }
  76. }

  77. //利用resetFunc()内置函数,实现断网重启,定义相关变量
  78. uint32_t con_time = 0;    //断网记时
  79. int con_flag = 0;    //断网标记,1为断网
  80. void(*resetFunc) (void) = 0;

  81. //硬件重置WIFI配网信息
  82. uint32_t rst_time = 0;    //记录RESET_IO低电平前系统时间


  83. void button1_callback(const String & state)
  84. {

  85.     if (state == BLINKER_CMD_ON) {
  86.         BLINKER_LOG("Toggle on!");
  87.         digitalWrite(LED_BUILTIN, LOW);
  88.         Button1.icon("fas fa-lightbulb-on");
  89.         Button1.color("#FFFF00");
  90.         Button1.text("开");
  91.         Button1.print("on");
  92.         BUILTIN_Button.print("on"); // Blinker主界面设备开关按钮状态
  93.     }
  94.     else if (state == BLINKER_CMD_OFF) {
  95.         BLINKER_LOG("Toggle off!");
  96.         digitalWrite(LED_BUILTIN, HIGH);
  97.         Button1.icon("fas fa-lightbulb");
  98.         Button1.color("#808080");
  99.         Button1.text("关");
  100.         Button1.print("off");
  101.         BUILTIN_Button.print("off");
  102.     }
  103. }


  104. void reset_callback(const String & state){
  105.   BLINKER_LOG("get button state:", state);
  106.   //当长按"Reset"释放后清除配网信息
  107.   if(state == "pressup"){
  108.     for(int i = 0; i<3 ; i++)
  109.     {
  110.       digitalWrite(LED_BUILTIN, LOW);
  111.       Blinker.delay(300);
  112.       digitalWrite(LED_BUILTIN, HIGH);
  113.       Blinker.delay(300);
  114.     }
  115.     Blinker.reset();
  116.   }
  117. }


  118.     //断网自动重连程序
  119.     if (Blinker.connected())
  120.     {
  121.       con_flag = 0;
  122.     }
  123.     else
  124.     {
  125.       if (con_flag == 0)
  126.       {
  127.         con_time = millis();    //给断网时间赋初始值
  128.         con_flag = 1;
  129.         }
  130.       else
  131.       {
  132.         if ((millis() - con_time) >= 90000)    //判断断网时间超90秒后执行重启,这个时间可根据实际需要调整
  133.         {
  134.           resetFunc();
  135.         }
  136.       }
  137.      }

  138.      //复位清除配网
  139.     if(digitalRead(Button1) == HIGH)
  140.     {
  141.       rst_time = millis();    //刷新复位针脚复位之前的系统时间
  142.     }
  143.                 if(digitalRead(Button1) == LOW)
  144.                 {
  145.       if((millis() - rst_time) >= 3000)//复位按钮按下时长大于3秒,开始清除配网信息
  146.       {
  147.         //清除配网前LED灯闪烁
  148.         for(int i = 0; i<3 ; i++)
  149.         {
  150.           digitalWrite(LED_BUILTIN, LOW);
  151.           Blinker.delay(300);
  152.           digitalWrite(LED_BUILTIN, HIGH);
  153.           Blinker.delay(300);
  154.         }
复制代码


后面基本相同,错误就出现在多出的代码里面,我也不懂这个不会修改。或者可能是我的库有问题? 6F5EEC3A-C25F-4600-A7B8-47DF4BBD990A.jpeg

求大佬帮我解答一下。感谢。
发表于 2021-8-31 22:58:20 | 显示全部楼层
#include <WiFiManager.h>

导入这个库试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-1 00:29:08 来自手机浏览器 | 显示全部楼层
本帖最后由 mhh996378373 于 2021-9-1 00:51 编辑
wangtwothree 发表于 2021-8-31 22:58
#include

导入这个库试试


是添加这个代码到文件头吗?
回复 支持 反对

使用道具 举报

发表于 2021-9-1 08:13:19 | 显示全部楼层
mhh996378373 发表于 2021-9-1 00:29
是添加这个代码到文件头吗?

太极创客有个汉化版的,这里仔细看下吧。http://www.taichi-maker.com/home ... 6-tips/wifimanager/
回复 支持 反对

使用道具 举报

发表于 2021-9-1 08:15:22 | 显示全部楼层
WiFiManager.h 是配网用的,要是你顶部设了WIFI并且以后也不换WIFI,可以把报错的浪注译掉
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-1 19:16:06 | 显示全部楼层
易记 发表于 2021-9-1 08:15
WiFiManager.h 是配网用的,要是你顶部设了WIFI并且以后也不换WIFI,可以把报错的浪注译掉 ...

好的 感谢您
回复 支持 反对

使用道具 举报

发表于 2021-9-1 22:04:29 | 显示全部楼层
看我刚发的贴,我也是搞了好久,就是上传不了,后面换了个刷机软件才得
回复 支持 反对

使用道具 举报

发表于 2021-9-1 23:30:42 | 显示全部楼层
请问跟的是哪股风,我这吃屎都吃不上热乎的。。。。:cry:
回复 支持 反对

使用道具 举报

发表于 2021-9-2 14:47:38 来自手机浏览器 | 显示全部楼层
我是直接用了联想的代码,改了针脚就能刷,灯和按键也都正常。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-2 20:43:17 | 显示全部楼层
白小天 发表于 2021-9-2 14:47
我是直接用了联想的代码,改了针脚就能刷,灯和按键也都正常。

我刷联想能刷进去,但插电没反应,敢问大佬用的什么库和开发部选项?
回复 支持 反对

使用道具 举报

发表于 2021-9-3 01:28:47 | 显示全部楼层
mhh996378373 发表于 2021-9-2 20:43
我刷联想能刷进去,但插电没反应,敢问大佬用的什么库和开发部选项?

需要修改输出引脚。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-3 10:17:42 来自手机浏览器 | 显示全部楼层
zongher 发表于 2021-9-3 01:28
需要修改输出引脚。

是的,那个改了的,不知道为什么没反应,后来用美思奇那个自己用模块做了一个,现在好了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-3 10:20:32 来自手机浏览器 | 显示全部楼层
zongher 发表于 2021-9-3 01:28
需要修改输出引脚。

是的,那个改了的,就是插电没反应,我怀疑我的arduino库或者开发组件有问题。我换了美思奇买个自己用模块做了一个,好了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-3 19:40:09 | 显示全部楼层
sclg80 发表于 2021-9-1 22:04
看我刚发的贴,我也是搞了好久,就是上传不了,后面换了个刷机软件才得

积分不够55:mad: 自己根据坛子里大神折腾了一下 还可以
回复 支持 反对

使用道具 举报

发表于 2021-9-4 19:09:05 来自手机浏览器 | 显示全部楼层
mhh996378373 发表于 2021-9-3 19:40
积分不够55 自己根据坛子里大神折腾了一下 还可以

前面设置错误,我改成3币了。但是系统还会收35,这个不懂怎么回事
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-4 19:49:49 | 显示全部楼层
sclg80 发表于 2021-9-4 19:09
前面设置错误,我改成3币了。但是系统还会收35,这个不懂怎么回事

35是板块收的,默认就是35再加设置的数值。我比较惨,花25买了,下载要花35,结果就是花了25也没下上:sad:
回复 支持 反对

使用道具 举报

发表于 2021-9-14 16:24:59 | 显示全部楼层
小葱的,今天到货,老手机装上了APP,一切正常,而且还提示有固件可以更新,能用就行,暂时没有更新。就是高版本安卓的手机无法运行这个APP,很无语。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-3-29 05:22 , Processed in 0.140400 second(s), 11 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表