Partage
  • Partager sur Facebook
  • Partager sur Twitter

Remplacer la fonction "delay" en "millis"

Besoin de votre aide !

    24 mai 2019 à 11:19:59

    Bonjour à tous,

    Dans le cadre d'un projet professionnel je monte un banc d'essai pour tester des écrans. Le but étant de vérifier qu'ils n'aient pas de problème lors de coupures de courant répétitves. J'ai alors piloté avec un Arduino UNO 4 relais (d'un schield) qui serviront d'interupteur pour couper automatiquement le courant de mes 4 écrans en test. Les relais sont fermés séparément (interval de 5s) pour éviter de faire sauter l'alim avec le pic de courant au démarrage.

    J'ai aussi ajouté un écran LCD (20x4) affichant un compteur permettant de savoir le nombre de coupures éffectuées sur les écrans.

    Mon problème est le suivant : je souhaiterais remplacer les "delay()" par des "millis()" dans le but d'ajouter des boutons poussoirs qui seraient lu tout au long du programme avec la fonction "millis()" contrairement à la fonction "delay()" qui empecherait la lecture du bouton à tout moment.

    N'ayant maintenant que quelques jours d'experience de programmation j'aurai besoin de votre aide.

    Merci par avance

    #define TEMPO1 (5000) //activation progressive des relais
    #define TEMPO2 (60000) //temps pendant lequel les relais seront fermés (tempsd'alimention)
    #define TEMPO3 (10000) //temps pendant lequel les relais seront ouverts (temps de coupure)
    
    //declaration du nombre de pin aux quels sont reliés les relais
    int relaisno1 = 6;
    int relaisno2 = 7;
    int relaisno3 = 8;
    int relaisno4 = 9;
    
    #include <LiquidCrystal.h> //inclusion de la bibliothèque LiquidCristal
    LiquidCrystal monEcran(12,11,5,4,3,2); //définission de l'objet
    
    int compteur = 0; //initialisation du compteur
    
    
    void setup() {
          pinMode(relaisno1, OUTPUT); 
          pinMode(relaisno2, OUTPUT); 
          pinMode(relaisno3, OUTPUT); 
          pinMode(relaisno4, OUTPUT);
          monEcran.begin(20,4); //initialisation de la communication
          monEcran.clear(); //on efface l'écran
    }
    
    void loop() {
          monEcran.print("Nombre de coupures");
          monEcran.setCursor(0,2);
          monEcran.print(compteur);
          
          //commande de désactivation
          digitalWrite(relaisno1,HIGH);
          digitalWrite(relaisno2,HIGH);
          digitalWrite(relaisno3,HIGH);
          digitalWrite(relaisno4,HIGH);
          delay(TEMPO3);
          
          digitalWrite(relaisno1,LOW); //activation du relais n°1
          delay(TEMPO1);
          
          digitalWrite(relaisno2,LOW); //activation du relais n°2
          delay(TEMPO1);
            
          digitalWrite(relaisno3,LOW); //activation du relais n°3
          delay(TEMPO1);
          
          digitalWrite(relaisno4,LOW); //activation du relais n°4
          delay(TEMPO2);
          
          compteur++; //ajout +1 au compteur à la fin de chaque cycle permet de savoir le nombre de coupure réalisées
          
          monEcran.clear(); //on efface l'écran
    }
    


     

    -
    Edité par VincLd 24 mai 2019 à 14:00:47

    • Partager sur Facebook
    • Partager sur Twitter

    Remplacer la fonction "delay" en "millis"

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown