Pages: [1]   Go Down
Author Topic: Return (Extraer más de 2 variables de una función)  (Read 1072 times)
0 Members and 1 Guest are viewing this topic.
Barcelona
Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
 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;
}
« Last Edit: October 21, 2012, 10:11:12 am by Moral » Logged

Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 727
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:

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.


Logged

Barcelona
Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Muchas gracias, bien pensado, ahora si que me funciona
Logged

Chile
Offline Offline
Edison Member
*
Karma: 35
Posts: 1251
Arduino rocks?
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

My website: http://ried.cl

Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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;
}
Logged

Pages: [1]   Go Up
Jump to: