Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
arduino中有多个选项卡/文件?_Arduino - Fatal编程技术网

arduino中有多个选项卡/文件?

arduino中有多个选项卡/文件?,arduino,Arduino,我看了这么多,但还没有找到一个好的教程,涵盖所有这些。 因此,我需要将项目分解为多个tabs/ino文件,以使其更加清晰 因此,在您打开一个新选项卡后,我想问几个问题: 如果主项目文件,比如说main,有另外两个选项卡,比如说A和B,那么B中的每个函数对main和A都是可见的 中断会发生什么?如果我在文件A中定义了一些中断,它能调用main文件中的中断功能吗 使用定义会发生什么?而包括?如果文件A包含一些库,比如说Wire,那么main文件是否也会看到它,反之亦然 使用文件的策略是什么?您是将所

我看了这么多,但还没有找到一个好的教程,涵盖所有这些。 因此,我需要将项目分解为多个tabs/ino文件,以使其更加清晰

因此,在您打开一个新选项卡后,我想问几个问题:

  • 如果主项目文件,比如说
    main
    ,有另外两个选项卡,比如说
    A
    B
    ,那么B中的每个函数对
    main
    A
    都是可见的

  • 中断会发生什么?如果我在文件
    A
    中定义了一些中断,它能调用
    main
    文件中的中断功能吗

  • 使用
    定义
    会发生什么?而
    包括
    ?如果文件
    A
    包含一些库,比如说
    Wire
    ,那么
    main
    文件是否也会看到它,反之亦然


  • 使用文件的策略是什么?您是将所有库添加到主文件中,还是也应将它们添加到其他文件中?(例如,处理gyro的文件必须包含一些库)

    您可能已经注意到每个.ino文件必须包含在一个同名文件夹中。然后,此文件夹中包含的每个其他.ino文件都被视为“额外选项卡”

    据我所知,编译时,.ino文件被合并,就像它们是一个文件一样。例如,这是由于在同一文件夹中的不同.ino文件中有
    设置
    (或
    循环
    ,或其他任何内容)而导致惊人的“重新定义void setup()”错误的原因

    从“”:

    多文件草图 草图可以包含多个文件(选项卡)。要管理它们,请单击环境顶部滚动条正上方的向右箭头。选项卡有四个扩展名之一:无扩展名、.c、.cpp或.h(如果提供任何其他扩展名,句点将转换为下划线)

    编译草图时,所有不带扩展名的选项卡连接在一起,形成“主草图文件”。扩展名为.c或.cpp的选项卡是单独编译的。要使用扩展名为.h的制表符,您需要#包含它(不使用“双引号”)


    虽然它提到了“没有扩展名的文件”,但我相信它也适用于扩展名为
    .ino
    的文件。

    我总是很难将Arduino IDE用于多个源文件。我倾向于使用这样的东西,它可以让您更好地控制Arduino项目的构建过程

  • 您需要创建一个声明这些函数的头文件,然后将该头文件包含在
    .ino
    文件中
  • 假设您正在使用AVR库,您可以让中断处理程序调用函数(如中断处理程序所示)。然后只需在ISR外部调用
    interrupt\u handler()
    函数
  • 您应该包括每个文件所需的依赖项。这样,如果
    A
    B
    删除
    #include
    ,则主文件仍将包含依赖项。由于标头包含保护,文件将不会包含两次 中断处理程序

    #include <avr/interrupt.h>
    #include "A.h"
    
    /* Declare our ISR */
    ISR(interrupt_vector)
    {
        /* Call our handler (located in A) */
        interrupt_handler();
    }
    
    #包括
    #包括“A.h”
    /*申报我们的ISR*/
    ISR(中断向量)
    {
    /*呼叫我们的处理程序(位于A)*/
    中断处理程序();
    }
    
    定义工作的方式是,他们只是在预处理器中定义一些令牌。他们与额外的文件没有任何关系。#include work的方式是他们将文件直接导入到您的代码中,就好像您在那里编写了它而不是编写了#include。非常感谢!我不确定我抓到你了。假设我需要一个名为a的文件,用于某些特定的陀螺仪操作。我是否需要为它创建一个.ino文件和一个.h文件及其函数,然后将其包含到主文件中?关于ISR,我是否可以在一台计算机上收听中断呼叫?另外,关于包含线-底线是,我需要把这包括在A和B等?很抱歉有很多问题,我只是无法在你的答案中排序。再次感谢。如果陀螺仪源文件不包含main()方法,我将把它放在.c文件而不是.ino文件中。然后在.h文件中声明函数,并在.c文件中编写实现。然后在主源文件中包含.h文件。我不明白你所说的“听电话中断”是什么意思。在每个需要Wire.h的源文件中包含Wire.h。所以,如果A和B使用导线,请将其包含在A和B中。如果A和main需要导线,请将其包含在A和main中,etcok非常感谢。现在我对何时使用c文件和何时使用.ino文件有点困惑,但是谢谢。