[太极创客:零基础入门学用物联网(Arduino)]error: “D3“ was not declared in this scope

  当你看着太极创客:零基础入门学用物联网的教程成功点灯后,你兴致勃勃地进入了下一小节的学习,而当你粘贴了“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            // 按钮引脚D3

  这时候可能有小伙伴要问了:“啊,那个‘define’是什么东西啊?为什么还要加‘#’啊?”
  #define 和 #include 一样,也是以“#”开头的。凡是以“#”开头的均为预处理指令,#define也不例外。#define又称宏定义,标识符为所定义的宏名,简称宏一个具有注脚的文本1。他的作用是用一段数字、字符、字符串、表达式常量 来代替某个 标识符,具体在本段程序中就是用“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            // 按钮引脚D3

ESP8266-NodeMCU引脚图

ESP8266-NodeMCU引脚图

成功截图

成功辣

成功辣



  祝小伙伴们学习物联网顺利!!!

  一起进步!!!


  1. #define用法,C语言#define详解 ↩︎

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值