Numero tra zero e uno in arduino

ciao, e scusate ma la vecchiaia fa brutti scherzi..
mi ritrovo davanti a questo sketch per l'utilizzo di un motorino di inseguimento per un telescopio ma non riesco a immettere un valore tra zero e uno (come ho calcolato dovrebbe essere 0.17) accanto alla voce motorspeed.
Grazie mille!

#include <Stepper.h>

const int stepsPerRevolution = 200; 
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

void setup() {}

void loop() {
  int motorSpeed = 1; //to be calculated, depending on your stepper and gear ratio
  if (motorSpeed >= 0) {
    myStepper.setSpeed(motorSpeed);
    myStepper.step(stepsPerRevolution / 100); 
  }
}

Questa funzione setSpeed() imposta la velocità del motore in giri al minuto (RPM). Questa funzione non fa girare il motore, ma imposta solo la velocità alla quale lo farà quando chiami step().

La velocità è definita in numero di passi al secondo, è un valore intero (di tipo int)

e quindi non potrai impostare 0.17. Bisognerebbe rivedere il codice per questo.

Come @J-M-L ti ha fatto già notare, c'è qualcosa che non quadra nei calcoli che stai facendo.

Personalmente credo che ti converrebbe usare una libreria più "avanzata" (queste sono le API di quella che stai usando).

Impostare la velocità di uno stepper in RPM, ma usando un int (quindi niente valori con la virgola) impone dei limiti che potrebbero non essere accettabili nel tuo caso perché la differenza in termini di velocità tra 1RPM e 2RPM è notevole.

Io quando ho a che fare con degli stepper cerco sempre di ragionare in numero di step al secondo necessari per completare la distanza (o la rotazione angolare) necessaria.

grazie mille per la cortesia ad entrambe. Vedrò come risolvere, anche se la vedo difficile :smile:

Il codice per il motore stepper che avete fa 2 passi (stepsPerRevolution / 100) alla velocità che avete specificato prima ed espressa in RPM. Quindi fa un passo, aspetta un po' per raggiungere la velocità desiderata, poi fa il secondo passo.

Poi la loop() continua a ripetersi (il che richiede un po' di tempo), si rispecifica la velocità e si fanno nuovamente 2 passi con quella velocità come visto in precedenza.

Abbiamo quindi:
PASSO
ATTESA LEGATA ALLA VELOCITÀ
PASSO
ATTESA LEGATA ALLA VELOCITÀ DELLA LOOP()
PASSO
ATTESA LEGATA ALLA VELOCITÀ
PASSO
...

➜ non si ottiene un movimento molto preciso.

grazie ancora