Как передать несколько переменных в функцию?

Используя библиотеку FastLED, я хочу зажечь несколько источников света одновременно.

В настоящее время я прохожу только один свет к функции.

spell( int LEDNumber )
{
  FastLED.clear();
  leds[LEDNumber] = CRGB (255,255,255); //белый
  FastLED.show();
  time = 500;
  delay(t);
}

Я хотел бы пропускать более одного источника света за раз.

, 👍2

Обсуждение

Это действительно базовый вопрос программирования на C/C++, а не вопрос об Arduino. В любом случае, я рад, что вы смогли это понять., @Duncan C

@DuncanC Там действительно есть что-то вроде нейтральной зоны, поскольку Arduino ограничивает использование C ++, особенно в отношении ограничений памяти. Я не уверен, что был бы так строг с Джошуа или с кем-либо в этом отношении., @tony gil

Тони, да, есть некоторые серые области, но это вопрос 101 программирования для C/C++., @Duncan C


2 ответа


Лучший ответ:

2

Вы можете создать struct с элементами "x", по одному на каждый светодиод:

struct ArrayOfBooleans {
   bool array[4];
};

ArrayOfBooleans myOutputArray;
myOutputArray.array[0] = true;
myOutputArray.array[1] = true;
myOutputArray.array[2] = false;
myOutputArray.array[3] = true;

lightEmUp(myOutputArray);

void lightEmUp(ArrayOfBooleans myOutputArray) {
   bool isFirstLightOn = myOutputArray.array[0];
   // и т. д
}

ПРИМЕЧАНИЕ. Если вы столкнулись с проблемами Exception 9 (используя эту логику на другой плате), проверьте этот ответ к другому сообщению

,

Замечательный ответ. Намного лучше, чем то, что я нашел. Спасибо!, @Joshua Dance

Я только недавно столкнулся с этой проблемой, и это было решение, которое я реализовал. сохраняет чистоту, а также упрощает обновление (добавление или удаление параметров). Спасибо за принятие., @tony gil

Исключение 9 на Uno?, @Juraj

зачем структура? это бесполезно и будет скопировано как параметр функции. вы можете передать массив как параметр, @Juraj

вы могли бы сделать это, но структура может иметь и другие данные, например, несколько массивов для нескольких измерений параметров. например, другие параметры. структура как класс далеко не бесполезна, особенно если ваша разработка ориентирована на методы., @tony gil

Я нахожу ваш спам грубым и оскорбительным в абстрактной форме и отметил вас за это, @Juraj. Читаю не тяжело, нет смысла последовательно писать один и тот же грубый комментарий., @tony gil


1

Легче, чем я думал. Нашел это, читая документы. Представь это. :)

Чтобы передать несколько переменных, просто разделите их запятой.

Документация: https://www.arduino.cc/en/Reference/FunctionDeclaration

Соответствующий код:

int myMultiplyFunction(int x, int y){
  int result;
  result = x * y;
  return result;
}
,