Etape 11 : correction à firmata...
Il semble que quelque chose ne va pas à l’étape 10, ce qui rend donc le moteur pas à pas ne fonctionne pas.Le code ci-dessous fonctionne - mais n’a pas autant de commentaires.
//////////////////////////Arduino//////////////////////////
Câblage/Arduino code: / / simmple firmata numérique
Prend en charge le plus grand nombre d’entrées digitales et sorties que possible.
Cet exemple de code est dans le domaine public.
#include < Firmata.h >
#define XstepPin 10
#define XdirPin 7
#define YstepPin 2
#define YdirPin 3
previousPIN Byte [2] ; PIN signifie PORT pour l’entrée
previousPORT Byte [2] ;
void outputPort (numéro_port octets, portValue octets)
{
Envoyer uniquement les données lorsqu’il modifie, dans le cas contraire, vous obtenez trop de messages !
Si (previousPIN [numéro_port]! = portValue) {}
Firmata.sendDigitalPort (numéro de port, portValue) ;
previousPIN [numéro_port] = portValue ;
Firmata.sendDigitalPort (numéro de port, portValue) ;
}
}
void setPinModeCallback (byte pin, int mode) {}
if(pin > 1) {/ / Don't touch RxTx épingles (0,1)
pinMode (goupille, mode) ;
}
}
void digitalWriteCallback (byte port, int valeur)
{
octet i ;
currentPinValue octets, previousPinValue ;
Si (valeur! = {previousPORT[port])}
pour (i = 0; i < 8; i ++) {}
currentPinValue = valeur (octets) & (1 << j’ai) ;
previousPinValue = previousPORT [port] & (1 << j’ai) ;
Si (currentPinValue! = previousPinValue) {}
digitalWrite (i + (port * 8), currentPinValue) ;
}
}
previousPORT [port] = value ;
}
}
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) ; broches 0-7, ignorant les broches Rx/Tx (0/1)
outputPort (1, PINB) ; broches 8-13
{while(Firmata.available())}
Firmata.processInput() ;
}
séquence de pas à pas ajouté firmata code
digitalWrite(XstepPin,HIGH) ; prendre des mesures
digitalWrite(YstepPin,HIGH) ;
delayMicroseconds(2) ;
digitalWrite(XstepPin,LOW) ;
digitalWrite(YstepPin,LOW) ;
delayMicroseconds(2) ;
delayMicroseconds(1000) ; <<<<<< Permet de modifier la vitesse STEPPER??? <<<<<<<<
}
/////////////////////////////PROCESSING//////////////////////////////////////
/**
* Simple d’écrire.
*
* Vérifier si la souris est sur un rectangle et écrit l’État sur le port série.
* Cet exemple fonctionne avec le câblage / Arduino programme qui suit ci-dessous.
*/
Import processing.serial.* ;
Import cc.arduino.* ;
Arduino arduino ;
Serial myPort ; Créez l’objet de classe de la série
Données reçues du port série
int ledPin = 13 ;
int XstepPin = 10 ;
int XdirPin = 7 ;
void setup()
{
taille (200, 200) ;
Je sais que le premier port dans la liste de série sur mon mac
est-ce toujours mon adaptateur FTDI, alors j’ai ouvert Serial.list() [0].
Sur les machines Windows, cela ouvre généralement COM1.
Ouvert quelque port est celui que vous utilisez.
String portName = Serial.list() [0] ;
myPort = nouvelle série (ce, portName, 9600) ;
Arduino = nouvelle Arduino (ce, 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 la souris se trouve sur place,
Fill(204) ; changer la couleur et
arduino.digitalWrite (ledPin, Arduino.HIGH) ; Envoyer un H pour indiquer la souris se trouve sur la place
arduino.digitalWrite (XdirPin, Arduino.HIGH) ;
arduino.digitalWrite (XstepPin, Arduino.HIGH) ;
Delay(1) ;
arduino.digitalWrite (XstepPin, Arduino.LOW) ;
Delay(1) ;
}
else {/ / si la souris n’est pas sur place,
Fill(0) ; changer la couleur et
arduino.digitalWrite (ledPin, Arduino.LOW) ; Envoyer un L dans le cas contraire
arduino.digitalWrite (XdirPin, Arduino.LOW) ;
arduino.digitalWrite (XstepPin, Arduino.HIGH) ;
Delay(1) ;
arduino.digitalWrite(XstepPin,Arduino.LOW) ;
Delay(1) ;
}
Rect (50, 50, 100, 100) ; Dessinez un carré
}
Boolean mouseOverRect() {/ / Test si la souris se trouve sur la place
Return ((mouseX > = 50) & & (mouseX < = 150) & & (mouseY > = 50) & & (mouseY < = 150)) ;
}