Hacer cableada brazo robótico borde a "Wireless" con DIY Arduino + XBee (14 / 15 paso)

Paso 14: Arduino Sketch y procesamiento de código


Los siguientes son el Arduino Sketch y procesando código de fuente (Arduino Sketch y procesamiento en el mismo archivo zip siguiente):

Si está usando este boceto, configure la velocidad en baudios de tu XBee según su configuración XBee.

void setup() {}
...
cambiar la velocidad en baudios según tu XBee, puse mi XBee a 115200.
Serial.Begin(115200);
...

}

=== Sketch de Arduino

Idioma: Arduino
RobotArmControl.pde
//
por Sam Thongrong 26 de febrero de 2012
Rev.02
array de comandos de control:
{GripOut, GripIn, WristUp, WristDown, ElbowUp, ElbowDown,
ShoulderUp, shoulderDown, BaseCW, BaseCCW, LightOn, LightOff, parada};
int controla [13] = {0x47, 0x67, 0x57, 0x77, 0x45, 0x65,
0x53, 0x73, 0x42, 0x62, 0x4c, 0x6c, 0x58};

Base
int baseEnablePin = 3;
int basePin1 = 16;
int basePin2 = 17;

Hombro
int shoulderEnablePin = 14;
int shoulderPin1 = 2;
int shoulderPin2 = 4;

Codo
int elbowEnablePin = 6;
int elbowPin1 = 7;
int elbowPin2 = 15;

Muñeca
int wristEnablePin = 11;
int wristPin1 = 8;
int wristPin2 = 12;

Grip
int gripEnablePin = 10;
int gripPin1 = 9;
int gripPin2 = 5;

int ledPin = 13;

establecer una variable para almacenar los bytes enviados desde el puerto serie
int incomingByte;

void setup() {}
sistema luz LED
pinMode (ledPin, salida);
digitalWrite (ledPin, LOW);

establecer el SN754410 pines como salidas:
pinMode (basePin1, salida);
pinMode (basePin2, salida);
pinMode (baseEnablePin, salida);

pinMode (shoulderPin1, salida);
pinMode (shoulderPin2, salida);
pinMode (shoulderEnablePin, salida);

pinMode (elbowPin1, salida);
pinMode (elbowPin2, salida);
pinMode (elbowEnablePin, salida);

pinMode (wristPin1, salida);
pinMode (wristPin2, salida);
pinMode (wristEnablePin, salida);

pinMode (gripPin1, salida);
pinMode (gripPin2, salida);
pinMode (gripEnablePin, salida);

empezar a enviar datos a 115200 baudios
Puse mi Xbee baudios a 115200 bps,
cambiar la velocidad en baudios según tu XBee
Serial.Begin(115200);
}

void loop() {}
Compruebe que hay algo en el buffer serial
Si (Serial.available() > 0) {}
leer el byte y almacenarlo en la variable
el byte enviado es realmente un valor ascii
incomingByte = Serial.read();
Tenga en cuenta la carcasa superior de cada letra!
cada letra convierte en una manera diferente motor.

=== El agarre
Agarre en
Si (incomingByte == {} controls[0])
gripIn();
}
Agarre hacia fuera
Si (incomingByte == {} controls[1])
gripOut();
}

Muñeca
Si (incomingByte == {} controls[2])
digitalWrite (wristPin1, bajo);
digitalWrite (wristPin2, HIGH);
wristUp();
}
Si (incomingByte == {} controls[3])
wristDown();
}

=== El codo
Del codo hacia arriba
Si (incomingByte == {} controls[4])
elbowUp();
}
Del codo hacia abajo
Si (incomingByte == {} controls[5])
elbowDown();
}

=== El hombro
Del hombro para arriba
Si (incomingByte == {} controls[6])
shoulderUp();
}
Hombro hacia abajo
Si (incomingByte == {} controls[7])
shoulderDown();
}

