Partage
  • Partager sur Facebook
  • Partager sur Twitter

Calcul programme Arduino

Convertisseur heure-millisecondes

    25 mars 2020 à 23:22:28

    Voilà, j'essaye de créer un timer, pour ça je programme d'abord un convertisseur d'heure en millisecondes (voilà le code en-bas ça correspond aux premières lignes). Quand je lance le convertisseur pour 1 heure le résultat est : -4480. Pourquoi ? Merci beaucoup de vos réponses et désolé si ça vous paraît logique...
    //Time
    int tempoActive = 0;
    unsigned long tempoDepart = 0;
    int t = 50;
    int heure = 1;
    int timer = heure * 3600000;
    
    
    boolean boo;
    // LED
    const int LED1 = 13;
    const int LED2 = 7;
    const int LED4 = 4;
    const int LED3 = 8;
    const int LED5 = 12;
    
    
    void setup() {
      Serial.begin(9600);
      boo = true;
      pinMode(13,OUTPUT);
      pinMode(7,OUTPUT);
      pinMode(4,OUTPUT);
      pinMode(8,OUTPUT);
      pinMode(12,OUTPUT);
    
    }
    
    void loop() {
      tempoActive = true;
      tempoDepart = millis();
      Serial.println(timer);
    
      if(tempoActive){
        if (tempoDepart >= 3000){
        digitalWrite(LED1,HIGH);
            delay(t);
            digitalWrite(LED1,LOW);
            delay(t);
      
            digitalWrite(LED2,HIGH);
            delay(t);
            digitalWrite(LED2,LOW);
            delay(t);
    
            digitalWrite(LED3,HIGH);
            delay(t);
            digitalWrite(LED3,LOW);
            delay(t);
    
            digitalWrite(LED4,HIGH);
            delay(t);
            digitalWrite(LED4,LOW);
            delay(t);
    
            digitalWrite(LED5,HIGH);
            delay(t);
            digitalWrite(LED5,LOW);
            delay(t);
        
          
        }
    
      }
    • Partager sur Facebook
    • Partager sur Twitter
      26 mars 2020 à 0:13:02

      int timer = heure * 3600000;
      

      Si les int sont codés sur 16 bits, ton calcul va vite dépasser la capacité maxi de celui-ci.

      • Partager sur Facebook
      • Partager sur Twitter
        26 mars 2020 à 0:51:56

        zoup a écrit:

        int timer = heure * 3600000;
        

        Si les int sont codés sur 16 bits, ton calcul va vite dépasser la capacité maxi de celui-ci.

        Merci beaucoup, il y'a une solution ?

        • Partager sur Facebook
        • Partager sur Twitter
          26 mars 2020 à 1:41:03

          Oui, les long, ou unsigned long si tes nombres sont toujours positifs
          • Partager sur Facebook
          • Partager sur Twitter
            26 mars 2020 à 11:01:13

            AlvaraFerlo a écrit:


            //Time
            // LED
            const int LED1 = 13;
            const int LED2 = 7;
            const int LED4 = 4;
            const int LED3 = 8;
            const int LED5 = 12;
            
            
            void setup() {
              Serial.begin(9600);
              boo = true;
              pinMode(13,OUTPUT);
              pinMode(7,OUTPUT);
              pinMode(4,OUTPUT);
              pinMode(8,OUTPUT);
              pinMode(12,OUTPUT);
            
            }
            

            C'est bien la peine de définir des constantes...

            • Partager sur Facebook
            • Partager sur Twitter
              26 mars 2020 à 13:28:04

              zoup a écrit:

              Oui, les long, ou unsigned long si tes nombres sont toujours positifs


              merci beaucoup ! je vais tester
              • Partager sur Facebook
              • Partager sur Twitter
                26 mars 2020 à 15:21:29

                C'était d’ailleurs utilisé à la ligne 3 ...
                • Partager sur Facebook
                • Partager sur Twitter

                Calcul programme Arduino

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                • Editeur
                • Markdown