Étape 15 : Travailler vers une impression 3D...
Le code est étape 14 doit être un peu tordu afin des moteurs pas à pas. Les principaux changements qui chaque fois que la vitesse des balles est zéro - le stepper correspondant doit être désactivé.
Voici le code de traitement. Cela ne fonctionne qu’une seule couche, beaucoup de couches doivent être empilés pour permettre une impression 3D.
Traitement / / /
/**
* traces balle en arrière à travers la fenêtre d’un maillage qui vous seront utile pour l’impression en plastique
*/
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 taille = 10 ; Largeur de la forme
flotteur xpos, ypos ; Position de départ de la forme
flotteur xspeed = 3 ; Vitesse de la forme
float yspeed = 0; / / Vitesse de la forme
int directionX = 1 ; Gauche ou droite
int directionY = 1 ; Haut en bas
void setup()
{
taille (200, 200) ;
noStroke() ;
frameRate(30) ;
Smooth() ;
Définir la position de départ de la forme
PosX = 0 ;
YPos = 0 ;
Background(102) ;
communication d’installation avec Arduino
Arduino = nouvelle Arduino (ce, 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) ;
Mise à jour la position de la forme
PosX = xpos + (xspeed * directionX) ;
YPos = ypos + (yspeed * directionY) ;
changer de direction lorsque la balle touche le bord - dessiner un carré
commence à gauche et se déplace vers la droite
déplacer vers le bas de 10 étapes
Si (xpos > largeur taille & & Posy == 0) {//down
directionY = 1 ;
yspeed = 2 ;
XSpeed = 0 ;
}
inversion de direction jusqu'à ce qu’il frappe le bord X 0 X
Si (xpos > largeur taille & & Posy == 20) {}
directionX = -1 ;
yspeed = 0 ;
XSpeed = 2 ;
}
déplacer vers le bas de 10 étapes
Si (xpos < 0 & & Posy == 20) {//down
directionY = 1 ;
yspeed = 2 ;
XSpeed = 0 ;
}
inverse X direction jusqu'à ce qu’il hiths le 200 X edge
Si (xpos < 0 & & Posy == 40) {}
directionX = 1 ;
yspeed = 0 ;
XSpeed = 2 ;
}
déplacer vers le bas de 10 étapes
Si (xpos > largeur taille & & Posy == 40) {//down
directionY = 1 ;
yspeed = 2 ;
XSpeed = 0 ;
}
inversion de direction jusqu'à ce qu’il frappe le bord X 0 X
Si (xpos > largeur taille & & Posy == 60) {}
directionX = -1 ;
yspeed = 0 ;
XSpeed = 2 ;
}
déplacer vers le bas de 10 étapes
Si (xpos < 0 & & Posy == 60) {//down
directionY = 1 ;
yspeed = 2 ;
XSpeed = 0 ;
}
inversion de direction jusqu'à ce qu’il frappe le bord X 200 X
Si (xpos < 0 & & Posy == 80) {}
directionX = 1 ;
yspeed = 0 ;
XSpeed = 2 ;
}
déplacer vers le bas de 10 étapes
Si (xpos > largeur taille & & Posy == 80) {//down
directionY = 1 ;
yspeed = 2 ;
XSpeed = 0 ;
}
inversion de direction jusqu'à ce qu’il frappe le bord X 0 X
Si (xpos > largeur taille & & Posy == 100) {}
directionX = -1 ;
yspeed = 0 ;
XSpeed = 2 ;
}
déplacer vers le bas de 10 étapes
Si (xpos < 0 & & Posy == 100) {//down
directionY = 1 ;
yspeed = 2 ;
XSpeed = 0 ;
}
inverse X direction jusqu'à ce qu’il hiths le 200 X edge
Si (xpos < 0 & & Posy == 120) {//down
directionX = 1 ;
yspeed = 0 ;
XSpeed = 2 ;
}
déplacer vers le bas de 10 étapes
Si (xpos > largeur taille & & Posy == 120) {}
directionY = 1 ;
yspeed = 2 ;
XSpeed = 0 ;
}
la direction opposée jusqu'à ce qu’il frappe le bord X 0
Si (xpos > largeur taille & & Posy == 140) {}
directionX =-1 ;
yspeed = 0 ;
XSpeed = 2 ;
}
déplacer vers le bas de 10 étapes
Si (xpos < 0 & & Posy == 140) {//down
directionY = 1 ;
yspeed = 2 ;
XSpeed = 0 ;
}
inverse X direction jusqu'à ce qu’il hiths le 200 X edge
Si (xpos < 0 & & Posy == 160) {//down
directionX = 1 ;
yspeed = 0 ;
XSpeed = 2 ;
}
déplacer vers le bas de 10 étapes
Si (xpos > largeur taille & & Posy == 160) {}
directionY = 1 ;
yspeed = 2 ;
XSpeed = 0 ;
}
la direction opposée jusqu'à ce qu’il frappe le bord X 200
Si (xpos > largeur taille & & Posy == 180) {}
directionX =-1 ;
yspeed = 0 ;
XSpeed = 2 ;
}
déplacer vers le bas de 10 étapes
Si (xpos > 0 & & Posy == 180) {}
directionY = 1 ;
yspeed = 2 ;
XSpeed = 0 ;
}
la direction opposée jusqu'à ce qu’il frappe le bord 200 x
Si (xpos > 0 & & Posy == 200) {}
directionX = 1 ;
yspeed = 0 ;
XSpeed = 2 ;
}
DIRE ARDUINO WHICH WAY TO SEND MOTORS
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) ;
}
Dessinez la forme
ellipse (xpos + taille/2, ypos + taille/2, taille, taille) ;
}