Paso 15: Trabajando hacia una impresión 3D...
El código es paso 14 debe ser retocado un poco en orden a los motores paso a paso. El principal cambio que siempre que la velocidad de bolas es cero - los pasos correspondiente deben deshabilitarse.
Aquí está el código de procesamiento. Esto sólo va en una capa, muchas capas deben apilarse para hacer un 3D impresión.
Procesamiento / / /
/**
* huellas bola hacia adelante y hacia atrás a través de la ventana en una malla que sea útil para la impresión de plástico
*/
Import processing.serial.*;
Import cc.arduino.*;
Arduino arduino;
int ledPin = 13;
int XstepPin = 2;
int XdirPin = 3;
int XenablePin = 4;
int YstepPin = 7;
int YdirPin = 10;
int YenablePin = 8;
int tamaño = 10; Ancho de la forma
flotador xpos, ypos; Posición inicial de forma
flotador xspeed = 3; Velocidad de la forma
flotador yspeed = 0; / / velocidad de la forma
int directionX = 1; Izquierda o derecha
int directionY = 1; Arriba a abajo
void setup()
{
tamaño (200, 200);
noStroke();
frameRate(30);
Smooth();
Establecer la posición inicial de la forma
XPOS = 0;
YPOS = 0;
Background(102);
comunicación configuración con Arduino
Arduino = nuevo Arduino (este, Arduino.list() [0], 57600); v1
arduino.pinMode (XstepPin, Arduino.OUTPUT);
arduino.pinMode (XdirPin, Arduino.OUTPUT);
arduino.pinMode (YstepPin, Arduino.OUTPUT);
arduino.pinMode (YdirPin, Arduino.OUTPUT);
arduino.pinMode (EstepPin, Arduino.OUTPUT);
arduino.pinMode (EdirPin, Arduino.OUTPUT);
arduino.pinMode (EenablePin, Arduino.OUTPUT);
}
void draw()
{
Background(102);
Actualizar la posición de la forma
XPOS = xpos + (xspeed * directionX);
YPOS = ypos + (yspeed * directionY);
cambiar de dirección cuando la bola golpea el borde - para dibujar un cuadrado
comienza a la izquierda y se mueve hacia derecha
bajar en 10 pasos
Si (xpos > anchura tamaño & & ypos == 0) {//down
directionY = 1;
yspeed = 2;
XSpeed = 0;
}
reversa X dirección hasta que golpea el borde de X 0
Si (xpos > anchura tamaño & & ypos == 20) {}
directionX = -1;
yspeed = 0;
XSpeed = 2;
}
bajar en 10 pasos
Si (xpos < 0 & & ypos == 20) {//down
directionY = 1;
yspeed = 2;
XSpeed = 0;
}
reversa X dirección hasta borde de hiths del 200 X
Si (xpos < 0 & & ypos == 40) {}
directionX = 1;
yspeed = 0;
XSpeed = 2;
}
bajar en 10 pasos
Si (xpos > anchura tamaño & & ypos == 40) {//down
directionY = 1;
yspeed = 2;
XSpeed = 0;
}
reversa X dirección hasta que golpea el borde de X 0
Si (xpos > anchura tamaño & & ypos == 60) {}
directionX = -1;
yspeed = 0;
XSpeed = 2;
}
bajar en 10 pasos
Si (xpos < 0 & & ypos == 60) {//down
directionY = 1;
yspeed = 2;
XSpeed = 0;
}
reversa X dirección hasta que golpea el borde de X 200
Si (xpos < 0 & & ypos == 80) {}
directionX = 1;
yspeed = 0;
XSpeed = 2;
}
bajar en 10 pasos
Si (xpos > anchura tamaño & & ypos == 80) {//down
directionY = 1;
yspeed = 2;
XSpeed = 0;
}
reversa X dirección hasta que golpea el borde de X 0
Si (xpos > anchura tamaño & & ypos == 100) {}
directionX = -1;
yspeed = 0;
XSpeed = 2;
}
bajar en 10 pasos
Si (xpos < 0 & & ypos == 100) {//down
directionY = 1;
yspeed = 2;
XSpeed = 0;
}
reversa X dirección hasta borde de hiths del 200 X
Si (xpos < 0 & & ypos == 120) {//down
directionX = 1;
yspeed = 0;
XSpeed = 2;
}
bajar en 10 pasos
Si (xpos > anchura tamaño & & ypos == 120) {}
directionY = 1;
yspeed = 2;
XSpeed = 0;
}
hacia atrás hasta que golpea el borde de X 0
Si (xpos > anchura tamaño & & ypos == 140) {}
directionX =-1;
yspeed = 0;
XSpeed = 2;
}
bajar en 10 pasos
Si (xpos < 0 & & ypos == 140) {//down
directionY = 1;
yspeed = 2;
XSpeed = 0;
}
reversa X dirección hasta borde de hiths del 200 X
Si (xpos < 0 & & ypos == 160) {//down
directionX = 1;
yspeed = 0;
XSpeed = 2;
}
bajar en 10 pasos
Si (xpos > anchura tamaño & & ypos == 160) {}
directionY = 1;
yspeed = 2;
XSpeed = 0;
}
hacia atrás hasta que golpea el borde de X 200
Si (xpos > anchura tamaño & & ypos == 180) {}
directionX =-1;
yspeed = 0;
XSpeed = 2;
}
bajar en 10 pasos
Si (xpos > 0 & & ypos == 180) {}
directionY = 1;
yspeed = 2;
XSpeed = 0;
}
hacia atrás hasta que golpea el borde de 200 x
Si (xpos > 0 & & ypos == 200) {}
directionX = 1;
yspeed = 0;
XSpeed = 2;
}
DILE A ARDUINO QUE MANERA ENVIAR MOTORES
Si (directionX > = 0) {}
arduino.digitalWrite (ledPin, Arduino.HIGH);
arduino.digitalWrite (XdirPin, Arduino.HIGH);
}
Else {}
arduino.digitalWrite (ledPin, Arduino.LOW);
arduino.digitalWrite (XdirPin, Arduino.LOW);
}
Si (directionY > = 0) {}
arduino.digitalWrite (ledPin, Arduino.HIGH);
arduino.digitalWrite (YdirPin, Arduino.HIGH);
}
Else {}
arduino.digitalWrite (ledPin, Arduino.LOW);
arduino.digitalWrite (YdirPin, Arduino.LOW);
}
Si (xspeed == 0) {}
arduino.digitalWrite (XenablePin, Arduino.HIGH);
}
Else {}
arduino.digitalWrite (XenablePin, Arduino.LOW);
}
Si (yspeed == 0) {}
arduino.digitalWrite (YenablePin, Arduino.HIGH);
}
Else {}
arduino.digitalWrite (YenablePin, Arduino.LOW);
}
Dibuja la figura
elipse (xpos + tamaño/2, ypos + tamaño/2, tamaño, tamaño);
}