Devolver matriz desde la función en Arduino

Ammar Ali 12 octubre 2023
Devolver matriz desde la función en Arduino

Este tutorial analizará la devolución de una matriz desde una función mediante la modificación de una matriz existente en Arduino.

Arduino devuelve un array desde una función

En Arduino, podemos inicializar una matriz con un tamaño dado; después de inicializar una matriz, podemos agregar o reemplazar valores de la matriz usando una función.

Si queremos inicializar y crear una matriz dentro de una función y luego devolverla cuando se llama a la función, tenemos que usar la asignación de memoria dinámica, que se hace usando las funciones malloc() y free(), y también tenemos que usar los punteros en Arduino.

El problema es que si creamos y devolvemos una matriz de una función utilizando la asignación de memoria dinámica, el resultado podría cambiar debido a la fuga de memoria y los punteros colgantes. Por lo tanto, es mejor inicializar una matriz y cambiar sus valores usando una función en lugar de devolver una matriz completa desde una función.

Por ejemplo, inicialicemos una matriz con un tamaño entero constante y luego creemos una función para cambiar los valores de la matriz. Vea el código a continuación.

const int size = 10;
int MyArray[size];

void CreateArray() {
  for (int i = 0; i < size; i++) {
    MyArray[i] = i;
  }
}

void setup() {
  Serial.begin(9600);
  CreateArray();
  for (int i = 0; i < size; i++) {
    Serial.println(MyArray[i]);
  }
}
void loop() {}

Producción :

0
1
2
3
4
5
6
7
8
9

En el código anterior, inicializamos la matriz usando un entero constante porque tenemos que usar un entero constante para inicializar una matriz, y si no usamos un entero constante, Arduino mostrará un error. No hemos almacenado ningún valor en la matriz, pero también podemos almacenar valores cuando inicializamos una matriz.

Si no almacenamos ningún valor en una matriz, la matriz se inicializará con valores NULL. Creamos la función CreateArray() para almacenar valores en la matriz.

El tipo de devolución CreateArray() es void, lo que significa que no queremos devolver nada porque solo queremos almacenar valores en la matriz. Podemos cambiar el tipo de devolución si queremos devolver algo; por ejemplo, si queremos devolver un valor entero, podemos definir el tipo de retorno int.

Usamos un bucle for para almacenar valores dentro de la matriz, pero también podemos almacenar valores manualmente dentro de la matriz. Llamamos a la función CreateArray() dentro de la función setup() para cambiar los valores de la matriz antes de usarla para imprimirlos.

Usamos el monitor serial de Arduino para imprimir los valores de la matriz y, como podemos ver en la salida, hay diez valores presentes en la matriz.

Autor: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Artículo relacionado - Arduino Function