problema controllo motore

Salve, mi sono appena iscritto in questo forum e cerco aiuto riguardo il mio problema.
Il mio programma deve far ruotar eun motore fino al punto desiderato(che può essere modificato via seriale). Il mio problema è che nonostante il software rilevi una diversa posizione il motore rimane fermo come se fosse già nella posizione corretta.

#include <LiquidCrystal.h>
int pin = A0;
int valore = 0;
int pin11 = 11;
int pin12 = 12;
int angolo = 180;
int prova;
const int rs = 31, en = 33, d4 = 35, d5 = 37, d6 = 39, d7 = 41;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);



void setup() {
Serial.begin(9600);
pinMode(pin11, OUTPUT);
pinMode(pin12, OUTPUT);
}

void loop() {
 
   if (Serial.available() > 0)
  {    
  angolo = Serial.parseInt(); 
  Serial.print("angolo");
  Serial.println(angolo);
  delay(1000);
  }
valore= analogRead(pin);

prova = map(valore, 0, 1023, 0, 360);
Serial.print("prova");
Serial.println(prova);
if(angolo>360)
{
  angolo=360;
}

while(prova>angolo+2)     //rotazione indietro
{
      digitalWrite(pin11, LOW);
      digitalWrite(pin12, HIGH);
      valore= analogRead(pin);
      prova = map(valore, 0, 1023, 0, 360);
       Serial.print("maggiore");
      Serial.println(prova);
}
while(prova<angolo-2)     //rotazione in avanti
{
      digitalWrite(pin11, HIGH);
      digitalWrite(pin12, LOW);
      valore= analogRead(pin);
      prova = map(valore, 0, 1023, 0, 360);
       Serial.print("minore");
      Serial.println(prova);
      
}

while(angolo-2<prova<angolo+2)
{
      digitalWrite(pin11, LOW);
      digitalWrite(pin12, LOW);
      valore= analogRead(pin);
      prova = map(valore, 0, 1023, 0, 360);
      Serial.print("uguale");
      Serial.println(prova);
      lcd.setCursor(0,1);
      lcd.print(prova);
      Serial.println(angolo);
      

    
  
  
  }
   
  }

Scusate se sono stato poco chiaro, in poche parole mi si blocca tutto nell'ultimo ciclo stamoandomi sempre "uguale"anche se i valori sono differenti

Buongiorno,
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… 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 ... Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink:

Volevo aggiungere che se come condizione nell'ultimo while inserisco prova==angolo il programma funziona; ma purtroppo non è fattibile perche il motore ha circa due gradi di range e quindi non arriverebbe mai alla posizione ideale ma oscillerebbe intorno a quel valore