Ayuda urgente por favor principiantes de arduino!

Hola
Mi grupo y yo somos estudiantes de ultimo año de bachillerato tecnico de informatica, para nosotros es obligatorio entrar a la feria cientifica, nuestra calificación es de 40 por ciento de la clase y los profesores no nos pueden ayudar

Necesitamos ayuda con nuestro proyecto mas que todo en la codificación
Es una mano robotica con Arduino controlada con sensor ecg

Alguien puede decirme que esta mal en el codigo y ayudarnos a resolverlo por favor,llevamos 3 semanas intentando que el proyecto funcione

Ayuda por favor :raising_hands:

#include <Servo.h>
Servo servo1;         // Define servo fingers
Servo servo2;         // Define servo fingers
Servo servo3;         // Define servo fingers
Servo servo4;         // Define servo fingers
Servo servo5;         // Define servo fingers

int finger;

// Motion routines for handopen and handclose
void openhand(){for(finger = 1; finger < 6; finger++){openFinger(finger);}}
void closehand(){for(finger = 1; finger < 6 ; finger++){closeFinger(finger);}}

// You have to rewrite properly the functions to open and close the fingers 
// according of your assembly
// In my case, middle and index fingers are opened when servo is at 170 degrees and the others when servo is at 0 degrees
// I have used Towardpro MG996R servos

void openFinger(int finger){
  if(finger==1){servo1.write(0);} // Little finger
  else if(finger==2){servo2.write(170);}// Ring finger
  else if(finger==3){servo3.write(170);}// Middle finger
  else if(finger==4){servo4.write(170);}// Index finger
  else if(finger==5){servo5.write(0);}//Thumb finger
}

void closeFinger(int finger){
  if(finger==1){servo1.write(0);} // Little finger
  else if(finger==2){servo2.write(170);}// Ring finger
  else if(finger==3){servo3.write(170);}// Middle finger
  else if(finger==4){servo4.write(170);}// Index finger
  else if(finger==5){servo5.write(0);}//Thumb finger
}



const int pinECG = A0;
const int pinLOplus = 10;
const int pinLOminus = 11;

int umbral = 550; // Ajusta este valor según tu señal ECG
bool latidoDetectado = false;
void setup() {
  Serial.begin(9600);
  pinMode(pinLOplus, INPUT);
  pinMode(pinLOminus, INPUT);
  servo1.attach(2);
  servo2.attach(3);
  servo3.attach(4);
  servo4.attach(5);
  servo5.attach(6);
}


void loop(){ 


    Serial.println("Electrodos desconectados");
  if (digitalRead(pinLOplus) == 1 || digitalRead(pinLOminus) == 1){
    return;
  }

  //aqui continua con la lectura ECG y mover los servos 
  int ecgValor=analogRead(pinECG);
  Serial.println(ecgValor);

  //Deteccion de latido simple
  if (ecgValor > umbral && latidoDetectado){
    latidoDetectado = true;
    closehand();
  }


 if (ecgValor < umbral && latidoDetectado){
    latidoDetectado = false;
    openhand(); //abre la mano cuando baja 
  }

  delay(10);//Pequeña pausa para estabilidad 
  }

Tenemos que entregar el proyecto este Lunes 30 de Junio agradeceria la ayuda de cualquiera que nos pueda ayudar

Esta variable es falsa al principio y se usa en las dos condiciones, así que nunca entrarás en el primer if que la pone en verdadero…

&& not latidoDetectado

Por otro lado, digitalRead devuelve HIGH o LOW — no queda muy bien poner 1.

Moderador
Okay no hay problema pero lee el punto 5 de las normas y mejora el título retirando el "Ayuda urgente por favor principiantes de Arduino" por algo que resuma su tarea o sea "Brazo robot bla bla bla"

Respondo cuando lo hagan.

Compara tu programa con la versión original:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.