potenziometro pilota servosterzo

partiamo con un buongiorno a tutti i lettori!
mi chiedevo se fosse possibile(anzhe se non trovo via di uscita) nel creare un servosterzo pilotato da un trimmer:
-che dovrebbe avere valore positivo(0 to 180) per meta giro del servomotore
-e l'altra meta' giro con valori negativi(0 to -180) per l'altra meta giro.. ho provato mettere controlli che evidentemente non funzionano, qualcuno ha una soluzione? allego il code del tentato insueccesso:

#include <Servo.h>
Servo ServoMotore;

int i;

void setup() {// put your setup code here, to run once:
  ServoMotore.attach(9);
  pinMode(A0,INPUT);
  Serial.begin(9600);
}

void loop() { // put your main code here, to run repeatedly:

unsigned long media=0,totale=0;
for(i=0;i<25;i=i+1)
  {totale=totale+analogRead(A0);}
    media=totale/25;
    media=map(media,0,1023,0,360);

if(media>180)
  {
 
    media=map(media,0,360,0,180);                                                                        
    ServoMotore.write(media);
    delay(20);
  }                                                                                                    
    else
  {
   
    media=map(media,0,360,0,-180);
    ServoMotore.write(media);
    delay(20);
  }
 
Serial.println(media);
delay(50); }

grazie a tutti in anticipo!

ps il progetto voleva essere mirato ad usare un potenziomentro e basta :slight_smile:

Non capisco. Hai un servo che puó essere pilotato da 0 a 360 con valori da -180 a 180?
Quanto ne so io il pilotaggio di un servo va da 0 a 180.

if(media>180)
  {
 
    media=map(media,0,360,0,180);

da valori tra 90 a 180

else
  {
   
    media=map(media,0,360,0,-180);

da valori tra 0 a -90

Ciao Uwe

uwefed:
Non capisco. Hai un servo che puó essere pilotato da 0 a 360 con valori da -180 a 180?
Quanto ne so io il pilotaggio di un servo va da 0 a 180.

Ciao Uwe

ciao uwe, il fatto e' che da in positivo muove di 180°(0 to 180) come valori in ingresso analog
mentre per gli altri 180° torna a posizione 0 e fa(0 to -180) per completare il giro in senso opposto e fare una somma totale di 360°.

  • ho letto in giro per forum il comando abs che dovrebbe darmi i valori negativi..
    -ho provato a moltiplicare *-1
    ma niente di tutto cio' mi fa ottenere risultati.
    ps il mappare il risultato negativo
    es media=map(media,0,360,0,-180) non funziona, se printo il valore escono cose assurde come cifre

Ma che servo hai e con che valori lo puoi pilotare?

Ciao Uwe

uwefed:
Ma che servo hai e con che valori lo puoi pilotare?

Ciao Uwe

dunque il servo e' il TowerPro tm sg90 ma i valori con cui pilotarlo, non li ho controllati, sinceramente non sapevo variassero da servo a servo, ho preso a riferimento semplicemente le informazioni che ho trovato nei vari post.

Il servo SG90 ha una escursione totale di 180°. La libreria Servo.h prevede di pilotare la sua posizione con il comando: "ServoMotore.write(ANGOLO)". ANGOLO può assumere valori da 0° a 180° circa, perché non raggiunge proprio 0° e 180°.

Tu non potrai MAI far compiere un giro completo (360°) a quel servo, ma solo una escursione di 180°. Il tuo potenziometro quindi da una estremità all'altra potrà pilotare il servo e posizionarlo da 0° a 180° (sempre circa).

Ora questi 180° te li puoi giocare come vuoi. Per esempio puoi chiamare la rotazione totale a sinistra del potenziometro -90° e la rotazione totale a destra (sempre di quel potenziometro) +90°.

Mettila come ti pare, ma sono sempre 180° in totale.

Ci sono esempi allegati alla libreria Servo.h, vedi se ce n'è uno che fa per te, oppure specifica meglio cosa vuoi fare.

Ciao,
P.