Controllo velocità di un motore DC con HC-SR04

Salve atutti.
Premetto che nonostante sia un appassionato di modellismo dinamico da poco mi sono adentrato nel mondo della programmazione.
Utilizzo arduino uno,un modulo HC-SR04 e una motor shield adafruit.
Il mio intento è quello di misurare la distanza da un determinato oggetto,fatto questo il valore letto (convertito in cm) va a regolare la direzione e la velocità di un motore controllato tramite la motor shield.
Il problema è che il motore non si muove,ho fatto un controllo tramite tester e posso notare che effettivamente una tensione arriva,ma è estremamente bassa (intorno a 0,20V).
Il problema è sicuramente nella regolazione della velocità,dato che settando il motore a 255 (al posto di motorSpeed) il circuito funzionava senza problemi.
Posto di seguito lo sketch:

#include <AFMotor.h>

  #define MAXSPEED      200  

  int triggerPort = A0;
  int echoPort = A1;
  

  AF_DCMotor motor1(1, MOTOR12_64KHZ);
  
  void setup()
{
   Serial.begin(9600);
  
   pinMode( triggerPort, OUTPUT );
   pinMode( echoPort, INPUT );
  
   scan();
  
   delay(3000);  
      
 }  
 
 
 void loop()                    
{

  
  int distanza;    // distanza letta dal sensore
  int errore;      
  int motorSpeed;    
  
  
 
   motor1.setSpeed(motorSpeed);
  
  
  
   #define soglia  10   //distanza desiderata 10cm
  
   distanza = scan();
  
   errore = soglia - distanza;
  
   motorSpeed = (abs(errore) * 20);
  
   motorSpeed = constrain(motorSpeed, 0, MAXSPEED);
  
 
  
  if ( errore > 0)
  {
    motor1.run(BACKWARD);
  
  }
  
  if (errore < 0)
  {
    motor1.run(FORWARD);
  
  }
  
}


  
   long scan()
   {
     //porta bassa l'uscita del trigger
digitalWrite( triggerPort, LOW );
 
//invia un impulso di 10microsec su trigger
digitalWrite( triggerPort, HIGH );
delayMicroseconds( 2 );
digitalWrite( triggerPort, LOW );
 
long duration = pulseIn( echoPort, HIGH );
 
long r = 0.034 * duration / 2;
 
Serial.print( "durata: " );
Serial.print( duration );
Serial.print( " , " );
Serial.print( "distanza: " );
 
//dopo 38ms è fuori dalla portata del sensore
if( duration > 38000 ) Serial.println( "fuori portata");
else { Serial.print( r ); Serial.println( "cm" );}
 return(r);
//aspetta 1.5 secondi
delay( 500 );2;

     }

Grazie in anticipo.

Solite cose che si ripetono a tutti quelli appena arrivati.
Benvenuto
Leggi il regolamento al punto 7
Riedita il post.

potresti mandare via seriale il valore di motorSpeed al terminale del IDE. prima di "motor1.setSpeed(motorSpeed);"

Ciao Uwe

Ciao Uwe,grazie per la risposta.
Ho provato a mandareil valore tramite seriale,ma il risultato non cambia.
Magari sbaglio qualcosa,potresti scrivere la parte di codice per inviare e leggere il valore tramite seriale?
O se è presente nel forum un esempio simile?
Grazie

lo scopo della azione non era che poi funziona ma sapere che valore ha la variabile per capire che é un problema del Tuo Sketch o di un altra parte.
Fai vedere lo sketch che hai usato
Cosa vedi sul terminale?
Ciao Uwe