Tengo un serio problema para poder compatibilizar dos tipos de funciones. He mirado tanto por internet como por el foro, este último por desgracia ya que me di cuenta de que le pasó algo parecido a otro usuario y en parte me ayudó, pero sigo sin dar con el problema. Es cierto que llevo poco tiempo con el arduino y el proyecto en si me viene un poco en grande y no estoy dando con la solución.
El proyecto en cuestión es la programación de un brazo robótico Braccio que tiene incorporado una cámara HuskyLens que tendría que realizar la siguiente función:
La cámara tiene que reconocer al usuario, dándole permiso para operar, y con un gesto iniciar la secuencia programada. El brazo seguirá al usuario dentro de un rango de visibilidad para no perder el encuadre. Una ves que se le de la señal, el brazo tendrá que recoger una pieza negra y se la tendrá que pasar a otro brazo que estará realizando una secuencia ya establecida sin parar.
PD: He probado corrigiendo los errores con inteligencia artificial, por si tengo elementos mal escritos o otros fallos, pero me saltan más errores y no estoy entendiendo el porqué. No me gusta copiar los código que no entiendo, así que estoy abierto a un desarrollo progresivo del programa para que pueda entender todo el proceso y poder exponer bien este proyecto.
Lo primero que puse fue esto. No sé si ayudará pero quiero empezar por aquí.
También tengo las librerías correspondientes, por si me falta algo más:
#include <DFRobot_HuskyLens.h>
#include <Servo.h>
#include <SoftwareSerial.h>
// Crear una instancia de DFRobot_HuskyLens
DFRobot_HuskyLens lens;
// Crear instancias para cada servo
Servo base, shoulder, elbow, wrist_rotate, wrist_vertical, gripper;
void setup() {
Serial.begin(9600);
// Inicializar comunicación con HuskyLens
while (!lens.begin(Serial)) {
Serial.println(F("Conectando a HuskyLens..."));
delay(100);
}
Serial.println(F("Conectado a HuskyLens."));
// Adjuntar los servos a los pines correspondientes
base.attach(3);
shoulder.attach(5);
elbow.attach(6);
wrist_rotate.attach(9);
wrist_vertical.attach(10);
gripper.attach(11);
}
void loop() {
// Solicitar datos a HuskyLens
if (lens.request()) {
// Leer el primer bloque (objeto) detectado
if (lens.available()) {
HUSKYLENSResult result = lens.read();
// Obtener las coordenadas del centro del objeto
int x = result.xCenter;
int y = result.yCenter;
// Mapear las coordenadas a los ángulos de los servos
int baseAngle = map(x, 0, 320, 0, 180);
int shoulderAngle = map(y, 0, 240, 15, 165);
// Mover los servos a los ángulos correspondientes
base.write(baseAngle);
shoulder.write(shoulderAngle);
}
} else {
Serial.println(F("Error al comunicarse con HuskyLens."));
}
delay(100);
}
Pido perdón si no es aquí el tema. que estaba entre este y en el de Documentación