Programme pour controler un servomoteur avec télécommande DX7-Spectrum

Bonjour à tous les lecteurs, je vous expose mon programme qui n’exécute pas mon attente et je n’arrive pas à définir pourquoi.

Dans le cadre d’un projet de Terminale Sti2D, j’utilise un Servomoteur pour appuyer sur un bouton.
Donc, je récupère les valeurs reçu par mon récepteur de télécommande ( valeurs en mV) et je souhaite que pour chaque une des 3 valeurs ( Position 0 , Position 1 , Position 2 ) le programme exécute une commande. Voilà le Programme :

#include <Servo.h>                                          // Inclure Librairie SERVO
Servo servo1;                                               //Controle du servo-moteur Possibilité de mettre 12 servo-moteur
int pos = 0;                                                // variable pour la position du SERVO                                        
void setup() 
{ 
 servo1.attach(9);                                         // mettre le servo en position 9
 pinMode(A5,INPUT);

} 

void loop()
{
 {
 analogRead(5);
 if (A5=285.83);  //Position 0 Zéro mouvement aucune execution
 while(0);
 }
      {
       analogRead(A5);
       if (A5=227.20);                                           // Position 1
   
       for(pos = 0; pos <= 180; pos += 1)                        // Possibilité d'aller de 0° à 180°
       {                                                         // Avec une marge de 1°
       servo1.write(60);                                         // Dire au servo d'aller à la position 0
       delay(15);                                                // Attendre 15 ms 
       }
       
       for(pos = 180; pos>=0; pos-=1)                            // va de 180° à 0°
       {                               
       servo1.write(90);                                         // Dire au servo d'aller à cette positon
       delay(15);                                                //Attendre 15 ms pour atteindre la position
       }
       while(0);
      }
          {
           analogRead(A5);
           if (A5=168.60);                                           // Position 2
    
           for(pos = 0; pos <= 180; pos += 1)                        // Possibilité d'aller de 0° à 180°
           {                                                         // Avec une marge de 1°
           servo1.write(70);                                         // Dire au servo d'aller à la position 0
           delay(15);                                                // Attendre 15 ms 
           } 
           for(pos = 180; pos<=0; pos+=1)                            // va de 180° à 0°
           {                                
           servo1.write(60);                                        // Dire au servo d'aller à cette positon
           delay(15);                                               //Attendre 15 ms pour atteindre la position
            }
           for(pos = 0; pos>=180; pos -=1)
           {
           delay(15);
           servo1.write(90);
           delay(15);
           }
           while(0);
          }
}

Merci d’avance de m’aider à régler mon problème.
Vengeurd

je vous expose mon programme qui n'exécute pas mon attente

C'est pire que ça, ça compile pas du tout.

analogRead(5);

analogRead ne marche pas comme ça. Tu dois stocker le résultat dans une variable

ma_variable = analogRead(5);

De plus, analogRead ne renvoie que des valeurs entières

pinMode(A5,INPUT);

A5 est forcément une entrée donx cette ligne ne sert à rien.

while(0);

As tu compris cette ligne ?

if (A5=285.83);

Ca, c'est faux

T'as posté dans le mauvais forum. Mets ton code dans des balises code

Bonjour, 2 petites remarques sur ta question. 1) tu n'es pas dans la bonne rubrique, 2) le code doit être mis entre balises codes.

Solutions : 1) lire la charte du forum, 2) mettre le code entre balises codes mais où, ici 2) contacter un modérateur pour déplacer ton sujet. @+

Par exemple, je devrais donc mettre une commande comme celle-ci : A5 = analogRead(5); ?

Tu devrais relire entièrement cette page : http://arduino.cc/en/Reference/AnalogRead

Après lecture de http://arduino.cc/en/Reference/AnalogRead et voià ce que j’ai fait :

#include <Servo.h>                                          // Inclure Librairie SERVO
Servo servo1;                                               //Controle du servo-moteur Possibilité de mettre 12 servo-moteur
int pos = 0;                                              // variable pour la position du SERVO
int val = 0;
int analogPin = 5;
void setup() 
{ 
  servo1.attach(9);  // mettre le servo en position 9
  Serial.begin(9600);
} 
 
