我在Arduino中编写课程时遇到了一些麻烦。这是一个名为“杰里”的课程。它包含三个用户定义类的实例,称为Mouth,Move和Injection。 Arduino IDE抱怨'嘴'没有命名类型,'移动'没有命名类型。如何让Arduino识别Mouth和Move作为有效类型?
#ifndef JERRY_H
#define JERRY_H
include "Button.h"
include "Injection.h"
class Jerry
{
protected:
int BGL;
double protein_conc;
public:
Jerry(int, int);
Mouth mth;
Move mv;
Injection inj;
volatile long prev_interrupt_time;
};
#endif // JERRY_H
(删除了#符号因为它搞砸了StackOverflow中的格式化)
嘴,移动和注入类声明如下:
#ifndef BUTTON_H
#define BUTTON_H
include "Jerry.h"
class Button
{
public:
void setPin(int);
int getPin();
bool check(Jerry);
virtual void run();
protected:
int pin;
};
class Mouth : public Button
{
public:
int detectFood();
void run();
};
class Move : public Button
{
public:
bool checkLaughing();
void runLaughing();
bool checkSleep();
};
#endif // BUTTON_H
#ifndef INJECTION_H
#define INJECTION_H
class Injection
{
public:
void setPin(int, int, int, int);
void checkInjection();
void checkInjectionSite();
protected:
int pin1;
int pin2;
int pin3;
int pin4;
};
#endif // INJECTION_H
任何帮助将不胜感激。
答案 0 :(得分:3)
有两个循环依赖。
要对这些进行排序,请使用前向声明。 : - )
答案 1 :(得分:2)
您似乎需要在草图所在的文件夹中将其设置为libraries/Jerry/Jerry.h
和libraries/Button/Button.h
。
退房: http://arduino.cc/en/Hacking/LibraryTutorial
首先,在库的子目录中创建一个莫尔斯目录 你的速写本目录。复制或移动Morse.h和Morse.cpp 文件到该目录。现在启动Arduino环境。如果你 打开Sketch>导入库菜单,你应该看到莫尔斯里面。 该库将使用使用它的草图进行编译。如果是图书馆 似乎没有构建,确保文件真正以.cpp和。结尾 .h(例如,没有额外的.pde或.txt扩展名)。我们来看看如何 我们可以使用新库复制旧的SOS草图:
#include <Morse.h>
Morse morse(13);
void setup()
{
}
void loop()
{
morse.dot(); morse.dot(); morse.dot();
morse.dash(); morse.dash(); morse.dash();
morse.dot(); morse.dot(); morse.dot();
delay(3000);
}