2016-12-09 76 views
-2

我正在和我的arduino一起改善我的C語言知識。我做了幾個attemps,但我不能讓它工作:-( 我希望有人能幫助我。C對庫對象的引用

我有不同的對象從庫。

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

現在我想打電話給一個功能幾次的指針聲明庫對象(小時,分&秒=> EG 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. 
} 

感謝您的幫助

+2

你的問題不清楚,你想指針傳遞給所有的三個對象? – George

+0

您可以使用以下簽名'void showTime(int iShowTime,Adafruit_NeoPixel * pObj)'。在'showTime'裏面,你可以通過'pObj-> setPixelColor()''pObj-> Color()'調用'Adafruit_NeoPixel'的member_functions。你可以按如下方式調用'showTime':showTime(3,&hours);'或'showTime(3,&minutes);' – sameerkn

+0

@sameerkn你可以添加你的評論作爲這個問題的答案嗎?根據OP,它解決了這個問題。 – Steeve

回答

0

既然你想用的class Adafruit_NeoPixel不同對象(hours, minutes, seconds),那麼你可以使用下面的簽名調用函數showTime幾次:

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); 
相關問題