Servo si sposta all'accensione

Ciao a tutti!

Innanzitutto grazie di questo forum e della semplicità e potenzialità che Arduino offre!
Detto questo, ho bisogno di aiuto in quanto neofita quasi assoluto...

Ho creato uno scketch per attivare con un tasto una rotazione + accensione led.

Tutto +/- corretto tranne il fatto che all'accensione il servo si sposta di qualche rado per poi fermarsi.

Come mai accade questo? Sbaglio qualcosa?

Vi posto il link alla simulazione:

Grazie mille per l'aiuto!

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 il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

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

Fatto! Scusate :slight_smile:

Immagino tu stia usando il codice che vedo in quella simulazione …

// Sweep
// by BARRAGAN 
// This example code is in the public domain.

#define LED 13 
#define BUTTON 7
#include <Servo.h>

Servo myservo;


int pos = 0;
int  val = LOW;  

void setup()
{
  myservo.attach(4);
   pinMode(LED, OUTPUT);     // imposta il pin digitale come output
   pinMode(BUTTON, INPUT);
  Serial.begin(9600);
  myservo.write(pos-5);
}
 
void loop()
{
  val = digitalRead(BUTTON); 
  Serial.println(val);
 
  if (val == LOW)
  {}
  if (val == HIGH) {
    for(pos = 0; pos < 90; pos += 1)
    {

      myservo.write(pos);
      digitalWrite(LED, HIGH); 
      delay(150);
      digitalWrite(LED, LOW);
       delay(150);
    }
    for(pos = 90; pos>=1; pos-=1)
    {
      myservo.write(pos);
      delay(15);
    }
  }  
}

… se è così, è normale, guarda nel setup() e ti accorgerai che fa un myservo.write(pos-5); e quindi cambia la posizione all’avvio del programma … ::slight_smile:

Guglielmo

Ciao.
Si, scusa era un refuso.

Però anche scrivendo:

myservo.write(0);

ho lo stesso spostamento...

Se non vuoi spostamenti devi proprio levarla quella riga ... altrimenti, comunque, richiedi un "posizionamento".

Guglielmo

Ti ringrazio.

Però anche se la levo, sembra che comunque il punto "0" del servo sia in realtà sempre spostato di poco. Come posso fare invece a farlo partire "fermo" e poi spostare di 90 gradi esatti dopo?

be ma quando parti dovrai ben azzerare la posizione
altimenti come fai a sapere dove era rimasto quando l'hai spento