problema con servomotore

ciao a tutti ragazzi ho un problema da porvi ho copiato il codice dal libro " il manuale di arduino" per far funzionare un servomotore ma quando collego tutto e faccio partire arduino il servo parte e nn si ferma più e neanche con la porta seriale riesco a manovrarlo
ho anche inserito una pausa di 5 sec per farlo fermare ma non funziona nemmeno questo.
vi chiedo aiuto e vi ringrazio anticipatamente.

PS. potrebbe essere xke i file me li compila in .ino invece di .pde? potrebbe darmi problemi questa differenza x altre cose?

ciao in che senso lo vuoi fermare?
ti basta fare delle pause tra un azione e l altra?
void loop()
{
{
delay(300);tempo di pausa
}
for(pos = 0; pos < 6; pos += 1) angolo
{
myservo.write(pos);
delay(10);
}
{
delay(3000);
}
for(pos = 6; pos>=1; pos-=1)
{
myservo.write(pos);
delay(10);
}
}

cosi mi sono confuso di più xke il codice che ho usato e totalmente diverso

#include <Servo.h>

const unsigned int MOTOR_PIN = 9;
const unsigned int MOTOR_DELAY = 15;
const unsigned int SERIAL_DELAY = 5;
const unsigned int BAUND_RATE = 9600;
const int PAUSE = 5000;

Servo servo;

void setup() {
  Serial.begin(BAUND_RATE);
  servo.attach(MOTOR_PIN);
  delay(MOTOR_DELAY);
  servo.write(1);
  delay(MOTOR_DELAY);
}

void loop() {
  const int MAX_ANGLE = 10;
  char degrees[MAX_ANGLE +4];
  
  if (Serial.available()) {
   int i= 0;
    while (Serial.available() && i < MAX_ANGLE) {
     const char c = Serial.read();
     if ( c != -1 && c != '\n')
       degrees[i++] = c;
       delay(SERIAL_DELAY);
   }
   degrees[i] = 1;
   Serial.print(degrees);
   Serial.println("degrees.");
   servo.write(atoi(degrees));
   delay(MOTOR_DELAY);
   }
delay(PAUSE);
}

forse con il codice capisce meglio quello che voglio dire

Hai un delay(PAUSE) da 5 secondi, quindi in quei 5 secondi Arduino è bloccato in quel punto del codice.

ed e proprio questo il problema nn si ferma mai

In che senso il servo non si ferma mai ?
Un servo va ad una posizione tra 0-180 gradi e quando raggiunge quella posizione si ferma.
A meno che tu non stai usando un servo a rotazione continua, allora il valore che gli passi con write è la velocità ma quello quando inizia, gira di continuo.

Poi, sei sicuro di aver copiato bene il codice ? A me pare ci siano errori, vedi questo, ti pare uguale al libro?:

degrees[i] = 1;

Meglio poi rispetto al libro se lo scrivi così:

degrees[i] = '\0';    // terminatore stringa

Allora ho controllato il programma ed è identico l unica cosa che varia e delay che ho aggiunto che nn si fermava e cmq ho provato il codice cn seriale e cambiando numeri cambia velocità e verso ma lo avevo comprato come servomotore sei stato gentilissimo
posso chiederti adesso che differenza c è tra un codice scritto in .ino e .pde e grazie a tutti di nuovo :wink:

Nessuna differenza tra .ino e .pde Pde era la vecchia estensione nei vecchi IDE

Il programma NON è identico, perchè quel libro anche io c'e' l'ho.
E la riga sul libro è degrees[ i ]=0; e non = 1
Altrimenti hai una copia con un errore di battitura. Capita. Meglio però ='\0' rispetto a =0 come mette l'autore.