Styra en RepStrap bearbetning (12 / 25 steg)
Steg 12: rättas och kommenteras
Här är ett tredje pass på Firmata koden.Detta bör fungera och innehåller kommentarer.
///////////////// ARDUINO //////////////////////
/ * Stödjer så många digitala ingångar och utgångar som möjligt.
* < modifierade att köra en stegmotor
* Denna exempelkod är offentlig.
*/
#include < Firmata.h >
#define XstepPin 10 //Step pin
#define XdirPin 7 //Direction pin
byte previousPIN [2]. PIN: PORT för input
byte previousPORT [2].
void outputPort (byte portNumber, byte portValue)
{
endast skicka data när den ändras, annars får du för många meddelanden!
om (previousPIN [portnummer]! = portValue) {
Firmata.sendDigitalPort (portnummer, portValue);
previousPIN [portnummer] = portValue;
Firmata.sendDigitalPort (portnummer, portValue);
}
}
void setPinModeCallback (byte pin, int läge) {
IF(PIN > 1) {/ / inte touch RxTx stift (0,1)
pinMode (pin, läge);
}
}
void digitalWriteCallback (byte port, int värde)
{
byte i.
byte currentPinValue, previousPinValue;
om (värde! = previousPORT[port]) {
för (jag = 0; jag < 8; i ++) {
currentPinValue = (byte) värde & (1 << jag);
previousPinValue = previousPORT [port] & (1 << jag);
om (currentPinValue! = previousPinValue) {
digitalWrite (i + (port * 8), currentPinValue);
}
}
previousPORT [port] = värde;
}
}
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); stift 0-7, ignorera Rx/Tx stift (0/1)
outputPort (1, PINB); stift 8-13
While(Firmata.available()) {
Firmata.processInput();
}
extra stepper sekvens till firmata kod
digitalWrite(XdirPin,HIGH);
digitalWrite(XstepPin,HIGH); vidta åtgärder
delayMicroseconds(2);
digitalWrite(XstepPin,LOW);
delayMicroseconds(2);
delayMicroseconds(1000); <<<<<< Används för att ändra STEPPER hastighet <<<<<<<<
}
//////////////////////PROCESSING///////////////////////////////////
//
Enkelt skriva. < ändrades så att styra stepper riktning
//
Kontrollera om musen är över en rektangel och skriver status till den seriella porten.
I det här exemplet fungerar med ledningarna / Arduino program som följer nedan.
//
import processing.serial.*;
import cc.arduino.*;
Arduino arduino;
Seriella myPort; Skapa objekt från seriella klass
Uppgifterna från den seriella porten
int ledPin = 13. PIN-koden för LED
int XdirPin = 7. PIN-koden för stepper X riktning
int XstepPin = 10;
void setup()
{
storlek (200, 200);
Jag vet att den första porten i listan följetong på min mac
är alltid min FTDI adapter, så jag öppnar Serial.list() [0].
På Windows-maskiner, allmänt öppnas COM1.
Öppna oavsett port är den du använder.
Sträng portName = Serial.list() [0];
myPort = ny följetong (här, portName, 9600);
Arduino = nya Arduino (denna, Arduino.list() [0], 57600); v1
arduino.pinMode (ledPin, Arduino.OUTPUT);
arduino.pinMode (XdirPin, Arduino.OUTPUT);
}
void draw() {
Background(255);
om (mouseOverRect() == true) {/ / om musen är över torget,
Fill(204); ändra färg och
arduino.digitalWrite (ledPin, Arduino.HIGH); Lysdioden på
arduino.digitalWrite (XdirPin, Arduino.HIGH); Stepper riktning detta sätt
}
annat {/ / om musen inte är över torget,
Fill(0); ändra färg och
arduino.digitalWrite (ledPin, Arduino.LOW); LEDDE bort
arduino.digitalWrite (XdirPin, Arduino.LOW); Stepper riktning åt andra hållet
}
rect (50, 50, 100, 100); Rita en fyrkant
}
booleska mouseOverRect() {/ / Test om musen över torget
tillbaka ((mouseX > = 50) & & (mouseX < = 150) & & (mouseY > = 50) & & (mouseY < = 150));
}