Go Down

Topic: Return (Extraer más de 2 variables de una función) (Read 1 time) previous topic - next topic

Moral

Oct 21, 2012, 04:45 pm Last Edit: Oct 21, 2012, 05:11 pm by Moral Reason: 1
Muy buenas!

Tengo un código en el cual necesito sacar bastantes variables y pasárselas a otra función, pero no me funciona. ¿Cómo sería posible sacar varias variables de una función para poderlas utilizar en otra? Pongo un código resumido de lo que pretendo hacer, soy nuevo programando en Arduino y sé que otros lenguajes pueden hacer lo que muestra el código.

muchas gracias

Code: [Select]
 void setup(){ 
 Serial.begin(9600);
 }
 
void loop(){
 int a,b;
 a,b=datos();
 Serial.println(a);
 Serial.println(b);
 delay(2000);
}

int datos(){
 int a=2;
 int b=3;
 return a,b;
}

curro92

Hola,
cuando no quiero complicarme mucho, utilizo variables globales, declaradas fuera de las funciones. No hace falta que devuelvan nada, simplemente dentro de cualquier función se cambia el valor de las variables.
Code: [Select]

int a,b;

void setup(){
  Serial.begin(9600);
  }
 
void loop(){
  datos();
  Serial.println(a);
  Serial.println(b);
  delay(2000);
}

void datos(){
  a=2;
  b=3;
}


Otra solución más sofisticada sería que utilizaras struct para agrupar en una estructura todas las variables que te interese, y la función devolviera un puntero a la estructura.



Moral

Muchas gracias, bien pensado, ahora si que me funciona

eried


Muchas gracias, bien pensado, ahora si que me funciona


Para arduino no importa mucho la "elegancia" pero si el proyecto es grande, es mejor quizas investigar estructuras (struct) o pasar variables por referencia (como dirección/punteros) para esto que preguntas.
My website: http://ried.cl

Dancos

El código mas conveniente para este tipo de funciones es el siguiente, noten que la función tiene un "*" después de la variable y el vector lo mandas llamar colocando antes de la variable. Saludos

void setup(){
  Serial.begin(9600);
  }
 
void loop(){
  int* c=datos();
  Serial.println(*c);
  delay(2000);
}

int* datos(){
  int a[]={2,1};
  return a;
}

Go Up