Libreria con dos o mas retornos

Un saludo, quisiera ayuda con la siguiente cuestión, estoy desarrollando un programa que controle unos motores paso a paso con puerto serial. Ya tengo el control de los motores desde un mismo código pero es necesario hacerlo con una librería o una función mínimo. Tengo una clase que me hace lo que necesito pero solo con motor entonces quisiera saber como son las librerías o clases con varias salidas. Dejo una muestra de la función

int leerDatos() { if(Serial.available()) { int ang1 = Serial.parseInt(); int ang2 = Serial.parseInt(); int ang3 = Serial.parseInt();

if(Serial.read()=='f') return ang2; } }

:o :o :o :o No me he enterado de ná. ¿Podrías traducirlo a lenguaje terrícola sin capacidades telepáticas? No sé... tu código, un ejemplo de lo que quieres hacer...

jajaja parece que se nota que es la primera vez que hago una consulta por acá.

#include <AccelStepper.h>
#include <FiltroPot.h>

AccelStepper stepper2(1, 31, 33);
AccelStepper stepper3(1, 37, 35);

FiltroPot pot2(2);
FiltroPot pot3(3);

void setup()
{
stepper2.setMaxSpeed(500);
stepper2.setAcceleration(400);
stepper3.setMaxSpeed(500);
stepper3.setAcceleration(400);
Serial.begin(9600);
}

int leerDatos()
{
if(Serial.available())
{
int ang1 = Serial.parseInt();
int ang2 = Serial.parseInt();
int ang3 = Serial.parseInt();

if(Serial.read()==‘f’)

return ang1;
return ang2; //Esto es lo que quiero, una forma de tener 2 o mas return.
}
}

void loop()
{
if(Serial.available())
{
int ang=leerDatos();
stepper2.moveTo(ang);
}
stepper2.run();
if (stepper2.distanceToGo()==0)
{
Serial.println(pot2.valor());
}
}

Bueno. Creo que ahora te he entendido, espero.
En primer lugar creo que debo recomendarte que leas las normas del foro, ya que te nos va a ser de utilidad tanto a quien quiere responder como a quien quiere preguntar. Por ejemplo, tu post quedaría más elegante y tu código más utilizable si lo hubieras puesto así:

#include <AccelStepper.h>
#include <FiltroPot.h>

AccelStepper stepper2(1, 31, 33);
AccelStepper stepper3(1, 37, 35);

FiltroPot pot2(2);
FiltroPot pot3(3);

void setup()
{ 
  stepper2.setMaxSpeed(500);
  stepper2.setAcceleration(400);
  stepper3.setMaxSpeed(500);
  stepper3.setAcceleration(400);
  Serial.begin(9600);
}

int leerDatos()
{
  if(Serial.available())
  {
    int ang1 = Serial.parseInt();
    int ang2 = Serial.parseInt(); 
    int ang3 = Serial.parseInt();
    
    if(Serial.read()=='f')  
     
    return ang1;
    return ang2; //Esto es lo que quiero, una forma de tener 2 o mas return.
   } 
}

void loop()
{
 if(Serial.available())
 {
   int ang=leerDatos();
   stepper2.moveTo(ang);
 }
stepper2.run();
if (stepper2.distanceToGo()==0)
{
  Serial.println(pot2.valor());
}
   }

Y en cuanto a tu consulta, tienes varios caminos.

  • No devolver parámetros y modificar directamente variables globales desde tu función. En tu caso tal vez sería lo más sencillo. Defines en global angulo1, angulo2 y angulo3 y en tu función asignas angulo1=serial.parseint, angulo2=serial.parseint y angulo3=serial.parseint.
  • Devolver una estructura definida.
  • En lugar de devolver los datos, enviar a la función un puntero o referencia donde ésta escribirá los resultados.