=== La base
Base derecha
Si (incomingByte == {} controls[8])
baseRight();
}
Base izquierda
Si (incomingByte == {} controls[9])
baseLeft();
}

Luz en
Si (incomingByte == {} controls[10])
digitalWrite (ledPin, HIGH);
}
Luz está apagada
Si (incomingByte == {} controls[11])
digitalWrite (ledPin, LOW);
}

Si un O se envía a hacer que los motores estén apagados
Si (incomingByte == {} controls[12])
allStop();
}

Delay(100);
}
}

void gripIn() {}
digitalWrite (gripEnablePin, HIGH);
digitalWrite (gripPin1, bajo);
digitalWrite (gripPin2, HIGH);
}

void gripOut() {}
digitalWrite (gripEnablePin, HIGH);
digitalWrite (gripPin2, bajo);
digitalWrite (gripPin1, HIGH);
}

void wristUp() {}
digitalWrite (wristEnablePin, HIGH);
digitalWrite (wristPin1, bajo);
digitalWrite (wristPin2, HIGH);
}

void wristDown() {}
digitalWrite (wristEnablePin, HIGH);
digitalWrite (wristPin2, bajo);
digitalWrite (wristPin1, HIGH);
}

void elbowUp() {}
digitalWrite (elbowEnablePin, HIGH);
digitalWrite (elbowPin1, bajo);
digitalWrite (elbowPin2, HIGH);
}

void elbowDown() {}
digitalWrite (elbowEnablePin, HIGH);
digitalWrite (elbowPin2, bajo);
digitalWrite (elbowPin1, HIGH);
}

void shoulderUp() {}
digitalWrite (shoulderEnablePin, HIGH);
digitalWrite (shoulderPin1, bajo);
digitalWrite (shoulderPin2, HIGH);
}

void shoulderDown() {}
digitalWrite (shoulderEnablePin, HIGH);
digitalWrite (shoulderPin2, bajo);
digitalWrite (shoulderPin1, HIGH);
}

void baseRight() {}
digitalWrite (baseEnablePin, HIGH);
digitalWrite (basePin1, bajo);
digitalWrite (basePin2, HIGH);
}

void baseLeft() {}
digitalWrite (baseEnablePin, HIGH);
digitalWrite (basePin2, bajo);
digitalWrite (basePin1, HIGH);
}

void allStop() {}
digitalWrite (baseEnablePin, bajo);
digitalWrite (basePin1, bajo);
digitalWrite (basePin2, bajo);

digitalWrite (shoulderEnablePin, bajo);
digitalWrite (shoulderPin1, bajo);
digitalWrite (shoulderPin2, bajo);

digitalWrite (elbowEnablePin, bajo);
digitalWrite (elbowPin1, bajo);
digitalWrite (elbowPin2, bajo);

digitalWrite (wristEnablePin, bajo);
digitalWrite (wristPin1, bajo);
digitalWrite (wristPin2, bajo);

digitalWrite (gripEnablePin, bajo);
digitalWrite (gripPin1, bajo);
digitalWrite (gripPin2, bajo);
}

=== Extremo Arduino

Siguiente es el código de procesamiento. You'ill necesita el archivo de imagen de fondo, y archivos de imágenes de todos los botones para ver los botones de control en la pantalla.

Y todos los botones y fondo anuncio que hay en la carpeta llamada data. Usted necesitará tener esta carpeta situada en la misma carpeta del código de procesamiento (RobotArmControl.pde)

Lenguaje: procesamiento
RobotArmControl.pde

por Sam Thongrong 26 de febrero de 2012

cargar la biblioteca de serie para el procesamiento de
Import processing.serial.*;
instancia de la clase serial
Puerto serial;

array de comandos de control:
GripOut, GripIn, WristUp, WristDown, ElbowUp, ElbowDown,
ShoulderUp, shoulderDown, BaseCW, BaseCCW, LightOn, LightOff, parada

