rilevamento posizione servo a rotazione continua con potenziometro

Ciao ragazzi! sono nuovo nel forum e chiedo il vostro aiuto…
ho un servo a rotazione continua che muove un asta su cui ho montato un potenziometro per rilevarne la posizione. il mio progetto è di sapere dove si trova l’ asta in base al valore del potenziometro…se è in una posizione diversa da dove voglio io ( posizione centrale) il motore deve tornare alla posizione iniziale girando a destra o a sinistra…ho provato a fare uno sketch però il servo gira a scatti…non so il motivo! =( =(

#include <Servo.h> 
 
Servo myservo;  
 int base;
 
void setup() 
{ 
  myservo.attach(3);  
  Serial.begin(9600);
} 
 
void loop() 
{ 
  base = analogRead(A0);

  Serial.println(base);

 analogRead(base);

  if (base < 580)
  myservo.write(150); // rotazione oraria

 if (base=580)
 myservo.write(90); //fermo

 if (base> 580)
 myservo.write(30);  //rotazione antioraria
  }

ciao dagi_95 e benvenuto.
per prima cosa dai un’occhiata al REGOLAMENTO e al tred dove ci si PRESENTA.
poi guardando il tuo sketch questa cosa:

analogRead(base);

non ha senso (e non serve).
poi quando dici

però il servo gira a scatti…

non è chiaro il problema; sicuramente il servo continuerà ad andare avanti e indietro quando il potenziometro è vicino a 580 perchè le letture analogiche normalmente oscillano anche di 1 o 2 punto quindi la condizione

if (base=580)
 myservo.write(90); //fermo

fermerà il servo solo per un attimo.
Ti conviene dare lo stop in un range di valori esempio:

if (base>580 && base<590)
 myservo.write(90); //fermo

ciao
pippo72

p.s. non so se i valori che dai al myservo.write sono corretti
p.p.s anche così potrebbe oscillare se il valore del pot è vicino a 580 o 590. devi aggiungere un’isteresi software

OCCHIO

if (base=580)

viene accettato ma è una ASSEGNAZIONE, da quel if base vale 580

Questo invece è un test con doppio uguale ==

if (base==580)

Grazie del vostro aiuto !! Adesso ho risolto mettendo un isteresi. però ho un nuovo problema, ho collegato agli input analogici 4 potenziometri lineari da 10k alimentati dal pin 5v di arduino. il mio problema è che quando giro un solo potenziometro variano anche gli alti valori degli altri potenziometri... Avete qualche soluzione da propormi?

La soluzione è molto semplice: butta via la prima lettura e tieni buona la seconda. se tu fai

lettura1 = analogRead(A1);
lettura2 = analogRead(A2);
lettura3 = analogRead(A3);
lettura4 = analogRead(A4);

tutte le letture avranno lo stesso valore, credo sia un errore dell'atmega328. se tu fai:

lettura1 = analogRead(A1);
lettura1 = analogRead(A1);
lettura2 = analogRead(A2);
lettura2 = analogRead(A2);
lettura3 = analogRead(A3);
lettura3 = analogRead(A3);
lettura4 = analogRead(A4);
lettura4 = analogRead(A4);

la prima lettura non la utilizzi e tieni buona la seconda.

ciao pippo72