C++ 配置自定义Arduino库
我正在尝试设置自己的Arduino库,以便与TLC5971 LED驱动程序交互。我有很好的驱动程序代码,但我正在努力创建一个库 TLC5971.hC++ 配置自定义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
#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.