Paso 11: corrección de una firmado...
Parece que algo está mal en el paso 10, que es lo que es por lo que no funciona el motor paso a paso.El código siguiente funciona - pero no tiene tantos comentarios.
//////////////////////////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;
void setup()
{
tamaño (200, 200);
Sé que el primer puerto en la lista de serie de mi mac
es siempre mi Adaptador FTDI, así que abro Serial.list() [0].
En equipos con Windows, esto abre generalmente COM1.
Abierto cualquier puerto es el que utilizas.
String portName = Serial.list() [0];
myPort = serie nueva (este, portName, 9600);
Arduino = nuevo Arduino (este, Arduino.list() [0], 57600); v1
arduino.pinMode (ledPin, Arduino.OUTPUT);
arduino.pinMode (XstepPin, Arduino.OUTPUT);
arduino.pinMode (XdirPin, Arduino.OUTPUT);
}
void draw() {}
Background(255);
Si (mouseOverRect() == true) {/ / si el mouse está sobre la Plaza,
Fill(204); cambiar color y
arduino.digitalWrite (ledPin, Arduino.HIGH); enviar una H para indicar el mouse está sobre la Plaza
arduino.digitalWrite (XdirPin, Arduino.HIGH);
arduino.digitalWrite (XstepPin, Arduino.HIGH);
Delay(1);
arduino.digitalWrite (XstepPin, Arduino.LOW);
Delay(1);
}
Else {/ / si el ratón no está sobre la Plaza,
Fill(0); cambiar color y
arduino.digitalWrite (ledPin, Arduino.LOW); enviar una L si no
arduino.digitalWrite (XdirPin, Arduino.LOW);
arduino.digitalWrite (XstepPin, Arduino.HIGH);
Delay(1);
arduino.digitalWrite(XstepPin,Arduino.LOW);
Delay(1);
}
Rect (50, 50, 100, 100); Dibujar un cuadrado
}
Boolean mouseOverRect() {/ / comprobar si el mouse está sobre la Plaza
regresar ((ratonX > = 50) & & (mouseX < = 150) & & (ratonY > = 50) & & (ratonY < = 150));
}