C++ 配置自定义Arduino库

C++ 配置自定义Arduino库,c++,arduino,static-libraries,C++,Arduino,Static Libraries,我正在尝试设置自己的Arduino库,以便与TLC5971 LED驱动程序交互。我有很好的驱动程序代码,但我正在努力创建一个库 TLC5971.h #ifndef TLC5971_h #define TLC5971_h #include "Arduino.h" #include "SPI.h" class TLC5971 { public: TLC5971(); void initializeTLC(); void setLED(int Light, uint16_t

我正在尝试设置自己的Arduino库,以便与TLC5971 LED驱动程序交互。我有很好的驱动程序代码,但我正在努力创建一个库

TLC5971.h

#ifndef TLC5971_h
#define TLC5971_h
#include "Arduino.h"
#include "SPI.h"

class TLC5971
{
public:
    TLC5971();
    void initializeTLC();
    void setLED(int Light, uint16_t Value);
    void writeLED();
private:
    uint16_t LEDArray[36];
    byte Commands[84];
};

#endif /* TLC5971_h */
TLC5971.cpp

#include <stdio.h>
#include "Arduino.h"
#include "SPI.h"

TLC5971::TLC5971()
{}

void TLC5971::initializeTLC()
{
    SPI.begin();
    SPI.setBitOrder(MSBFIRST);
    SPI.setClockDivider(SPI_CLOCK_DIV16);
    Commands[0] = 0x96;
    Commands[28] = 0x96;
    Commands[56] = 0x96;
    Commands[1] = 0xDF;
    Commands[29] = 0xDF;
    Commands[57] = 0xDF;
    Commands[2] = 0xFF;
    Commands[30] = 0xFF;
    Commands[58] = 0xFF;
    Commands[3] = 0xFF;
    Commands[31] = 0xFF;
    Commands[59] = 0xFF;
}

void TLC5971::setLED(int Light, uint16_t Value)
{
    LEDArray[Light] = Value;
}

void TLC5971::writeLED()
{
    for (int i=35;i>23;i--) {
        if (LEDArray[i]>0) {
            Commands[74-(2*i)] = (LEDArray[i] & 0xFF00U) >> 8U;
            Commands[75-(2*i)] = LEDArray[i] & 0xFF00U;
        }
        else {
            Commands[74-(2*i)] = 0x00;
            Commands[75-(2*i)] = 0x00;
        }
    }
    for (int i=23;i>11;i--) {
        if (LEDArray[i]>0) {
            Commands[78-(2*i)] = (LEDArray[i] & 0xFF00U) >> 8U;
            Commands[79-(2*i)] = LEDArray[i] & 0xFF00U;
        }
        else {
            Commands[78-(2*i)] = 0x00;
            Commands[79-(2*i)] = 0x00;
        }
    }
    for (int i=11;i>-1;i--) {
        if (LEDArray[i]>0) {
            Commands[82-(2*i)] = (LEDArray[i] & 0xFF00U) >> 8U;
            Commands[83-(2*i)] = LEDArray[i] & 0xFF00U;
        }
        else {
            Commands[82-(2*i)] = 0x00;
            Commands[83-(2*i)] = 0x00;
        }
    }
    for (int i=0;i<84;i++) {
        SPI.transfer(Commands[i]);
    }
}
显然,我在我的库的实际结构中犯了一个巨大的错误,有人能给我指出正确的方向吗?

你需要一个

#包括“TLC5971.h”


在您的TLC5971.cpp文件中,编译器可以找到
TLC5971
类及其成员的声明

感谢您指出这一点,如果您不提及它,那么错过它似乎是件愚蠢的事情!
#include <TLC5971.h>
#include "SPI.h"

TLC5971 tlc;

void setup() {
  // put your setup code here, to run once:
  tlc.initializeTLC();
}

void loop() {
  // put your main code here, to run repeatedly:
}
Arduino: 1.6.5 (Mac OS X), Board: "Arduino Uno"

/Users/andrewlumley/Documents/Arduino/libraries/TLC5971_Library/TLC5971.cpp:13:1: error: 'TLC5971' does not name a type
 TLC5971::TLC5971()
 ^
