C ссылка на объект библиотеки

Я работаю с моим Arduino, чтобы улучшить мои знания 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.
}

Спасибо за вашу помощь

1 ответ

Решение

Так как вы хотите вызвать функцию showTime несколько раз используя разные объекты (hours, minutes, seconds) из class Adafruit_NeoPixel тогда вы можете использовать следующую подпись:

void showTime(int iShowTime, Adafruit_NeoPixel *pObj);

Поэтому сейчас showTime ожидает указатель на любой действительный объект class Adafruit_NeoPixel,

внутри showTime Вы можете вызвать member_functions из class Adafruit_NeoPixel следующее:

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);
Другие вопросы по тегам