??当你看着太极创客:零基础入门学用物联网的教程成功点灯后,你兴致勃勃地进入了下一小节的学习,而当你粘贴了“3_2_3_Pin_State_Display”点下“验证”或“上传”按钮后,意想不到的事情发生了,它报错了!
罪魁祸首
In function ‘void setup()’: 3_2_3_Pin_State_Display:20:19: error: ‘D3’ was not declared in this scope 20 | #define buttonPin D3 // 按钮引脚D3 | ?????^~
#define buttonPin D3
??这时候可能有小伙伴要问了:“啊,那个‘define’是什么东西啊?为什么还要加‘#’啊?” ??#define 和 #include 一样,也是以“#”开头的。凡是以“#”开头的均为预处理指令,#define也不例外。#define又称宏定义,标识符为所定义的宏名,简称宏一个具有注脚的文本。他的作用是用一段数字、字符、字符串、表达式常量 来代替某个 标识符,具体在本段程序中就是用“D3”来代替“buttonPin”,相当于编译器会把本程序中所有的“buttonPin”都视为“D3”。
报错原因
??不知道 ??我也纳闷啊,为啥会报错呢?代码一样为啥你行我不行呢? ??我猜测可能是我板子的模拟引脚D3引脚和数字引脚GPIO 0 没有匹配?库函数不同?到时候我研究明白了再来填坑。
——————————————8月22日 10:08更新———————————— ??我知道辣!我在Arduino IED的 工具-开发板中选择了“Generic ESP 8266 Moudle”而我购买的是ESP8266-NodeMCU开发板,教程中选择的开发板应该是“NodeMCU 1.0 (ESP-12E Moudle)”。Generic ESP 8266 Moudle 根本就没有定义D3引脚,程序中的buttonPin被替换为D3后他还是无法识别鸭!
怎么解决
方法一
??在Arduino IED的 工具-开发板中选择“NodeMCU 1.0 (ESP-12E Moudle)”即可(我切换后发现浏览器的访问等待时间明显变长,刚开始几次还出现了无法访问的情况)。
方法二
??他之前不是说数字引脚和模拟引脚作用一样么,那我们干脆用数字引脚好了,即在代码中手动将“D3”换为其对应的“0”,注意不是“18”(图片来自太极创客网站)。
#define buttonPin 0
ESP8266-NodeMCU引脚图
成功截图
成功辣
??祝小伙伴们学习物联网顺利!!!
??一起进步!!!
|