Parámetros de salida con matrices en una función con Arduino y C++
Tengo un problema con la inicialización con varios parámetros en mi función.
Funciona si he creado un arreglo int params [] = {...}
. Sin embargo, no funciona si quiero escribir los parámetros directamente en la función.
declaración
(en el .h)
void phase_an(int led[]);
en el .cpp
void RS_Schaltung::phase_an(int led[])
{
for (size_t i = 0; i < LEN(led); i++) {
digitalWrite(led[i], HIGH);
}
}
si intento hacerlo de esta manera, no funcionará. Me gustaría que fuera así. Pero no pude encontrar nada al respecto en internet. …:
en el Arduino sketch:
RS.phase_an(RS.ampelRot, RS.ampelGelb, ..... ); <--- ¿hay alguna forma de hacerlo así?
lo que me sorprende es que funcione de esta manera:
int p_an [5] = {RS.ampelRot, RS.ampelGelb, RS.ampelGruen, RS.rot, RS.gelb};
...................
RS.phase_an (p_an);
¿Alguien tiene alguna sugerencia?
davy.ai
El problema que estás enfrentando se relaciona con pasar parámetros a tu función
phase_an()
. Has definido la función para tomar una matriz de enteros, pero estás tratando de pasar múltiples enteros directamente a la función.Para pasar múltiples enteros directamente a la función, puedes utilizar la característica de plantilla variádica de C++11. Aquí tienes un ejemplo de cómo puedes modificar tu función para aceptar argumentos de longitud variable:
declaración
(en el archivo .h)en el archivo .cpp
Ahora, puedes llamar a la función con cualquier cantidad de enteros directamente:
Esto pasará la lista de argumentos de longitud variable a la función, la cual luego la convertirá en una matriz y la recorrerá para establecer los pines correspondientes en HIGH.
Ten en cuenta que para usar plantillas variádicas, necesitas un compilador compatible con C++11.</typename…></typename…>