controles de int [] = new int [] {
0x47, 0x67, 0x57, 0x77, 0x45, 0x65,
0x53, 0x73, 0x42, 0x62, 0x4c, 0x6c, 0x58};

Botón de imagen.
Cargando imágenes y utilizarlas para crear un botón.
ImageButtons GripIn;
ImageButtons GripOut;
ImageButtons WristUp;
ImageButtons WristDown;
ImageButtons ElbowUp;
ImageButtons ElbowDown;
ImageButtons ShoulderUp;
ImageButtons ShoulderDown;
ImageButtons BaseCW;
ImageButtons BaseCCW;
ImageButtons LightOn;
ImageButtons LightOff;

ImageButtons pausa;

Fondo
PImage bg;

definir el tipo de
PFont myFont;

void controlGUI()
{
BG = loadImage("background.jpg");
Background(BG);

int buttonSize = 44;

PImage seleccionado = loadImage("controlSel.png");

Agarre en
PImage gripInImage = loadImage("controlIn.png");
PImage gripInOver = loadImage("controlInOver.png");
GripIn = ImageButtons nuevo (30, 83, buttonSize, buttonSize,
gripInImage, gripInOver, seleccionado);

Agarre hacia fuera
PImage gripOutImage = loadImage("controlOut.png");
PImage gripOutOver = loadImage("controlOutOver.png");
GripOut = nueva ImageButtons (78, 83, buttonSize, buttonSize,
gripOutImage, gripOutOver, seleccionado);

Muñeca hasta
PImage wristUpImage = loadImage("controlUp.png");
PImage wristUpOver = loadImage("controlUpOver.png");
WristUp = nueva ImageButtons (150, 36, buttonSize, buttonSize,
wristUpImage, wristUpOver, seleccionado);

Muñeca hacia abajo
PImage wristDownImage = loadImage("controlDown.png");
PImage wristDownOver = loadImage("controlDownOver.png");
WristDown = nueva ImageButtons (198, 36, buttonSize, buttonSize,
wristDownImage, wristDownOver, seleccionado);

Del codo hacia arriba
PImage elbowUpImage = loadImage("controlUp.png");
PImage elbowUpOver = loadImage("controlUpOver.png");
ElbowUp = nueva ImageButtons (258, 83, buttonSize, buttonSize,
elbowUpImage, elbowUpOver, seleccionado);

Del codo hacia abajo
PImage elbowDownImage = loadImage("controlDown.png");
PImage elbowDownOver = loadImage("controlDownOver.png");
ElbowDown = nueva ImageButtons (306, 83, buttonSize, buttonSize,
elbowDownImage, elbowDownOver, seleccionado);

Del hombro para arriba
PImage shoulderUpImage = loadImage("controlUp.png");
PImage shoulderUpOver = loadImage("controlUpOver.png");
ShoulderUp = nueva ImageButtons (208, 160, buttonSize, buttonSize,
shoulderUpImage, shoulderUpOver, seleccionado);

Hombro hacia abajo
PImage shoulderDownImage = loadImage("controlDown.png");
PImage shoulderDownOver = loadImage("controlDownOver.png");
ShoulderDown = nueva ImageButtons (256, 160, buttonSize, buttonSize,
shoulderDownImage, shoulderDownOver, seleccionado);

Base de CW
PImage baseCWImage = loadImage("controlCW.png");
PImage baseCWOver = loadImage("controlCWOver.png");
BaseCW = nueva ImageButtons (130, 234, buttonSize, buttonSize,
baseCWImage, baseCWOver, seleccionado);

Base de CCW
PImage baseCCWImage = loadImage("controlCCW.png");
PImage baseCCWOver = loadImage("controlCCWOver.png");
BaseCCW = nueva ImageButtons (178, 234, buttonSize, buttonSize,
baseCCWImage, baseCCWOver, seleccionado);
Luz en
PImage lightOnImage = loadImage("LightOn.png");
PImage lightOnOver = loadImage("LightOnOver.png");
LightOn = ImageButtons nuevo (30, 184, buttonSize, buttonSize,
lightOnImage, lightOnOver, seleccionado);

Luz está apagada
PImage lightOffImage = loadImage("LightOff.png");
PImage lightOffOver = loadImage("LightOffOver.png");
LightOff = ImageButtons nueva (78, 184, buttonSize, buttonSize,
lightOffImage, lightOffOver, seleccionado);

}