void loop()
{
  {
  val = analogRead(analogPin);
  if (val<295&&val>260);  //Position 0 Zéro mouvement aucune execution
   for(pos = 180; pos>=0; pos-=1)                            // va de 180° à 0°
   {                               
   servo1.write(90);                                         // Dire au servo d'aller à cette positon
   delay(15);                                                //Attendre 15 ms pour atteindre la position
   }
  }
       {
       val = analogRead(analogPin);
        if (val<250&&val>210);                                           // Position 1
    
        for(pos = 0; pos <= 180; pos += 1)                        // Possibilité d'aller de 0° à 180°
        {                                                         // Avec une marge de 1°
        servo1.write(60);                                         // Dire au servo d'aller à la position 0
        delay(15);                                                // Attendre 15 ms 
        }
        
        for(pos = 180; pos>=0; pos-=1)                            // va de 180° à 0°
        {                               
        servo1.write(90);                                         // Dire au servo d'aller à cette positon
        delay(15);                                                //Attendre 15 ms pour atteindre la position
        }

       }
           {
            val = analogRead(analogPin);
            if (val<190&&val>140);                                           // Position 2
     
            for(pos = 0; pos <= 180; pos += 1)                        // Possibilité d'aller de 0° à 180°
            {                                                         // Avec une marge de 1°
            servo1.write(70);                                         // Dire au servo d'aller à la position 0
            delay(15);                                                // Attendre 15 ms 
            } 
            for(pos = 180; pos<=0; pos+=1)                            // va de 180° à 0°
            {                                
            servo1.write(60);                                        // Dire au servo d'aller à cette positon
            delay(15);                                               //Attendre 15 ms pour atteindre la position
             }
            for(pos = 0; pos>=180; pos -=1)
            {
            delay(15);
            servo1.write(90);
            delay(15);
            }

           }
}
}

Problème, c’est lors de l’application du programme mon servo execute toutes les commandes. Pourquoi ?

Je me suis trompé, tu devrais relire toute cette page : http://arduino.cc/en/Reference

Mon professeur m'a conseillé de faire mon programme ainsi après je sais qu'il manque certaines choses mais je pense changer , au lieu d'utiliser des mV je pense utiliser les impulsions de mon recepteur

Et puis ce n'est pas en m'indiquant de relire arduino.cc/en/Reference que cela va m’aidai. Je connais la plupart des fonctions mais je n'arrive pas à toutes les comprendre ou les appliquer, il n'est pas vraiment nécessaire de me demander de relire une chose déjà lu et peut-etre mal compris et j'ai essayé d'appliquer les lignes que tu m'as donné

Qu'un demandeur rembarre quelqu'un qui fait l'effort de l'aider a toujours dépassé mon entendement. Un tel niveau de bêtise me sidère.

Une différence mon cher c'est que je ne le rembarre je lui dit simplement que me dire de relire ce que j'ai déjà et peut etre mal compris ne m'aidera pas plus. C'est pour çela que j'ai fait une demande sur ce forum pour avoir une aide concrète pas seulement me dire de lire sur un site, j'ai déjà essayer de comprendre avec d'autres sites comme Mon Club elec et d'autres encore.

c'est que je ne le rembarre je lui dit simplement

Manifestement nous n'avons pas la même culture, le ton employé n'est pas des plus aimable et des plus efficace pour obtenir une réponse.!

Un minimum de réflexion jeune homme ! C'est toi qui demande et en face il n'y a que des bénévoles, ne l'oublie pas. N'oublie pas aussi que le seul qui est en charge de l'enseignement c'est ton professeur et absolument pas nous.

Donc si un bénévole répond d'une manière qui choque ton ego tu choisis entre entre ton ego et obtenir une réponse. Si c'est obtenir une réponse, ton ego tu le met dans ta poche avec ton mouchoir par dessus.