Paso 13: Siga la bola que despide con una firmado! (esto funciona bien)
http://www.youtube.com/watch?v=VYgbStFaQbMAhora he tomado el bosquejo de bola que despide y combinado con el firmado uno.
Ahora los motores paso a paso sin problemas seguir el camino de la bola que despide!!
Ahora estamos en algún lugar!
//////////////////////////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 < Firmata.h >
#define XstepPin 10
#define XdirPin 7
#define YstepPin 2
#define YdirPin 3
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);
delayMicroseconds(2);
digitalWrite(XstepPin,LOW);
digitalWrite(YstepPin,LOW);
delayMicroseconds(2);
delayMicroseconds(1000); <<<<<< Uso a velocidad de paso a paso de cambio??? <<<<<<<<
}
///////////////////PROCESSING//////////////////////////////
/**
* Simple escritura.
*
* Comprobar si el ratón está sobre un rectángulo y escribe el estado en el puerto serie.
* Este ejemplo trabaja con el cableado / Arduino programa que sigue a continuación.
*/
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;
parámetros para la bola
Float x = 50.0;
Float y = 50.0;
flotador de speedX = 1.0;
flotador rápido =. 4;
radio de flotador = 15.0;
int directionX = 1;
int directionY = 1;
void setup()
{
configuración del dibujo
tamaño (100, 100);
Smooth();
noStroke();
ellipseMode(RADIUS);
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);
}
void draw() {}
Fill(0,12);
Rect (0,0, ancho, alto);
Fill(255);
Ellipse (x, y, radio, radio);
speedX de x += * directionX;
Si ((x > anchura-radio) || (x < RADIUS)) {//change X dirección si la bola golpea el lado de la caja
directionX = - directionX;
}
y += rápida * directionY;
Si ((y > altura-radio) || (y < RADIUS)) {Dirección de //change Y si la bola golpea el lado de la caja
directionY = - directionY;
}
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);
}
}