我正在创建一个新的库来控制键盘和LCD。大多数代码似乎都在编译,但当它到达我定义LiquidCristal变量的行时,它会说:
'LiquidCrystal'在创建自定义库时没有命名类型
这是我的LCDKeypad.h的内容摘录
// Include types & constants of Wiring core API
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#include "WConstants.h"
#endif
// Include LCD library
#include <LiquidCrystal.h>
错误在这一行:
private:
LiquidCrystal lcd( 8, 9, 4, 5, 6, 7 ); // <<-- Error
答案 0 :(得分:5)
好吧,我读了很多,我发现了一篇关于这个主题的非常有趣的文章:
它表示编译器不会搜索未包含在草图文件中的库。破解这种方法的方法是强制编译器在加载库之前将它们链接起来,包括在草案中的LiquidCrystal.h中。
假设我的库“LCDkeypad”需要LiquidCrystal。 我的主程序(草图)需要包含LiquidCrystal以便为我的库“LCDKeypad”加载它。
现在,一个有趣的事情是使用前向声明,所以在我的LCDKeypad.h中我会声明 “Class LiquidCrystal”但不包括库。我将在LiquidCrystal.cpp和草图中完成。 我希望这很清楚。
答案 1 :(得分:1)
有两种方法可以做到这一点
代码:
#ifndef LCD_H
#define LCD_H
//Declaration of variable /functions
#endif
D:\arduino\arduino\libraries
错误问题:
多个变量声明的重叠。
库函数的重叠