Arduino编译报错'I2C_MODE'未声明 基于Grove入门套件LIS3DHTR开发故障
错误根因
该报错由Seeed_Arduino_LIS3DHTR库版本与示例代码版本不匹配导致,你当前下载的新版库已经移除了I2C_MODE宏定义,该参数不再需要传入构造函数。同时你的代码存在头文件重复引入的冗余问题。
修复步骤
- 删除重复的LIS3DHTR头文件引用,仅保留一行
#include <LIS3DHTR.h>即可 - 两处LIS对象的构造代码删除
I2C_MODE入参,直接调用无参构造即可
修复后完整代码
#include <LIS3DHTR.h> #ifdef SOFTWAREWIRE #include <SoftwareWire.h> SoftwareWire myWire(3, 2); LIS3DHTR<SoftwareWire> LIS; #define WIRE myWire #else #include <Wire.h> LIS3DHTR<TwoWire> LIS; #define WIRE Wire #endif void setup() { Serial.begin(9600); while (!Serial) {}; LIS.begin(WIRE); delay(100); LIS.setOutputDataRate(LIS3DHTR_DATARATE_50HZ); } void loop() { if (!LIS) { Serial.println("LIS3DHTR didn't connect."); while (1); return; } Serial.print("x:"); Serial.print(LIS.getAccelerationX()); Serial.print(" "); Serial.print("y:"); Serial.print(LIS.getAccelerationY()); Serial.print(" "); Serial.print("z:"); Serial.println(LIS.getAccelerationZ()); delay(500); }
修复后重新编译即可消除该报错,后续可以在此基础上添加倾斜角度计算、蜂鸣器触发的相关逻辑。
内容的提问来源于stack exchange,提问作者TJ Webster
相关产品推荐
相关产品推荐

