Controllo stepper tramite Excel

Salve, sto lavorando ad un progetto per il quale devo comandare uno stepper con Excel, per questo sto usando la libreria rExcel di Roberto Valgolio come comunicazione seriale.
Sono riuscito ad elaborare questo codice, ma c'è un problema con la frequenza di aggiornamento tra Excel e Arduino. Essa viene preimpostata nel codice in ms, e determina il tempo di uscita dei comandi.
Inviando il comando allo stepper: myPos ( x qualsiasi) e motorSpeed( y qualsiasi), lo stepper esegue il comando normalmente, ma si blocca ogni nuovo ciclo di uscita dei dati da Excel per una frazione di secondo, come se singhiozzasse.
Es. da myPos 0 a 3000 a velocità v con t 1000 ms: lo stepper raggiunge la posizione alla velocità comandata bloccandosi ogni 1000 ms.
Il problema sembra sparire sotto i 10 ms, ma probabilmente non é più percepibile ad occhio umano, ma sotto i 10 ms la velocità massima che raggiunge lo stepper sembra non superare i 100, contro gli 800/1000 raggiungibili dallo stepper (28BYJ)

E 'possibile risolvere questo problema?

#include <AccelStepper.h>
#include <rExcel.h>
#define motorPin1 8
#define motorPin2 9
#define motorPin3 10
#define motorPin4 11
#define STEPS_PER_TURN 2048
//
idx lungo = 0;
int           outputTiming = 1000;
char          worksheet[16];
char          range[16];
unsigned int  row;
unsigned int  column;
char          value[16];
int motorSpeed = 800;
int myPos = 0;
//
rExcel        myExcel;
AccelStepper  stepper(4, motorPin1, motorPin3, motorPin2, motorPin4);

void setup()
{
 while (!Serial);
 Serial.begin(115200);
 stepper.setMinPulseWidth(20);
 stepper.setMaxSpeed(motorSpeed);
 stepper.setCurrentPosition(stepper.currentPosition());
 stepper.runToPosition();
 myExcel.clearInput();
}

void loop()
{
 static unsigned long  loopTime = 0;
 static unsigned long  time1 = 0;
 loopTime = millis();
 if ((loopTime - time1) >= outputTiming)
 {
   time1 = loopTime;

   myExcel.get("Test", "D8", value);
   motorSpeed = atoi(value);
   
   myExcel.get("Test", "B8", value);
   myPos = atoi(value);
 }
 stepper.setCurrentPosition(stepper.currentPosition());
 stepper.moveTo(myPos);
 stepper.setSpeed(motorSpeed);
 stepper.runSpeedToPosition();
}

Buongiorno,
prima di tutto, essendo il tuo primo post nella sezione Italiana del forum, nel rispetto del regolamento di detta sezione (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione tutto il su citato REGOLAMENTO ...

... poi, in conformità al suddetto regolamento, punto 7, devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

In pratica, tutto il tuo codice dovrà trovarsi racchiuso tra due tag: [code] _il _tuo_ codice_ [/code] così da non venire interpretato e non dare adito alla formazione di caratteri indesiderati o cattiva formattazione del testo. Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione e sistemato il codice, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink:

OK, mi scuso, cancellerò il post e ripresentò la domanda corretta

boromyr:
OK, mi scuso, cancellerò il post e ripresentò la domanda corretta

Ma no, perchè ? ? ? :o :o :o

Leggi bene il mio post #1 ... non serve cancellare nulla :wink:

Guglielmo

Fatto, ho sistemato anche il primo post