Proyecto Brazo Robotico 6 servos con BLUETOOTH y con memoria de movimientos
Material en uso:
- 6 Servo Motores MG995 15K. (5V - 2A Lo que necesita)
- Chasis de brazo robotico (Acero ligero).
- Modulo Bluetooth.
- Aplicación para moverlo desde el celular (hecha por mi).
- Arduino UNO
- Placa Shield V5 (para no usar protoboard).
- Codigo al 90%
- Cargador Conmutado (5V- 2000ma)
NOTA:
Tengo todo pero hay pequeños errores en los servos....al conectar el brazo robotico, se empieza a mover como LOCO! y hace muchos movimientos raros! pero después de que se controlan ya puedo moverlos con la aplicación..... al moverlo con la app jalan MUY BIEN LA MAYORIA, Pero... solamente uno de todos los servos no se mueve en absoluto como que le cuesta trabajo levantarse (SERVO = HOMBRO Lleva todo el peso del mismo brazo), hace el esfuerzo pero al rato se apaga todo el robot por completo, tengo que volver desconectar y conectar para reiniciar!
NOTA 2: Quisiera que al prender el robot no se pusiera loco al conectarlo y formará una postura adecuada al hora de conectarlo
¿Alguien me puede ayudar? (Soy principiante)
Lo hice todo yo solo hasta que me quedara, pero hasta apenas tome la decision de preguntarles a los expertos que son ustedes, ¿si me falta algo? o si le tengo que poner alguna fuente de alimentación conmutada y no un cargador conmutado.
PD: La otra parte del codigo no la puse, por que esa ya esta al 100% solo tengo problemas con el principio.
CODIGO
#include <Servo.h>
char dato;
Servo hombro, codo, muneca, pinzas, base,torque;
int phombro, pcodo, pmuneca, ppinzas, pbase,ptorque, contador=0;
int iniciohombro[] = {0,0,0,0,0}, finhombro[] = {0,0,0,0,0}, iniciotorque[] = {0,0,0,0,0}, fintorque[] = {0,0,0,0,0}, iniciocodo[] = {0,0,0,0,0}, fincodo[] = {0,0,0,0,0}, iniciomuneca[] = {0,0,0,0,0}, finmuneca[]= {0,0,0,0,0}, iniciopinzas[] = {0,0,0,0,0}, finpinzas[] = {0,0,0,0,0}, iniciobase [] = {0,0,0,0,0}, finbase[] = {0,0,0,0,0};
char ubicacion[25];
int incrementohombro = 0, incrementocodo = 0, incrementomuneca = 0, incrementopinzas = 0, incrementobase = 0,incrementotorque = 0, incremento = 0;
int const retraso = 30;
int posicioninicialbase, posicioninicialhombro, posicioninicialcodo, posicioninicialmuneca, posicioninicialpinzas, posicioninicialtorque;
void setup()
{
hombro.attach(13);
codo.attach(12);
muneca.attach(11);
pinzas.attach(10);
base.attach(9);
torque.attach(8);
Serial.begin(9600);
}
void loop()
{
if(contador==0)
{
// Leer posicion inicial
phombro=hombro.read();
pcodo=codo.read();
pmuneca=muneca.read();
ppinzas=pinzas.read();
pbase=base.read();
ptorque=torque.read();
//Escribir posicion inicial
hombro.write(phombro);
codo.write(pcodo);
muneca.write(pmuneca);
pinzas.write(ppinzas);
base.write(pbase);
torque.write(ptorque);
contador++;
}
dato='x';
dato=Serial.read();
switch(dato)
{
case 'B': //HOMBRO DERECHA
{
while(Serial.read()!='x')
{
if(phombro<=180 && phombro>=0)
{
if(phombro!=180)
{
phombro++;
}
hombro.write(phombro);
delay(15);
}
}
break;
}
case 'b': //HOMBRO IZQUIERDA
{
while(Serial.read()!='x')
{
if(phombro<=180 && phombro>=0)
{
if(phombro!=180)
{
phombro--;
}
hombro.write(phombro);
delay(15);
}
}
break;
}
case 'C': //CODO ARRIBA
{
while(Serial.read()!='x')
{
if(pcodo<=180 && pcodo>=0)
{
if(pcodo!=180)
{
pcodo++;
}
codo.write(pcodo);
delay(15);
}
}
break;
}
case 'c': //CODO ABAJO
{
while(Serial.read()!='x')
{
if(pcodo<=180 && pcodo>=0)
{
if(pcodo!=0)
{
pcodo--;
}
codo.write(pcodo);
delay(15);
}
}
break;
}
case 'D': //MUNECA ARRIBA
{
while(Serial.read()!='x')
{
if(pmuneca<=180 && pmuneca>=0)
{
if(pmuneca!=180)
{
pmuneca++;
}
muneca.write(pmuneca);
delay(15);
}
}
break;
}
case 'd': //MUNECA ABAJO
{
while(Serial.read()!='x')
{
if(pmuneca<=180 && pmuneca>=0)
{
if(pmuneca!=0)
{
pmuneca--;
}
muneca.write(pmuneca);
delay(15);
}
}
break;
}
case 'F': //PINZA ABRIR
{
while(Serial.read()!='x')
{
if(ppinzas<=180 && ppinzas>=0)
{
if(ppinzas!=180)
{
ppinzas++;
}
pinzas.write(ppinzas);
delay(15);
}
}
break;
}
case 'f': //PINZA CERRAR
{
while(Serial.read()!='x')
{
if(ppinzas<=180 && ppinzas>=0)
{
if(ppinzas!=0)
{
ppinzas--;
}
pinzas.write(ppinzas);
delay(15);
}
}
break;
}
case 'A': //BASE IZQUIERDA
{
while(Serial.read()!='x')
{
if(pbase<=180 && pbase>=0)
{
if(pbase!=180)
{
pbase++;
}
base.write(pbase);
delay(15);
}
}
break;
}
case 'a': //BASE DERECHA
{
while(Serial.read()!='x')
{
if(pbase<=180 && pbase>=0)
{
if(pbase!=0)
{
pbase--;
}
base.write(pbase);
delay(15);
}
}
break;
}
case 'E': //TORQUE IZQUIERDA
{
while(Serial.read()!='x')
{
if(ptorque<=180 && ptorque>=0)
{
if(ptorque!=180)
{
ptorque++;
torque.write(ptorque);
delay(15);
}
}
break;
}
case 'e': //TORQUE DERECHA
{
while(Serial.read()!='x')
{
if(ptorque<=180 && ptorque>=0)
{
if(pbase!=0)
{
ptorque--;
torque.write(ptorque);
delay(15);
}
}
break;
}