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
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.