/Users/andrewlumley/Documents/Arduino/libraries/TLC5971_Library/TLC5971.cpp:16:6: error: 'TLC5971' has not been declared
 void TLC5971::initializeTLC()
      ^
/Users/andrewlumley/Documents/Arduino/libraries/TLC5971_Library/TLC5971.cpp: In function 'void initializeTLC()':
/Users/andrewlumley/Documents/Arduino/libraries/TLC5971_Library/TLC5971.cpp:21:5: error: 'Commands' was not declared in this scope
     Commands[0] = 0x96;
     ^
/Users/andrewlumley/Documents/Arduino/libraries/TLC5971_Library/TLC5971.cpp: At global scope:
/Users/andrewlumley/Documents/Arduino/libraries/TLC5971_Library/TLC5971.cpp:35:6: error: 'TLC5971' has not been declared
 void TLC5971::setLED(int Light, uint16_t Value)
      ^
/Users/andrewlumley/Documents/Arduino/libraries/TLC5971_Library/TLC5971.cpp: In function 'void setLED(int, uint16_t)':
/Users/andrewlumley/Documents/Arduino/libraries/TLC5971_Library/TLC5971.cpp:37:5: error: 'LEDArray' was not declared in this scope
     LEDArray[Light] = Value;
     ^
/Users/andrewlumley/Documents/Arduino/libraries/TLC5971_Library/TLC5971.cpp: At global scope:
/Users/andrewlumley/Documents/Arduino/libraries/TLC5971_Library/TLC5971.cpp:40:6: error: 'TLC5971' has not been declared
 void TLC5971::writeLED()
      ^
/Users/andrewlumley/Documents/Arduino/libraries/TLC5971_Library/TLC5971.cpp: In function 'void writeLED()':
/Users/andrewlumley/Documents/Arduino/libraries/TLC5971_Library/TLC5971.cpp:43:13: error: 'LEDArray' was not declared in this scope
         if (LEDArray[i]>0) {
             ^
/Users/andrewlumley/Documents/Arduino/libraries/TLC5971_Library/TLC5971.cpp:44:13: error: 'Commands' was not declared in this scope
             Commands[74-(2*i)] = (LEDArray[i] & 0xFF00U) >> 8U;
             ^
/Users/andrewlumley/Documents/Arduino/libraries/TLC5971_Library/TLC5971.cpp:48:13: error: 'Commands' was not declared in this scope
             Commands[74-(2*i)] = 0x00;
             ^
/Users/andrewlumley/Documents/Arduino/libraries/TLC5971_Library/TLC5971.cpp:53:13: error: 'LEDArray' was not declared in this scope
         if (LEDArray[i]>0) {
             ^
/Users/andrewlumley/Documents/Arduino/libraries/TLC5971_Library/TLC5971.cpp:54:13: error: 'Commands' was not declared in this scope
             Commands[78-(2*i)] = (LEDArray[i] & 0xFF00U) >> 8U;
             ^
/Users/andrewlumley/Documents/Arduino/libraries/TLC5971_Library/TLC5971.cpp:58:13: error: 'Commands' was not declared in this scope
             Commands[78-(2*i)] = 0x00;
             ^
/Users/andrewlumley/Documents/Arduino/libraries/TLC5971_Library/TLC5971.cpp:63:13: error: 'LEDArray' was not declared in this scope
         if (LEDArray[i]>0) {
             ^
/Users/andrewlumley/Documents/Arduino/libraries/TLC5971_Library/TLC5971.cpp:64:13: error: 'Commands' was not declared in this scope
             Commands[82-(2*i)] = (LEDArray[i] & 0xFF00U) >> 8U;
             ^
/Users/andrewlumley/Documents/Arduino/libraries/TLC5971_Library/TLC5971.cpp:68:13: error: 'Commands' was not declared in this scope
             Commands[82-(2*i)] = 0x00;
             ^
/Users/andrewlumley/Documents/Arduino/libraries/TLC5971_Library/TLC5971.cpp:73:22: error: 'Commands' was not declared in this scope
         SPI.transfer(Commands[i]);
                      ^
Error compiling.