void setup() {}
Lista de todos los puertos serie disponibles en el panel salida.
Usted tendrá que elegir el puerto que es de la placa Arduino
conectarse de la lista. Es el primer puerto en la lista
puerto #0 y el tercero en la lista es el puerto #2.
println(serial.List());
Abrir el puerto conectado a la placa Arduino
(en este caso #0)
Asegúrese de abrir el puerto a la misma velocidad que es Arduino
usando (112500bps)
puerto = serie nueva (este, Serial.list() [1], 112500);

En la ventana de PC, utilice "Saliente" del dispositivo bluetooth
Este otro para XBee
puerto = serie nueva (este, "COM30", 115200);

tamaño de la pantalla del programa
tamaño (145, 455);
tamaño (400, 300);
Smooth();

prueba de elipse
ellipseMode(RADIUS);
textFont (createFont ("Verdana", 14));

controlGUI();

}

void updateDisplay() {}

GripIn.update();
GripIn.display();
GripOut.update();
GripOut.display();

WristUp.update();
WristUp.display();
WristDown.update();
WristDown.display();

ElbowUp.update();
ElbowUp.display();
ElbowDown.update();
ElbowDown.display();

ShoulderUp.update();
ShoulderUp.display();
ShoulderDown.update();
ShoulderDown.display();

BaseCW.update();
BaseCW.display();
BaseCCW.update();
BaseCCW.display();

LightOn.update();
LightOn.display();
LightOff.update();
LightOff.display();
}

Enviar comandos
void sendCommands() {}

Grip
{if(GripIn.pressed)}
Port.Write(Controls[0]);
println ("agarre en:" + (char)controls[0]);
}
{if(GripOut.pressed)}
Port.Write(Controls[1]);
println ("apretón hacia fuera:" + (char)controls[1]);
}
Si (ratonX > 30 & & mouseX < 129 & &
mouseY > 51 & & mouseY < 79) {}
Port.Write(Controls[12]);
println ("Agarre parada!" + (char)controls[12]);
}

Muñeca
{if(WristUp.pressed)}
Port.Write(Controls[2]);
println ("encima de la muñeca:" + (char)controls[2]);
}
{if(WristDown.pressed)}
Port.Write(Controls[3]);
println ("muñeca abajo:" + (char)controls[3]);
}
Si (ratonX > 148 & & mouseX < 248 & &
mouseY > 5 & & mouseY < 33) {}
Port.Write(Controls[12]);
println ("Muñeca parada!" + (char)controls[12]);
}

Codo
{if(ElbowUp.pressed)}
Port.Write(Controls[4]);
println ("codo de arriba:" + (char)controls[4]);
}
{if(ElbowDown.pressed)}
Port.Write(Controls[5]);
println ("codo abajo:" + (char)controls[5]);
}
Si (ratonX > 258 & & mouseX < 358 & &
mouseY > 51 & & mouseY < 79) {}
Port.Write(Controls[12]);
println ("Codo Stop!" + (char)controls[12]);
}

Hombro
{if(ShoulderUp.pressed)}
Port.Write(Controls[6]);
println ("encima de hombro:" + (char)controls[6]);
}
{if(ShoulderDown.pressed)}
Port.Write(Controls[7]);
println ("hombros hacia abajo:" + (char)controls[7]);
}
Si (ratonX > 208 & & mouseX < 308 & &
mouseY > 130 & & mouseY < 158) {}
Port.Write(Controls[12]);
println ("Hombro Stop!" + (char)controls[12]);
}

