Pages: [1]   Go Down
Author Topic: Arduino Uno en boucle sans moyen de l'arrêter  (Read 1763 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 3
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

je débute sur Arduino et j'ai fait un programme pour faire osciller un moteur qui semble boucler sans que je puisse reprendre la main sur le matériel.

Voici mon programme extrait d'un exemple dans lequel j'ai maladroitement modifié quelques valeurs numériques:

#include <Servo.h>
 Servo myservo;  
int pos = 0;

void setup()
{
  myservo.attach(9);
}
 
void loop()
{
  for(pos = 100; pos < 150; pos += 10)
  {            
    myservo.write(pos);  
    delay(30);    
  }
  for(pos = 150; pos>=100; pos-=10)
  {                                
    myservo.write(pos);
    delay(30);
  }
}

Clairement je crois voir que les 30ms sont insuffisantes et ne lui laissent pas le temps nécessaire à faire le mouvement, donc il repart direct dans l'autre sens etc.

depuis le moteur oscille de moins de 50° (comme demandé), à grande vitesse sans que je puisse charger quoique ce soit d'autre. (comme un programme qui ne fait rien)
L'appui sur le bouton Reset le fait s'arrêter, mais il reprend de plus belle quelques secondes après.

Quelle serait la procédure pour faire un RAZ ?

Merci de votre aide.
R2
Logged

Central Europe
Offline Offline
Edison Member
*
Karma: 6
Posts: 1220
Use the Source, Luke.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Charge un autre programme. Blink par exemple.

Korman
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 90
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

C'est simple, la fonction loop() est une boucle qui reprend indéfiniment.
Essaye de limiter le nombre d'oscillations,  un truc du style
Code:
#include <Servo.h>
Servo myservo;  
int pos = 0;
int loop = 5;

void setup()
{
 myservo.attach(9);
}

void loop()
{
if(loop <= 5){
 for(pos = 100; pos <= 150; pos++)
 {            
   myservo.write(pos);  
   delay(30);    
  }
  for(pos = 150; pos>=100; pos--)
  {                                
   myservo.write(pos);
   delay(30);
  }
}

loop++;
}

Sinon, reste les interruptions
« Last Edit: December 01, 2010, 06:21:01 am by erlik » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 3
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'essaye bien de charger un autre programme comme Blink, mais il ne veut rien savoir.
Il reste sur "Uploading to I/O Board..." sans me redonner la main, ni rien charger.
Comment le remettre à 0 ?
Thanks
R2
Logged

Sophia-Antipolis (06)
Offline Offline
God Member
*****
Karma: 4
Posts: 618
Rejoignez le club !
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Est-ce que tu as bien débranché le servomoteur avant d'essayer de reprogrammer l'Arduino ?

Sinon, effectivement 30 millisecondes ce n'est pas suffisant puisque le signal de position est envoyé au servo toutes les 20 millisecondes.

Avec ton code, il devrait passer de 100 à 150 en 5 tour soit en 150 millisecondes. Donc on lui demande de faire 50° en 150 millisecondes alors que généralement un bon servo fait 300 millisecondes pour 60°, souvent plus, genre 800 ms.
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 29
Posts: 3196
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Nan mais il arrive même pas à réuploader un programme dessus !!

R2, le ptit bouton sur la carte c'est le reset. Branche ta carte, lance l'upload et appuie sur le bouton  smiley-wink
Logged


0
Offline Offline
Newbie
*
Karma: 0
Posts: 3
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hourra !

il faut effectivement recharger un programme (style blink) en appuyant sur reset,
il faut juste refaire l'opération x fois pour que le timing soit correct.

bref on s'en sort ainsi,
merci à vous pour votre guide précieux dans ce moment difficile.

Pour info,
Nous sommes sur la construction d'un robot delta et ce sont les débuts un peu laborieux.
Aujourd'hui donc un des 3 bras est actionné.

Merci encore
R2
Logged

Pages: [1]   Go Up
Jump to: