Un RepStrap con el proceso de control (21 / 25 paso)

Paso 21: 3D - siga el Bouncing Ball (esto incluye una firmado)


Aquí es el 3D que despide bolas procesamiento y Adruino el código.

Esto ejecutará X, Y, Z los motores paso a paso.

Sigue el código de Arduino, este es el código de paso 13 con el eje Z añadido.

///////////////////////////////PROCESSING /////////////////////////////

*** El proceso con una firmado ***

/**
* Bounce_3D_0
*
Cuando llega a la forma un límite invierte su dirección.
Hay X, Y, límites Z

La dirección es de salida-

Alimenticia -> una firmado -> Arduino -> Drivers -> Steppers
*
* Modificado para 3D


Nota: 0,0,0 - superior izquierda esquina (frente a la pantalla del ordenador)
puntos de eje de Z negativos dentro de la pantalla del ordenador
puntos de eje Y positivo hacia abajo
positivo X puntos de eje a la derecha
*/

Import processing.serial.*;
Import cc.arduino.*;

Arduino arduino;

Serie myPort;  Crear un objeto de clase Serial
Datos recibidos del puerto serial
int ledPin = 13;
int XstepPin = 10;
int XdirPin = 7;
int YstepPin = 2;
int YdirPin = 3;
int ZstepPin = 19;
int ZdirPin = 18;

int tamaño = 40;       Ancho de la forma
flotador xpos, ypos, zpos;    Posición inicial de forma
profundidad de flotador;

flotador xspeed = 2.5;  Velocidad de la forma
flotador yspeed = 2;  Velocidad de la forma
flotador de zspeed = 3;

int xdirection = 1;  Izquierda o derecha
int ydirection = 1;  Arriba a abajo
int zdirection = 1;  atrás o

void setup()
{
tamaño (200, 200, P3D);
noStroke();
frameRate(30);
Smooth();
Establecer la posición inicial de la forma
XPOS = ancho/2;
YPOS = altura/2;
zpos = - altura/2; Nota que Zaxis va dentro de la pantalla
profundidad = - altura;

comunicación configuración con Arduino
Arduino = nuevo Arduino (este, Arduino.list() [0], 57600); v1
arduino.pinMode (ledPin, Arduino.OUTPUT);
arduino.pinMode (XstepPin, Arduino.OUTPUT);
arduino.pinMode (XdirPin, Arduino.OUTPUT);
arduino.pinMode (YstepPin, Arduino.OUTPUT);
arduino.pinMode (YdirPin, Arduino.OUTPUT);
arduino.pinMode (ZstepPin, Arduino.OUTPUT);
arduino.pinMode (ZdirPin, Arduino.OUTPUT);
}

void draw()
{
Background(102);
Lights();

caja de cristal / / Nota: línea (x1, y1, z1, x 2, y2, z2)
Stroke(255);
Atrás
línea (0,0, profundidad, anchura, profundidad 0,);
línea (0, altura, profundidad, anchura, altura, profundidad);
línea (0,0, profundidad, 0, altura, profundidad);
linea (ancho, 0, anchura, altura, profundidad, profundidad);
esquinas
línea (0,0,0, 0,0, profundidad);
línea (altura 0, 0, 0, altura, profundidad);
linea (ancho, 0, 0, anchura, profundidad 0,);
linea (ancho, alto, 0, anchura, altura, profundidad);

Actualizar la posición de la forma
XPOS = xpos + (xspeed * xdirection);
YPOS = ypos + (yspeed * ydirection);
zpos = zpos + (zspeed * zdirection);

Prueba a ver si la forma excede los límites de la pantalla
Si lo hace, invierta su dirección multiplicando por -1


Si (xpos > tamaño de ancho || xpos < 0) {}
xdirection * = -1;
}
Si (ypos > altura tamaño || ypos < 0) {}
ydirection * = -1;
}

Si (zpos <-altura-tamaño || zpos > 0) {//note que Zaxis va dentro de la pantalla
zdirection * = -1;
}

Dibuja la figura

Lights();
traducir (xpos, ypos, zpos);

Sphere(Size);

MOTORES DE CONTROL DE LOS PASOS

//  X
Si (xdirection > = 0) {}
arduino.digitalWrite (ledPin, Arduino.HIGH);
arduino.digitalWrite (XdirPin, Arduino.HIGH);
arduino.digitalWrite (ZdirPin, Arduino.HIGH);
}
Else {}
arduino.digitalWrite (ledPin, Arduino.LOW);
arduino.digitalWrite (XdirPin, Arduino.LOW);
arduino.digitalWrite (ZdirPin, Arduino.LOW);
}

//  Y
Si (ydirection > = 0) {}
arduino.digitalWrite (YdirPin, Arduino.HIGH);
}
Else {}
arduino.digitalWrite (YdirPin, Arduino.LOW);
}
//  Z
Si (zdirection > = 0) {}
arduino.digitalWrite (ZdirPin, Arduino.HIGH);
}
Else {}
arduino.digitalWrite (ZdirPin, Arduino.LOW);
}
}

/////////////////////////////ARDUINO////////////////////////////////////////

Código de cableado/Arduino: / / una firmado digital simmple
Soporta tantas entradas digitales y salidas como sea posible.

Este ejemplo de código es de dominio público.

#include

#define XstepPin 10
#define XdirPin 7

#define YstepPin 2
#define YdirPin 3

#define ZstepPin 19
#define ZdirPin 18

byte previousPIN [2];  PIN: Puerto de entrada
byte previousPORT [2];

void outputPort (numeroPuerto bytes, portValue bytes)
{
sólo enviar los datos cuando cambia, si no tienes demasiados mensajes!
Si (previousPIN [número de puerto]! = portValue) {}
Firmata.sendDigitalPort (numeroPuerto, portValue);
previousPIN [número de puerto] = portValue;
Firmata.sendDigitalPort (numeroPuerto, portValue);
}
}

{} void setPinModeCallback (pin de byte, int modo)
if(PIN > 1) {/ / no touch pins RxTx (0,1)
pinMode (pin, mode);
}
}

void digitalWriteCallback (puerto de byte, int valor)
{
byte me;
currentPinValue bytes, previousPinValue;

Si (valor! = {previousPORT[port])}
para (i = 0; i < 8; i ++) {}
currentPinValue = valor (byte) & (1 << i);
previousPinValue = previousPORT [puerto] & (1 << i);
Si (currentPinValue! = previousPinValue) {}
digitalWrite (i + (puerto * 8), currentPinValue);
}
}
previousPORT [puerto] = valor;
}
}

void setup()
{
Firmata.setFirmwareVersion (0, 1);
Firmata.Attach (DIGITAL_MESSAGE, digitalWriteCallback);
Firmata.Attach (SET_PIN_MODE, setPinModeCallback);
Firmata.Begin(57600);
}

void loop()
{
outputPort (0, PIND & ~ B00000011); pernos de 0-7, haciendo caso omiso de pernos de Rx/Tx (0/1)
outputPort (1, PINB); pernos 8-13
{while(Firmata.Available())}
Firmata.processInput();
}

secuencia de pasos añadidos al código una firmado
digitalWrite(XstepPin,HIGH);    tomar medidas
digitalWrite(YstepPin,HIGH);
digitalWrite(ZstepPin,HIGH);
delayMicroseconds(2);
digitalWrite(XstepPin,LOW);
digitalWrite(YstepPin,LOW);
digitalWrite(ZstepPin,LOW);
delayMicroseconds(2);
delayMicroseconds(1000); <<<<<< Uso a velocidad de paso a paso de cambio??? <<<<<<<<

}

Artículos Relacionados

Primeros pasos con el proceso y Arduino (control de registro de cambio de equipo)

Primeros pasos con el proceso y Arduino (control de registro de cambio de equipo)

Hola otra vez! Tengo solo algunas piezas, así que decidí empezar a construir virtual! Tenía proceso en mi computadora, pero nunca había utilizado, porque i´m a un estudiante y me don´t saber Java en todo. Primero decidí sacar Plaza. He tenido problem
Conectar un actuador lineal con una caja de Control

Conectar un actuador lineal con una caja de Control

cualquier actuador lineal eléctrico de conexión a una caja de control es un proceso simple que puede tomar menos de un minuto. Detallamos este proceso paso a paso en este Instructable. Si usted tiene cualquier pregunta, nos dejan saber lo que son en
Una máquina voladora esférico con ninguna superficie de Control

Una máquina voladora esférico con ninguna superficie de Control

Esta nuestra entrada para un concurso de diseño de la máquina local. Para la competición, nos estábamos encargados de diseñar y construir una máquina voladora que puede calificarse de 'no convencionales'. Ser hardcore fans de muchos ciencia ficción m
Protoboard con un panel de control

Protoboard con un panel de control

quería protoboard un proyecto pero el nido de cables desde este panel de control estaban fuera de control.  Este tutorial muestra cómo fui capaz de organizar el desorden y hacer breadboarding mucho trabajo más rápido.Esto debería funcionar muy bien t
Seguimiento con el proceso y OpenCV se enfrentan

Seguimiento con el proceso y OpenCV se enfrentan

visión por computador es increíble. Procesos computacionales permite la oportunidad de ver el mundo que les rodea. Es necesario para un montón de aplicaciones robóticas, el aprender de máquina o proyectos interactivos. OpenCV es una biblioteca de vis
Conseguir un Kinect trabajando con el proceso en una Mac

Conseguir un Kinect trabajando con el proceso en una Mac

la primera generación de la Microsoft Kinect para la Xbox 360 podría envejecer como tecnología sino por aproximadamente $100 (unidades usadas se pueden encontrar para ~ $30), hay no hay herramienta mejor para hacer un cuerpo completo, la experiencia
Convertir el vídeo a SWF con la barra de controles del reproductor, controlador o Control en mac OS X

Convertir el vídeo a SWF con la barra de controles del reproductor, controlador o Control en mac OS X

Muchos amigos realmente se esfuerzan por Agregar barra de control a SWF archivo. A pesar de que hay muchos video converter que puede convertir el vídeo a SWF para añadir vídeo al sitio web, ninguno puede exportar SWF con controles conectados. ¿Qué he
Cómo el control de LED con el proceso y Arduino

Cómo el control de LED con el proceso y Arduino

el otro día me enfrenté con un interesante problema, necesitaba para controlar una serie de luces de una interacción en la pantalla de una computadora y tuvo que ser tan barato como sea posible.  Inmediatamente pensé en un Arduino.  Todo lo que neces
Una mesa Multi-Touch con un punto de Control de usuario AI

Una mesa Multi-Touch con un punto de Control de usuario AI

el óptico interfaz de diseño Club (OIDC) es una organización basada en investigación/diseño del estudiante fundada en la Universidad de Alabama en Huntsville en el semestre del otoño de 2012. El objetivo de la OIDC es proporcionar a todos los estudia
Brazo robótico de Arduino y seguimiento con el proceso

Brazo robótico de Arduino y seguimiento con el proceso

el brazo robótico agarra un objeto después de que detecta con el detector de movimiento y luego se mueve en un lugar específico.lista de partes:1,3 servos2. detector de movimiento infrarrojo pasivo: http://www.sparkfun.com/products/86303. arduino uno
Aurdoino con cualquier mando de control

Aurdoino con cualquier mando de control

Es un proyecto para el control de aurdoino con cualquier control remoto que desee:]Paso 1: Herramientas que necesitamos!-arduino (cualquier tipo)2-ledresistencia 3-330 ohm4-10 k ressitnce5-IR Recsiver (3 bandejas)Paso 2: ConectarLEDConectar resistenc
LEGO Technic coche con Arduino + XBee Wireless Control

LEGO Technic coche con Arduino + XBee Wireless Control

yo fui leer Instructables un invierno bien el sábado, cuando mi 8 yo hijo llegó y miraban sobre mi hombro y vi esto: por sath02. Mi hijo es un gran fan de Lego de todas las cosas y ama a los robots y autos, y esto fue derecho hasta su callejón. Él in
Con ESP8266-01 para control de temperatura

Con ESP8266-01 para control de temperatura

ESP8266-01 es una unidad básica del microcontrolador con construido en Wi-Fi. Funciona con 3.3v así que ten cuidado 5v la matará.Las unidades son muy baratos y fáciles de encontrar en eBay.Este instructivo está escrito asumiendo que tiene algún enten
Impresión 3d generativa con el proceso

Impresión 3d generativa con el proceso

Este Instructable le mostrará cómo crear objetos generativos con código que puede ser 3d impreso. Una de las delicias de los usando código generativo para imprimir cosas es que usted puede aleatorizar ciertos elementos para que cada vez que procesar