Base
{if(BaseCW.pressed)}
Port.Write(Controls[8]);
println ("Base girar CW:" + (char)controls[8]);
}
{if(BaseCCW.pressed)}
Port.Write(Controls[9]);
println ("Base girar CCW:" + (char)controls[9]);
}
Si (ratonX > 130 & & mouseX < 230 & &
mouseY > 202 & & mouseY < 230) {}
Port.Write(Controls[12]);
println ("Base Stop!" + (char)controls[12]);
}

Luz
{if(LightOn.pressed)}
Port.Write(Controls[10]);
println ("luz de:" + (char)controls[10]);
}
{if(LightOff.pressed)}
Port.Write(Controls[11]);
println ("luz apagada:" + (char)controls[11]);
}
}

void draw()
{
updateDisplay();

sendCommands();
}

Botón y ImageButtons clases
clase botón
{
int x, y;
int w, h;
color basecolor, highlightcolor;
color currentcolor;
booleano más = false;
Boolean presiona = false;

void pressed() {}
Si (sobre & & mousePressed) {}
presiona = true;
} else {}
presiona = false;
}
}

Boolean overRect (int x, int y, int ancho, int altura) {}
Si (ratonX > = x & & mouseX < = x + ancho & &
mouseY > = y & & mouseY < = y + altura) {}
verdaderas;
} else {}
devuelven el valor false;
}
}
}

clase ImageButtons amplía botón
{
PImage base;
PImage rodillo;
PImage
PImage currentimage;

ImageButtons (int ix, iy int, int iw, int ih,
PImage ibase, PImage iroll, PImage idown)
{
x = ix;
y = iy;
w = iw;
h = ih;
base = ibase;
rodillo = iroll;
abajo = idown;
currentimage = base;
}

void update()
{
Over();
pressed();
{if(pressed)}
currentimage = abajo;
} else if (sobre) {}
currentimage = rodillo;
} else {}
currentimage = base;
}
}

over() vacío
{
Si (overRect (x, y, w, h)) {}
más = true;
} else {}
más = false;
}
}

void display()
{
imagen (currentimage, x, y);
}
}

Procesamiento final

Para controlar el motor del brazo del Robot, mueve el cursor hacia el botón de requerido y haga clic.
Para detener el movimiento solo funcionamiento el cursor a cualquier etiqueta. Robot se parará.
Para poder utilizar varios motores a la vez, mover el cursor a los botones necesarios y haga clic en los botones.
Pero no arrastre el cursor pase sobre las etiquetas, que hará la operación detener

Disfrutar!.

Artículos Relacionados

Hacer un brazo robótico

Hacer un brazo robótico

¡ Hola chicos! Soy un chico de 13 años de edad. En este instructable, voy a mostrarte cómo hacer un brazo robótico muy barato utilizando materiales y herramientas básicas.Paso 1: Herramientas y materiales Para poder hacerlo necesitas lo siguiente:1)
Brazo robótico hecho en casa con piezas estándar utilizando Arduino y un GUI de procesamiento

Brazo robótico hecho en casa con piezas estándar utilizando Arduino y un GUI de procesamiento

Me jubilé hace poco y una de las cosas que me prometí fue que cuando me retiro que iba a completar todos los proyectos que tenía corriendo dentro de mi cabeza desde que era adolescente. Es cerca de 50 años o tan de los proyectos. En aquellos días no
DIY Robot brazo robótico sorteo marco casero con Motor paso a paso 2

DIY Robot brazo robótico sorteo marco casero con Motor paso a paso 2

Brazo Robot DIY robótica dibujar marco casero con Motor paso a paso 2Materiales:2 piezas 57 mm motor de pasos de 1,8 grados4 PC FL08 2 perno 8mm diámetro autoalineador cojinete de bolas de bridas2 piezas de aluminio aleación 22 x 12 mm 150 mm1 pieza
Escultura de Robot (parte 5 de 9): hacer un brazo robótico con motosierra y hacha sierra sable

