Paso 12: corregido y comentado
Aquí le damos un tercer paso en el código de una firmado.Esta debe trabajar e incluye comentarios.
///////////////// ARDUINO //////////////////////
/ * Soporta tantas entradas digitales y salidas como sea posible.
* < modificado para manejar un motor paso a paso
* Este ejemplo de código es de dominio público.
*/
#include < Firmata.h >
#define XstepPin 10 //Step pin
#define XdirPin 7 //Direction pin
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(XdirPin,HIGH);
digitalWrite(XstepPin,HIGH); tomar medidas
delayMicroseconds(2);
digitalWrite(XstepPin,LOW);
delayMicroseconds(2);
delayMicroseconds(1000); <<<<<< Uso a velocidad de paso a paso de cambio <<<<<<<<
}
//////////////////////PROCESSING///////////////////////////////////
//
Escritura simple. < modificado control paso a paso hacia
//
Compruebe si el ratón está sobre un rectángulo y escribe el estado en el puerto serie.
En este ejemplo se 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; PIN para el LED
int XdirPin = 7; PIN para la dirección paso a paso X
int XstepPin = 10;
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 (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); LED en
arduino.digitalWrite (XdirPin, Arduino.HIGH); Dirección paso a paso de esta manera
}
Else {/ / si el ratón no está sobre la Plaza,
Fill(0); cambiar color y
arduino.digitalWrite (ledPin, Arduino.LOW); LED apagado
arduino.digitalWrite (XdirPin, Arduino.LOW); Dirección paso a paso la manera de otros
}
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));
}