我看了很多但是还没找到一本涵盖所有这些内容的好教程。 因此,我需要将项目分解为多个标签/ ino文件,只是为了使其更清晰。
因此,在您打开新标签后,我想问一些问题:
如果主项目文件(简称main
)有另外两个标签,请说A
和B
,那么,B中的每个函数都可以显示{{ 1}}以及main
?
中断会发生什么?如果我在文件A
中定义了一些中断,它是否可以调用A
文件中的中断函数?
main
会发生什么?和defines
?如果包含某个库的文件includes
允许说A
,那么Wire
文件是否也会看到它,反之亦然?
什么是与文件一起使用的战略?您是否将所有库添加到main中,还是应该将它们添加到其他文件中? (例如,处理陀螺仪并且必须包含一些库的文件)
答案 0 :(得分:2)
您可能已经注意到每个.ino文件都必须包含在具有相同名称的文件夹中。然后,此文件夹中包含的每个其他.ino文件都被视为"额外选项卡"。
据我所知,在编译时,.ino文件被合并,就好像它们是一个文件一样。例如,这是对void setup()"的重新定义的重新定义的原因。由于在同一文件夹中的不同.ino文件中包含setup
(或loop
或其他任何内容)而导致的错误。
来自" the docs":
多文件草图
草图可以包含多个文件(标签)。要管理它们,请单击环境顶部附近滚动条正上方的向右箭头。选项卡具有四个扩展名之一:无扩展名,.c,.cpp或.h(如果您提供任何其他扩展名,则句点将转换为下划线)。
编译草图时,所有没有扩展名的标签会连接在一起形成"主草图文件" 。带有.c或.cpp扩展名的选项卡是单独编译的。要使用扩展名为.h的标签,您需要#include它(使用"双引号"不是)。
虽然它提到了#34;没有扩展名的文件"但我认为它也适用于扩展名为.ino
的文件。
答案 1 :(得分:1)
我一直无法将Arduino IDE用于多个源文件。我倾向于使用类似Arduino-Makefile的东西,它可以让你更好地控制你的Arduino项目的构建过程。
.ino
文件中包含该头文件。interrupt_handler()
函数。A
或B
删除#include <Wire.h>
,您的主文件仍将包含依赖项。由于标题包含警卫,文件将不会被包括两次。 中断处理程序
#include <avr/interrupt.h>
#include "A.h"
/* Declare our ISR */
ISR(interrupt_vector)
{
/* Call our handler (located in A) */
interrupt_handler();
}