C对库对象的引用

时间:2016-12-09 08:53:44

标签: c++ c ansi-c

我正在使用我的arduino来提高我的知识水平。我做了几次尝试,但我不能让它工作:-( 我希望有一个人可以帮助我。

我的库中有不同的对象。

Adafruit_NeoPixel hours = Adafruit_NeoPixel(NUMPIXELS, .....);
Adafruit_NeoPixel minutes = Adafruit_NeoPixel(NUMPIXELS, ....-);
Adafruit_NeoPixel seconds = Adafruit_NeoPixel(NUMPIXELS, .....);

现在我想用一个指向声明的库对象的指针多次调用一个函数(小时,分钟和秒=> E.G POINTERTOLIB?)

void showTime(int iShowTime, **POINTERTOLIB** ) 
{
    int ones = iShowTime % 24; 

    //set LEDs according to acutal Time
    for (int i=0; i<8; i++) 
    {
        ((ones >> i) & 1) ? **POINTERTOLIB** .setPixelColor(i, **POINTERTOLIB** .Color(0,150,0)) :          **POINTERTOLIB** .setPixelColor(i, hours.Color(0,0,0));
        **POINTERTOLIB** .setBrightness(40);
    }
    **POINTERTOLIB** .show(); // This sends the updated pixel color to the hardware.
}

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

由于您希望使用showTime的不同对象(hours, minutes, seconds)多次调用函数class Adafruit_NeoPixel,因此您可以使用以下签名:

void showTime(int iShowTime, Adafruit_NeoPixel *pObj);

因此,现在showTime需要一个指向class Adafruit_NeoPixel的任何有效对象的指针。

showTime内,您可以按如下方式调用class Adafruit_NeoPixel的member_functions:

pObj->setPixelColor() 
pObj->Color(). 

您可以按如下方式致电showTime

showTime(3, &hours); or showTime(3, &minutes);
showTime(3, &hours); or showTime(3, &hours);
showTime(3, &hours); or showTime(3, &seconds);