Schritt 12: korrigiert und kommentiert
Hier ist ein dritte Pass auf den Firmata Code.Dies sollte funktionieren und Kommentare enthält.
///////////////// ARDUINO //////////////////////
/ * Unterstützt beliebig viele digitale Eingänge und Ausgänge wie möglich.
* < geändert, um einen Schrittmotor fahren
* Dieser Beispielcode ist in der Public Domain.
*/
#include < Firmata.h >
#define XstepPin 10 //Step pin
#define XdirPin 7 //Direction pin
Byte PreviousPIN [2]; PIN bedeutet Hafen für die Eingabe
Byte PreviousPORT [2];
void OutputPort (Byte-Anschlussnummer, PortValue Byte)
{
senden Sie nur die Daten bei Änderungen, sonst bekommt man zu viele Nachrichten!
Wenn (PreviousPIN [Masqurading]! = PortValue) {}
Firmata.sendDigitalPort (Masqurading, PortValue);
PreviousPIN [Masqurading] = PortValue;
Firmata.sendDigitalPort (Masqurading, PortValue);
}
}
void SetPinModeCallback (Byte-Pin, Int-Modus) {}
If(PIN > 1) {/ / Don't touch RxTx Stifte (0,1)
PinMode (Pin, Modus);
}
}
void DigitalWriteCallback (Byte Port, Int-Wert)
{
Byte ich;
Byte CurrentPinValue, PreviousPinValue;
Wenn (Wert! = previousPORT[port]) {}
für (ich = 0; ich < 8; i ++) {}
CurrentPinValue = (Byte) Wert & (1 << ich);
PreviousPinValue = PreviousPORT [Port] & (1 << ich);
Wenn (CurrentPinValue! = PreviousPinValue) {}
DigitalWrite (i + (Port * 8), CurrentPinValue);
}
}
PreviousPORT [Port] = Wert;
}
}
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); Pins 0-7, Rx/Tx Pins (0/1) ignorieren
OutputPort (1, PINB); Pin 8-13
{while(firmata.available())}
Firmata.processInput();
}
zusätzlichen Schrittmotor Sequenz Firmata Code
digitalWrite(XdirPin,HIGH);
digitalWrite(XstepPin,HIGH); Maßnahmen ergreifen
delayMicroseconds(2);
digitalWrite(XstepPin,LOW);
delayMicroseconds(2);
delayMicroseconds(1000); <<<<<< Mit STEPPER ÄNDERUNGSGESCHWINDIGKEIT <<<<<<<<
}
//////////////////////PROCESSING///////////////////////////////////
//
Einfach schreiben. < Stepper Steuerrichtung modifiziert
//
Überprüfen Sie, ob die Maus über ein Rechteck und den Status an den seriellen Port schreibt.
Dieses Beispiel funktioniert mit der Verkabelung / Arduino Programm, dass folgt unten.
//
Import processing.serial.*;
Import cc.arduino.*;
Arduino Arduino;
Serielle MyPort; Serienklasse Objekt erstellen
Daten von der seriellen Schnittstelle
Int-LedPin = 13; PIN für LED
Int XdirPin = 7; PIN für Schrittmotoren X-Richtung
Int XstepPin = 10;
void setup()
{
Größe (200, 200);
Ich weiß, dass der erste Hafen in der seriellen Liste auf meinem Mac
ist immer mein FTDI-Adapter, so dass ich Serial.list() [0] öffnen.
Auf Windows-Rechnern eröffnet dies in der Regel COM1.
Geöffnet jeder Port ist diejenige, die Sie verwenden.
PortName String = Serial.list() [0];
MyPort = neue Seriennummer (diese, PortName, 9600);
Arduino = neue Arduino (dieser, Arduino.list() [0], 57600); V1
arduino.pinMode (LedPin, Arduino.OUTPUT);
arduino.pinMode (XdirPin, Arduino.OUTPUT);
}
void draw() {}
Background(255);
Wenn (mouseOverRect() == True) {/ / wenn die Maus über dem Platz, ist
Fill(204); ändern Sie Farbe und
arduino.digitalWrite (LedPin, Arduino.HIGH); LED auf
arduino.digitalWrite (XdirPin, Arduino.HIGH); Stepper Richtung so
}
Else {/ / wenn die Maus nicht über dem Platz, ist
Fill(0); ändern Sie Farbe und
arduino.digitalWrite (LedPin, Arduino.LOW); LED aus
arduino.digitalWrite (XdirPin, Arduino.LOW); Stepper Richtung anders
}
Rect (50, 50, 100, 100); Zeichnen Sie ein Quadrat
}
Boolesche mouseOverRect() {/ / testen, ob die Maus über dem Platz ist
zurück ((MouseX > = 50) & & (MouseX < = 150) & & (mouseY > = 50) & & (mouseY < = 150));
}