#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, которые помогут вам включить:
Вот полный рабочий пример. Запустите его онлайн здесь: 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()
ее для маршрутизации на последовательный выход.
Ссылки:
- Источник
ARRAY_LEN()
макроса (мой репозиторий) - Пример использования
ARRAY_LEN()
макроса: [мой собственный ответ]: Arduino Stack Exchange: инициализация массива структур