Escultura de Robot (parte 5 de 9): hacer un brazo robótico con motosierra y hacha sierra sable

Yo he sido la construcción de escultura durante más de diez años y he observado la evolución de la tecnología de mecanizado ir de fresado CNC a impresión de objeto 3D de escritorio. Estas 'Máquinas de hacer' han formado un espacio físico entre mis ma
Mueva la mano para controlar brazo robótico OWI... sin compromiso

Mueva la mano para controlar brazo robótico OWI... sin compromiso

LA IDEA:Hay por lo menos 4 otros proyectos en Instructables.com (a partir del 13 de mayo de 2015) alrededor de modificar o controlar el brazo robótico OWI. No es de extrañar, ya que es tan un gran barato robótico kit y para jugar con. Este proyecto e
BRAZO robótico de sexy eje 6

BRAZO robótico de sexy eje 6

Bien finalmente lo hice. Por último apretó el gatillo y comenzó a construir un brazo robótico de 5/6 ejes. Se trata de un proyecto así que por favor revise de vez en cuando para mirar el progreso y ofrecer alguna idea que tengas quien sabe yo solo po
Brazo robótico Trifecta (Olimpíada de Ciencias)

Brazo robótico Trifecta (Olimpíada de Ciencias)

)Bienvenida 2016 equipos de Olimpiada de ciencia! El brazo Robot está de vuelta y ¿estás listo para hacer algunos robots kick-culo? Por favor deja un comentario debajo de algo nos de mensajería para que la comunidad pueda crecer en su conjunto. Nos e
Brazo robótico móvil utilizando PHIRO + Arduino

Brazo robótico móvil utilizando PHIRO + Arduino

Estamos de vuelta con otro tutorial para mostrar cómo convertir PHIRO Pro en un brazo robótico móvil fresco que puede elegir y poner cosas! Similar a nuestra anterior PHIRO Arduino Color sensor instructable, vamos a utilizar Código de bolsillo en un
Brazo robótico controlado por el mando NES

Brazo robótico controlado por el mando NES

En este instructable voy a tratar de describir cómo hacer un brazo robótico con partes de una impresora y controlarlo con un mando NES.Puede parecer un trabajo duro pero he preparado plantillas para todas las partes y tratar de tomar fotos de todos l
Brazo robótico controlado por gesto

Brazo robótico controlado por gesto

Bienvenido al instructable para un brazo robótico controlado por gesto.Este instructivo consta de dos partes. Un instructable ya se ha escrito para el brazo robótico llamado EEzyBotArm. Se puede acceder al instructivo aquí-El valor agregado que en Cu
Brazo robótico DIY

Brazo robótico DIY

Usted puede controlar el brazo robótico remotamente usando muchos métodos inalámbricos y alambre para hacer muchas tareas como sostener cosas y puede utilizarse en muchas aplicaciones médicas como la cirugía y manteniendo micro herramientas que no se
Brazo robótico para personas con discapacidad

Brazo robótico para personas con discapacidad

brazo robótico en las estadísticasUn brazo mecánico es robótica, generalmente programable, con funciones similares a un brazo humano. Los enlaces de un manipulador de tal están conectados por uniones permitiendo el movimiento de rotación (tal como en
Construcción de un brazo robótico

Construcción de un brazo robótico

¿Te has preguntado ¿qué futuro se parece? Todo el mundo estará lleno de tecnología y robots será por todas partes. Podemos incluso imagen mucha gente disfrutar de carreras en ingeniería y robótica! Robots son extremadamente precisos al trabajar. Pron
Brazo robótico inteligente con control remoto

Brazo robótico inteligente con control remoto

El objetivo de este proyecto era construir un brazo robótico simple que puede ser controlado remotamente. Este brazo robótico se unirá a mi robot móvil. Además, este diseño ha sido equipado con una pantalla OLED que ofrece información sobre el contro