Arduino : int tension = 0; ou int tension; ?

Résolu
sXchX -  
 sXchX -
Bonjour à tous,
je pratique en ce moment la programmation sur une carte Arduino. Lorsque je défini une variable "tension" par exemple, quelle est la différence entre " int tension = 0; " et " int tension; " ?

3 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    je suppose que tu programmes en C.
    int tension;
    déclare une variable dont la valeur initiale est indéterminée.
    int tension = 0;
    déclare une variable dont la valeur initiale est 0.
    0
    1. sXchX
       
      Mon problème étant que je fais un programme afin d'envoyer et de mesurer une tension sur ma carte Arduino. Je n'arrive pas à, lorsque je rentre une valeur de tension dans le moniteur série, l'enregistrer. Au lieu de ça la valeur revient à 0 à la mise à jour suivante.
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > sXchX
       
      l'anomalie vient peut-être d'une autre ligne de ton programme.
      0
    3. sXchX > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Voici mon programme : (Arduino Due)

      unsigned int tension = 0;
      int calcul = 0;
      int pin = 3;

      void setup()
      {
      Serial.begin(115200); //Démarrage de la communication série
      }
      void loop()
      {
      Serial.print("Entrez une tension entre 0 et 5V \n"); //On écrit "Entrez une tension entre 0 et 5V" dans le moniteur série

      while(Serial.available() == 0); //Tant qu'il n'y a rien de saisi dans le moniteur:

      tension = Serial.read(); //On lit la valeur analogique saisie dans le moniteur
      tension = Serial.parseInt(); //On l'enregistre
      delay(2000); //Délai de mise à jour du moniteur

      Serial.print("La tension est "); //On écrit "La tension est :"
      Serial.println(tension); //On va à la ligne et on écrit la valeur analogique de la tension (entre 0 et 5V)

      calcul = (tension * 4095 )/5; //Calcul de la valeur numérique

      Serial.print("Image tension est : "); //On écrit "image tension est"
      Serial.println(calcul); //On va à la ligne et on affiche la valeur numérique (entre 0 et4096)

      analogWrite(pin, calcul); //On attribue la valeur "calcul" au pin (broche)
      }
      0
    4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > sXchX
       
      merci d'utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

      tu ne nous expliques pas ce qu'affiche ton programme.

      je suis étonné par ces deux lignes:
      tension = Serial.read(); 
      tension = Serial.parseInt();


      qu'essaies-tu d'y faire?
      0
    5. sXchX > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      La première ligne sert à lire ce que je saisi dans le moniteur série et la deuxième est censé l'enregistrer. Le programme doit me permettre d'incorporer un voltage précis dans le pin 3 et de la mesurer.
      Excusez moi mais qu'est ce que les balises de code ?
      0
  2. seb77150 Messages postés 6285 Date d'inscription   Statut Membre Dernière intervention   500
     
    Salut, int tension = 0 tu attribue la valeur 0 à la variable tension et pour la deuxième int tension; je ne vois pas trop l'intérêt

    0
  3. georges97 Messages postés 14615 Date d'inscription   Statut Contributeur Dernière intervention   2 935
     
    Bonjour,

    int tension-0 est une déclaration et initialisation de variable (à la valeur 0 ou autre)

    int tension n'est que la déclaration de type. La valeur est indéterminée pour ne pas dire aléatoire puisqu'elle peut prendre le contenu de l'adresse où elle est stockée par le programme.

    Si vous ajoutez une ligne tension=0, cela revient à créer en deux temps ce que vous auriez pu faire en une instruction.

    Ceci dit, si vous définissez la variable et en changez la valeur dans un bloc ou une fonction, c'est la nouvelle valeur, par exemple tension=5, qui est prise en compte, et perdue dès que vous sortez du bloc ou de la fonction.

    C'est ce qu'on appelle la portée de la variable.

    Dans ce cas, tension revient à la valeur initiale (0 ou autre)

    Si vous voulez utiliser le résultat de a fonction, il faut faire un return tension et l'affecter à une autre variable.

    Attendre les compléments ou infirmations d'autres intervenants plus qualifiés.
    0
    1. georges97 Messages postés 14615 Date d'inscription   Statut Contributeur Dernière intervention   2 935
       
      Bonjour yg_be,

      Désolé, j'ai mis trop longtemps à rédiger et n'ai pas vu ta réponse avant de valider;

      Je te laisse la main.
      0
      1. sXchX > georges97 Messages postés 14615 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Merci quand même pour votre réponse !
        0