2015-09-20 176 views
2

我試圖建立自己的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. 

很明顯,我在我的圖書館的實際結構中犯了一個很大的錯誤,誰能指出我的方向是正確的?

回答

0

你在你的TLC5971.cpp文件需要

#include "TLC5971.h"

,讓編譯器能夠找到TLC5971類的聲明,其成員

+0

感謝您指出了這一點,似乎是一個愚蠢的事情不要錯過你提到它! – user3185748