Как использовать вектор (массив) в параметре функции в коде Arduino?

#arrays #function #vector #arduino

#массивы #функция #вектор #arduino

Вопрос:

Как мне использовать вектор (массив) в параметре функции в коде Arduino?

Мой пример (не работает)

 void teste(int vetor[], int variavel)
{
    // code
}
 

Спасибо за помощь.

Комментарии:

1. Что с ним не так?

Ответ №1:

В вашем коде, который вы показываете, нет ничего плохого.

Однако вы не показываете нам свою ошибку (пожалуйста, сделайте это). И вы не показываете нам свой вызов этой teste() функции (пожалуйста, сделайте).

Кроме того, помните, что нет такого понятия, как «язык arduino» — это всего лишь C (см. Мой Ответ здесь) (по крайней мере, C 11 (т. Е. Версия C 2011), но может быть более поздней версией C , в зависимости от вашей платы). И C, по большей части, является подмножеством C на 99,9%. То, что вы пытаетесь здесь сделать, это использовать массив в стиле C или C в качестве параметра функции.

Итак, примеры поиска в Google, которые помогут вам включить:

  1. arduino array
    1. https://www.arduino.cc/reference/en/language/variables/data-types/array/
  2. массив c
  3. передать массив и размер для работы на c
    1. https://www.tutorialspoint.com/cprogramming/c_passing_arrays_to_functions.htm

Вот полный рабочий пример. Запустите его онлайн здесь: https://onlinegdb.com/Skds3AYk_ .

 #include <stdio.h>

// Get the number of elements in any C array
// - source: [my repo] https://github.com/ElectricRCAircraftGuy/eRCaGuy_hello_world/blob/master/c/utilities.h#L20
// - Usage example: [my own answer]:
//   https://arduino.stackexchange.com/questions/80236/initializing-array-of-structs/80289#80289
#define ARRAY_LEN(array) (sizeof(array)/sizeof(array[0]))

/// brief      A test function to print all the elements of an array 
/// param[in]  array       An array of ints 
/// param[in]  size        The number of elements in the array 
/// return     None
void test(int array[], int size)
{
    for (int i = 0; i < size; i  )
    {
        printf("array[i] = %in", array[i]);
    }
}

int main()
{
    printf("Hello Worldn");

    int my_array[] = {1, 2, 3, 4, 5, 6};
    test(my_array, ARRAY_LEN(my_array));

    return 0;
}
 

Пример вывода:

 Hello World
array[i] = 1
array[i] = 2
array[i] = 3
array[i] = 4
array[i] = 5
array[i] = 6
 

Просто помните, что в Arduino вы должны использовать Serial.print() вместо printf() , поскольку это платформа микроконтроллера, и они не переопределили printf() ее для маршрутизации на последовательный выход.

Ссылки:

  1. Источник ARRAY_LEN() макроса (мой репозиторий)
  2. Пример использования ARRAY_LEN() макроса: [мой собственный ответ]: Arduino Stack Exchange: инициализация массива структур