Bonjour à tous,
J'aimerais envoyer des données via le serial sans le faire buger.
Je reçois des données de Processing, lesquelles me servent à contrôler la positon de plusieurs moteurs pas à pas.
Tous fonctionnent à merveille, sauf quand je decide d'envoyer des données sur le serial avec Serial.println.
Aussi, comme je lis les données de Processing peut-être qu'il y a un conflit avec l'envoie des données via le même serial.
Je me dis à l'instant que j'ai une Arduino Due, si je recevais les données de Processing avec le serial et que j'envoyais les données de l'Arduino sur l'autre port de la Due, est ce que cela fonctionnerait?
Où puise je rester sur la Uno?
Merci à vous. Mon code est dessous
//*********** Variable de Processing
int w0, w1, w2, w3, w4; // position à recevoir de la simulation Processing
#include <AccelStepper.h>
// Define a stepper and the pins it will use
#define NBMOTEURS 5
#define NBPASPARTOUR 200
// Define a stepper and the pins it will use
#define STEP 1//-->Mode pas complet
#define PINDIRECTION0 12
#define PINSPEED0 13
#define PINDIRECTION1 10
#define PINSPEED1 11
#define PINDIRECTION2 8
#define PINSPEED2 9
#define PINDIRECTION3 6
#define PINSPEED3 7
#define PINDIRECTION4 4
#define PINSPEED4 5
/*
const uint8_t PINDIRECTION[NBMOTEURS] = {8, 12};
const uint8_t PINSPEED[NBMOTEURS] = {9, 13};
*/
//int stepper[] = NBMOTEURS;
//AccelStepper stepper[i](STEP, PINSPEED0, PINDIRECTION0);
AccelStepper stepper[ NBMOTEURS] = {
AccelStepper (STEP, PINSPEED0, PINDIRECTION0),
AccelStepper (STEP, PINSPEED1, PINDIRECTION1),
AccelStepper (STEP, PINSPEED2, PINDIRECTION2),
AccelStepper (STEP, PINSPEED3, PINDIRECTION3),
AccelStepper (STEP, PINSPEED4, PINDIRECTION4),
};
#define ANALOG_IN A0
int analog_in;
int positionX;
void setup()
{
Serial.begin (115200);
for(uint8_t i = 0; i < NBMOTEURS; i++) {
stepper[i].setMaxSpeed(500);
stepper[i].setAcceleration(150);
}
/*
stepper0.setMaxSpeed(100);
stepper0.setAcceleration(20);
stepper1.setMaxSpeed(100);
stepper1.setAcceleration(20);
stepper2.setMaxSpeed(100);
stepper2.setAcceleration(20);
*/
}
void loop()
{
// testStepMotors();
receiveData(); // receive data from Processing
for(uint8_t i = 0; i < NBMOTEURS; i++) {
stepper[i].setMaxSpeed(300);
stepper[i].setAcceleration(150);
stepper[4].moveTo(w4);
stepper[3].moveTo(w3);
stepper[2].moveTo(w2);
stepper[1].moveTo(w1);
stepper[0].moveTo(w0);
stepper[i].run(); // beaucoup plus rapide
// stepper[i].runSpeedToPosition(); // fonctionne dans les deux cazs
/*
Serial.print ("A "); Serial.println (w4);
Serial.print ("B "); Serial.println (w3);
Serial.print ("C "); Serial.println (w2);
Serial.print ("D "); Serial.println (w1);
Serial.print ("E "); Serial.println (w0);
// Serial.print ("F "); Serial.println (i-2);
*/
}
}
void receiveData() {
if (Serial.available() > 0) {
w0 = Serial.parseInt();
w1 = Serial.parseInt();
w2 = Serial.parseInt();
w3 = Serial.parseInt();
w4 = Serial.parseInt(); // La dernière donnée qui figure sur le serial de Processing arrive en premier sur Arduino
Serial.read();
}
}