配置自定义Arduino库
问题描述:
我试图建立自己的Arduino库来与TLC5971 LED驱动程序交互。我有驱动程序代码工作的伟大,但我在努力创建一个库...配置自定义Arduino库
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]);
}
}
我Arduino的素描很简单:
#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.
很明显,我在我的图书馆的实际结构中犯了一个很大的错误,谁能指出我的方向是正确的?
答
你在你的TLC5971.cpp文件需要
#include "TLC5971.h"
,让编译器能够找到TLC5971
类的声明,其成员
感谢您指出了这一点,似乎是一个愚蠢的事情不要错过你提到它! – user3185748