基于上海乐鑫ESP系列的开发板
- ESPduino(ESP8266)/WeMos D1(ESP8266)
//WeMos D1(ESP8266) 使用ESP-12F模组,SMD-22封装,而ESPduino使用安信可的ESP-13模组,SMD-18封装. <img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3746415d336544f0b301b301fe52656d~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=901&h=1198&s=1199992&e=png&b=f0e9e8" width="40%">
//ESPDuino使用安信可的ESP-13模块(该模块使用ESP8266EX 芯片),该模块的pinout如下: <img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3ad1aa50fd1d4dc9b2329d7c400c65fc~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=1587&h=1469&s=162526&e=png&b=fefefe" width="65%">
标准arduino IDE开发ESPDuino,需要在“首选项”->"其他开发板管理器地址"下输入: \` <https://arduino.esp8266.com/stable/package_esp8266com_index.json> //ESPDuino使用ESP-13模块(很多书上误写为ESP-12模块) <img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/41bc69e4571d4a4eb7630ec08fba5630~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=1322&h=615&s=62414&e=png&b=f9f9f9" width="55%"> ESP-13模块的原理图: ![image](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d25db74ac50d4daaaabbcd8197e366e9~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=2095\&h=1637\&s=483546\&e=png\&b=fdfcfc)
- ESP32
- 常用arduino库
| 名称 | 库头文件 | 用法 | 在ESP32上是否能使用 | | --------------------------------------------------------------------- | -------------------------------- | ------------------------------------------------------------------------------------- | ------------ |
| debug库 | #include "Arduino\_DebugUtils.h" |
setup()阶段:Debug.timestampOn();
loop()阶段:DEBUG\_INFO("i = %d,0x%02x", i,i);
| Y |
| Serial Plotter库,Serial Plotter 可以将串口发送的数据以图表的形式显示出来,适合观察数据的变化趋势 | | | | | Debugger:这个库可以让你在 Arduino 程序中使用断点、单步执行等调试功能,就像在 PC 上使用集成开发环境调试程序一样。 | #include \<Debugger.h\> | | 有报错?? | | SimpleDebug:这是一个简单的调试库,它允许你通过串口发送调试信息,并且可以设置不同的调试级别。 | | | | | DebugLib:这个库为 Arduino 提供了一个简单而强大的调试功能,支持宏定义来启用或禁用调试代码,无需修改代码即可切换调试模式。 | | | |
|
Logging | | | | 提供了日志功能,支持不同级别的日志输出,比如调试、信息、警告、错误等。 assert 虽然不是库,但 C++ 标准库中的 assert 宏可以在条件不满足时停止程序运行,是检查假设条件的好方法。 elibcppdbg 这个库提供了类似标准 C++ 库中的流输出功能,可以将信息输出到串口,方便调试。 NeoDebug 一个为 Arduino 设计的轻量级调试库,支持多种数据类型的输出,还可以自定义调试等级。 FPRETTY 一个简单的库,用于格式化串口输出,使得调试信息更加易于阅读。
| | | |
\| | | | | \| | | | | \| | | | |
- AI回答
- Q:arduino IDE编译不同开发板时,ino代码如何区分当前是哪种开发板
- A:
在 Arduino IDE 中,当你选择不同的开发板时,编译器会包含对应开发板的特定头文件和定义,这允许你在代码中通过条件编译来区分当前是哪种开发板。以下是一些方法来区分不同的开发板:
1. **使用预定义的宏**:
每个开发板在编译时都会定义一些特定的宏,例如 `ARDUINO`,`ARDUINO_ARCH_{ARCH}` 和 `BOARD` 等。你可以通过这些宏来判断当前的板子。 ```cpp #ifdef ARDUINO_AVR_UNO // 代码专门为 Arduino Uno 编写 #elif defined(ARDUINO_SAM_DUE) // 代码专门为 Arduino Due 编写 #elif defined(ARDUINO_ARCH_ESP8266) // 代码专门为 ESP8266 编写 #elif defined(ARDUINO_ARCH_ESP32) // 代码专门为 ESP32 编写 #endif ```
2. **检查`BOARD`宏**:
`BOARD`宏通常包含了开发板的名称,你可以用它来区分不同的开发板。 ```cpp #if defined(BOARD) && (BOARD == "AVR_UNO" || BOARD == "AVR_MEGA2560") // 代码适用于 Uno 或 Mega2560 #elif defined(BOARD) && BOARD == "SAMD_ZERO" // 代码适用于 Zero 或 itsybitsy_m0 #endif ```
3. **检查特定开发板的功能或引脚定义**:
某些开发板可能有特定的功能或引脚定义,你可以检查这些来区分开发板。 ```cpp #if defined(__AVR_ATmega328P__) // 代码专门为基于 ATmega328P 的开发板编写 #elif defined(__SAM3X8E__) // 代码专门为基于 SAM3X8E 的开发板编写 #endif ```
4. **自定义宏**:
在项目的 `platform.local.txt` 或 `boards.txt` 文件中,你可以为特定的开发板定义自定义宏。然后在代码中使用这些宏。
5. **使用`pins_arduino.h`文件**:
每个 Arduino 开发板都有自己的 `pins_arduino.h` 文件,定义了该板的引脚映射。虽然这个文件通常不直接在 `.ino` 文件中使用,但你可以通过包含它来获取板级信息。 ```cpp #include <pins_arduino.h> #if defined(PIN_A0) // 根据引脚定义区分 #endif ```
使用这些方法,你可以在 `.ino` 文件中根据不同的开发板编写特定的代码段,从而确保代码可以在不同的硬件平台上正确运行。记得在编写条件编译代码时,始终要有一个默认的路径,以处理未定义的情况。