Problématique De La Fonction Delay | - Bac STI 2D
Maybe your like
- Bac STI 2D
- I2D (1ère)
- MEO1.4: La bouteille en verre : étude du cycle de vie à travers divers scénarios
- Mise en situation
- Étape 1: découverte de la méthode (scénario simplifié)
- Étape 2 : le tri sélectif
- Étape 3 : amélioration de la précision des calculs
- Étape 4 : la consigne, une alternative au recyclage
- Étape 5: tentative de construction d’un scénario réaliste à court terme
- Étape 6: imaginons un scénario idéal et …. réaliste
- S1 : révisions
- Exercice: impact environnemental (ecolizer)
- Chaise alu ou chaise plastique?
- Exercice: ACV de l'alimentation (agroalimentaire)
- Exercice: ACV d'un gobelet
- Méthodologie
- Les scénarios
- Résultats
- Questions
- QCM (test des connaissances)
- Exercice: impact environnemental (ecolizer)
- D2.1 : lecture de plans architectural
- Partie N°1 : lecture de plans
- Partie N°2 : analyse de la notice et des éléments indiqués sur les différents plans
- Ressources
- plans
- Cours sur le dessin d'architecture
- B.E.C. thermodynamique
- Assainissement / Tout à l'égout
- VMC et puit canadien
- D2.2: schématisation électrique 1
- Installation domestique
- Installation industrielle
- Ressources
- Bibliothèques de symboles
- Fonctionnement de quelques appareils électriques
- D2.3: liaisons cinématiques (découverte)
- I. Les contacts
- II. Les liaisons
- III. la representation des liaisons
- MEO 2.2: schéma cinématique
- I. Méthodologie et rappels
- II. Entrainement: le coupe tube
- III. Application à partir d'un plan: pompe
- IV. En bonus: un système réel
- MEO 2.3 Le schéma pneumatique
- I. Introduction
- II. Simulations
- III Caractéristiques du matériel pneumatique
- IV En bonus : modification d’un schéma pneumatique
- S2 : révisions
- Exercice N°1: schéma électrique (industriel)
- Exercice N°2: schéma cinématique
- Exercice N°3 : schéma électrique (bâtiment)
- Exercice N°4: lecture plan bâtiment
- Exercice N°5: schéma pneumatique
- QCM (test des connaissances)
- D3.1: chaîne de puissance
- I. Généralités sur les énergies
- II. Identification des blocs fonctionnels
- III. Chaîne d’énergie du Buggy
- IV. Chaîne d’énergie du portail FAAC
- V. Chaîne d’énergie du volet Velux
- D3.2: portail SET
- Généralités / Questions
- Questions : Etude de la batterie
- Panorama des différentes technologies
- D3.3: l'énergie thermique
- I. Expérimenter l’inertie thermique d’un matériau de construction
- II. Étudier les transferts thermiques
- III. Étudier l’inertie thermique
- D3.4: Voiture Radio commandée
- MEO 3.2: Zoe vs Clio
- I. Généralités
- II. Travail sur les puissances
- III. Approche énergétique globale
- IV. En bonus: pour aller plus loin
- Documentation techniques
- Rappels de physique
- MEO 3.3 La Nano Centrale
- Energie hydraulique d'une nano centrale
- S3 : révisions
- Exercice N°1: rendements
- Exercice N°2: chaîne de puissance
- Exercice N°3 : électricité
- Exercice N°4: thermique
- Exercice N°5: solaire photovoltaïque
- Exercice N°6: chaîne de puissance 2
- QCM (test des connaissances)
- MOE 4.1 : Dimensionnement de structures
- Partie 1 : généralités
- Partie 2: descente de charge
- Partie 3 : compléments (suite)
- ressources et docs techniques
- MEO 4.2: les frottements - N°2
- I. Principes et généralités
- II. Les lois de Coulomb
- III. Application à la brosse du tableau
- IV. Expérimentation numérique
- En bonus: patin tracté
- S4 : révisions
- Exercice N°1: petits exercices
- Exercice N°2: toit d'un stadium
- Exercice N°3: VTT
- Exercice N°4 : descente de charge
- QCM et petits exercices
- D5.1: caractérisation de l'analogique
- I. Découverte d’un signal analogique et de ses caractéristiques
- II. Signal analogique réel résultant d’une mesure (d'un capteur)
- III. Exemple de signal analogique : le son (Notion de note, fréquence et spectre)
- D5.2 : binaire et numération
- I. Le binaire
- II. L'hexadécimal
- D5.3 : logique combinatoire
- I. Fonctions logiques
- II. Propriétés du binaire et de l'algèbre de Boole
- III. En option: la mémorisation (découverte)
- IV. En option: petit exercice d'application
- D5.4: les capteurs
- Introduction
- Les capteur TOR
- Les capteurs mécaniques ou interrupteurs de position
- Les capteurs de proximité ILS
- Les capteurs de proximité inductifs
- Les capteurs de proximité capacitifs
- Mise en œuvre des capteurs de proximité
- Les capteurs photoélectriques
- Système barrage
- Système reflex
- Système proximité
- Les capteurs analogiques
- Les capteurs potentiométriques
- Capteurs numériques : Les codeurs rotatifs
- Codeur incrémental
- Codeur absolu
- Ressources complémentaires
- MEO 5.1 : la Conversion Analogique Numérique
- 0. Introduction et mise en situation
- I. La conversion A/N
- II. L’utilisation d’une conversion A/N : analyse de l’impact de la fréquence d’échantillonnage.
- III: Bonus: codage du fichier
- MEO 5.2 : la conversion numérique - analogique
- I. Simulation d’un convertisseur Numérique/Analogique
- IV. Mais comment ça fonctionne ?
- MEO 5.3: Filtrage
- IV. D’autres applications de filtrage
- MEO 5.4 : la stéganographie
- I. Découverte de la stéganographie
- II. Qu’est-ce qu’une image numérique ?
- III. Analyse de notre stéganographie
- IV. En bonus : plus discret, plus fort !
- S5 : révisions
- caractérisation de l'analogique
- Numération
- Logique combinatoire
- CAN et CNA
- Capteurs
- Filtrage
- QCM (test des connaissances)
- S6: présentation
- D6.1: outils de représentation d’un programme
- Découverte et/ou révisions
- Exercice N°5: recherche nombre
- Exercice N°6: écluse
- Exercice N°7: barrière
- Exercice N°8: store
- D6.2: matériel de traitement de l'information
- Les questions
- I. Les microcontrôleurs
- II. Arduino
- III: Raspberry Pi
- D6.3: Flowcode
- I. Introduction, rappels et découverte du matériel
- II. Découverte du logiciel Flowcode
- III. Clignotement d'une Led
- IV. Pour aller plus loin: le Chenillard
- MEO 6.1 : découverte de la programmation informatique
- Présentation
- Fiche N°1: découverte du système Arduino
- Fiche N°2 : les variables
- Fiche N°3 : la boucle « FOR »
- Fiche N°4 : le test « IF » (+ bouton poussoir)
- Fiche N°5 : gestion d'une entrée analogique
- Fiche N°6 : les fonctions ou « sous-programmes »
- Fiche N°7 : la boucle « While »
- MEO 6.2: Réalisation d'une page Web en HTML
- 1. Généralités
- 2. Première page simple
- 3. Site avec plusieurs pages
- 4. Mise en forme du texte html avec le CSS3 ( Cascading Style Sheets version 3)
- 5. En bonus
- S6 : révisions
- Partie 1 : révision des structures algorithmiques
- Partie 1 (suite) : révision des structures algorithmiques
- Partie 2 : création d'algorithmes ou d'algorigrammes
- Partie 3 : matériel de traitement de l'information
- Partie 4 : révision de la programmation (structures algorithmiques, variables, …) à partir de programmes Arduino
- Partie 5: HTML
- QCM (test des connaissances)
- MEO1.4: La bouteille en verre : étude du cycle de vie à travers divers scénarios
- Travail sur mon choix de spécificité pour la terminale
- L'enseignement technique en STI2D
- Les enseignements spécifiques
- Architecture et construction
- Energie Environnement
- Innovation technique et EcoConception
- Système d'information et Numérique
- Mon diaporama
- L'oral d'orientation
- Diaporama (parents et élèves)
- 2I2D (terminale)
- PAC
- Chaleur sensible et chaleur latente
- Compléments sur les notions de chaleur sensible et latente
- Pression de vapeur et diagramme enthalpique :
- Le cycle du fluide frigorifique dans une PAC
- Mesures
- PAC
- TP de terminale STI2D - SIN
- Thème N°1 / Environnement de prototypage Arduino
- Etape N°1 : révisions et compléments sur la programmation informatique à l'aide d'Arduino
- Présentation
- Le système Arduino
- Rappels sur les variables
- Les fonctions ou « sous-programmes »
- La boucle « FOR »
- Le test « IF » (+ bouton poussoir)
- Gestion d'une entrée analogique
- La boucle « While »
- Gestion d'un afficheur 7 segments
- Etape N°2: cafetière 2.0
- Prototype de cafetière 2.0
- En bonus: programmes complémentaires
- programmes
- Thème n°1 : révisions
- QCM (simple) de révision
- Exercices de révision
- Etape N°1 : révisions et compléments sur la programmation informatique à l'aide d'Arduino
- Thème N°2 / réseaux et communication informatique
- AP2.1 : Réseaux informatiques
- Présentation du logiciel
- I. Un premier petit réseau
- II. Le suivi des trames / le mode simulation
- III. Petit point "matériels"
- IV. Paramétrage d'un routeur
- V. Le masque de sous réseau
- VI. Réseau avec concentrateurs (hubs) et commutateurs (switchs)
- VII. Deux réseaux interconnectés avec un routeur
- VIII. Configuration automatique des adresses IP (DHCP)
- IX. Gestion des DNS (Domain Name System)
- X. Gestion de VLANs (réseaux virtuels)
- XI. Réseau de notre "pépinière d'entreprises"
- XII. En bonus : paramétrage d'un réseau plus complexe
- AP2.2 : Serveur linux
- I. Présentation du Raspberry Pi et de son environnement
- II. Quelques commandes linux
- III. Votre site internet sur le serveur
- IV. Pour aller plus loin avec les commandes linux
- AP2.3: trames et communication (Wireshark)
- I. La commande Ping
- II. Utilisation de Wireshark
- III. La couche Ethernet
- IV. La couche Internet Protocol (IP) :
- V. La couche ICMP (Internet Control Message Protocol)
- VI. Exercices
- VII. La couche TCP
- VIII. La couche HTTP
- IX. La couche HTML
- X. Exercices
- XI. Address Resolution Protocol
- XII. Exercices:
- Thème N°2: bilan & exercices de révision
- numération (révision et exercices)
- Réseau (exercices)
- Serveur/ordi sous linux (exercices)
- Analyse d'une trame (exercices)
- AP2.1 : Réseaux informatiques
- Thème N°3: programmation informatique (Python)
- I. Présentation de la carte micro:bit
- II. Logiciels
- III. Partie N°1 : découverte de la carte micro:bit
- IV. Partie N°2 : parlons Python !
- V. Application à notre vélo 2.0
- VI. En bonus et pour aller plus loin
- Thème N°3: Révisions sur Python
- Exercices sur Python
- Thème N°4 / Environnement web
- AP N°4.1: Réalisation d'une page Web en HTML
- 1. Généralités
- 2. Première page simple
- 3. Site avec plusieurs pages
- 4. Mise en forme du texte html avec le CSS3 ( Cascading Style Sheets version 3)
- 5. En bonus
- AP N°4.2: Découverte de la programmation PHP (sites internet)
- Partie 1 : découverte du langage PHP
- Partie 2 : gestion d'un petit site de 2 pages en PHP
- Partie 3 (bonus): application réelle au site de la section STI 2D – SIN
- AP N°4.3: les bases de données (MySQL) et PHP
- Partie 1 : arduino en mode serveur
- Partie 2.1 : qu'est-ce qu'une base de données ?
- Partie 2.2 : arduino en mode client
- Thème N°4: Révisions Web
- QCM (simple) de révision
- Exercices de révision
- AP N°4.1: Réalisation d'une page Web en HTML
- Thème N°5: traitement du signal
- AP5.1: Montages électroniques élémentaires
- I. Brève présentation du logiciel de simulation Proteus
- II. Premiers montages : rappel sur les résistances, les tensions et les courants
- III. Le condensateur
- IV. Montage à led
- AP5.2 : Montages électroniques à base de diodes, transistors et AOP
- I. Montage à diode Zener: montage stabilisateur de tension
- II. Montages à amplificateurs opérationnels (AOP)
- III. Montage à transistor
- IV. En bonus, d'autres montages à amplificateurs opérationnels (AOP)
- AP5.3 : Filtrage
- Partie N°1
- Partie N°2
- thème 5: bilan (ce qu'on a appris)
- AP5.1: Montages électroniques élémentaires
- Thème N°6 / Application mobile (IHM)
- AP6.1: découverte de la programmation d'une application Android à l'aide du logiciel "App Inventor"
- I. Introduction
- II. Première application : du texte
- III. Deuxième application : des images, du son et du temps
- IV. Utilisation de fonctions mathématiques
- V. Gestion de plusieurs écrans (pages)
- VI. Sauvegarde de données
- VII. Les variables et les boutons "case à cocher"
- VIII. En bonus
- AP6.2: réalisation d'une application Android à l'aide du logiciel "App Inventor"
- I. Introduction
- II. Application / version 1
- III. Application / version 2
- IV. En bonus
- AP6.1: découverte de la programmation d'une application Android à l'aide du logiciel "App Inventor"
- Bonus TP Term SIN
- Algo / Flowcode
- I. Introduction, rappels et découverte du matériel
- II. Découverte du logiciel Flowcode
- III. Clignotement d'une Led
- IV. Chenillard
- V. Afficheurs 7 segments et chaînes de caractères
- VI. Gestion d'un parking
- VII. Feux de carrefour
- Série 2: Bilan (ce que l'on a appris)
- Web / un peu de Javascript
- AP1 : Découverte du langage Javascript
- Introduction
- I. Découverte des structures , variables et de quelques fonctions
- II. Des exemples d’utilisation dans une page web
- III. D'autres fonctions à travers des exemples
- IV. Pour aller plus loin
- AP2 : Javascript et la balise "canvas"
- Introduction
- I. Quelques exemples simples
- II. Première application : logo + texte
- III. Deuxième application : smiley LaMache
- IV. Pour aller plus loin
- AP3: Les applets Javascript RGraph
- Introduction
- I. Premier élément : une jauge classique
- II. Deuxième élément : un thermomètre
- III. Troisième élément : une courbe
- Série 3: Bilan (ce que l'on a appris)
- AP1 : Découverte du langage Javascript
- Algo / Flowcode
- Thème N°1 / Environnement de prototypage Arduino
- Cours de Terminale STI2D - SIN
- Thème N°1: L’environnement de prototypage Arduino
- Partie N°1 : rappels sur les algorithmes et algorigrammes
- Partie N°1 (suite) : révision des structures algorithmiques
- Partie N°1 (suite 2) : révision des structures algorithmiques
- Partie N°2 : exercices sur prototypes à base d’Arduino
- Partie N°3 : en bonus, d’autres exercices à base d’Arduino
- Thème N°2 : réseaux et communications informatiques
- I. Introduction
- II. Réseaux informatiques: 1. Principes généraux
- II. Réseaux informatiques: 2. Éléments d'un réseau
- II. Réseaux informatiques: 3. Adresses des éléments d’un réseau
- II. Réseaux informatiques: 4. Le modèle de référence OSI
- II. Réseaux informatiques: 5. Comparaison des modèles OSI et TCP/IP
- II. Réseaux informatiques: 6. Principe de l'adressage et de l'encapsulation
- II. Réseaux informatiques: 7. Topologie des réseaux
- III. Communications informatiques: 1. Les supports de transmission
- III. Communications informatiques: 2. Exemple N°1 : la liaison série (RS232 et Arduino)
- III. Communications informatiques: 3. Exemple N°2 : le bus I2C
- IV. Exercices
- Thème N° 5 : Traitement du signal
- Partie I : le filtrage
- II. Exemple et calculs pour un filtre passe-bas (1er ordre)
- III. Exemple d’un filtre passe-haut
- IV. Exemple d’un filtre passe-bande
- V. Exemple filtre coupe-bande (ou réjecteur de bande)
- VI. Exercices
- VII. Petite vidéo qui résume
- Partie II : amplification (transistor)
- II. Symboles et constitution du transistor bipolaire
- III. Fonctionnement en amplification
- IV. Fonctionnement en commutation
- V. Types de boîtiers
- VI. Puissance
- VII. Les autres types de transistor
- VIII. Exercices
- Le stockage numérique (bonus)
- Introduction
- I. Les unités du stockage numérique
- II. Les mémoires volatiles (RAM)
- III. Les mémoires ROM
- IV. Le stockage de masse (Partie 1)
- IV. Le stockage de masse (Partie 2)
- V. Organisation et structures des données
- VI. Le cloud
- VII. Redondances des données (RAID,....)
- VIII. Exercices
- 2I2D - SIN - révisions
- Révision N°1: binaire, numération, CNA, CAN, logique
- I. Introduction
- II. Numération (binaire, décimal et hexadécimal)
- III. Conversion Analogique/Numérique
- IV. Circuits logiques
- V. En bonus
- Révision N°2: les propriétés des circuits électriques
- I. Rappels des lois et propriétés des circuits électriques
- II. Exercices - partie 1. Les résistances
- II. Exercices - partie 2. Loi d'Ohm, des noeuds et des mailles
- Révision N°3: création d'algorithmes ou d'algorigrammes
- Révision N°4 : tramission d'information
- Révision N°5 : traitement du signal
- Révision N°6 : mécatronique
- Questions
- Documentations techniques
- Programme Arduino
- Révision N°1: binaire, numération, CNA, CAN, logique
- Thème N°1: L’environnement de prototypage Arduino
- 2I2D: Enseignement spécifique Energie Environnement
- Prérequis
- Chapitre 1: Rappel sur l'énergie
- Introduction
- Les unités
- Rendements
- Exercices
- Chapitre 2: Les actionneurs et leurs préactionneurs
- I. Définition d'un actionneur et du préactionneur
- II. Les actionneur et les préactionneurs dans un système automatisé
- III. Les actionneurs suivant l'énergie utilisée
- IV. Un peu de technologie des actionneurs courants
- IV.1 Les moteurs électriques
- IV.2 Les vérins
- IV.3 Autres actionneurs
- Chapitre 3: l'énergie électrique
- Partie 1 : Définitions et différentes formes de l'énergie électrique
- Partie 2 : Protection des matériels électriques
- Partie 3 : Le schéma électrique
- Partie 4 : conversions
- Chapitre 4: l'énergie thermique
- 1. Expérience et unités
- 2. Grandeurs calorimétriques (conduction)
- 3. Notions de pouvoir calorifique inférieur (PCI) et supérieur (PCS)
- 4. Comparaison de quelques sources d’énergie
- Exercices
- Chapitre 5: L'efficacité énergétique
- Partie 1: La régulation
- Partie 2: L'acquisition d'une information par un capteur
- Partie 3: TD Chauffe Eau Solaire Individuel
- Chapitre 6: Structure des réseaux de distribution d’énergie
- A. Généralités
- B. Les réseaux électriques
- C. Les réseaux de chaleur, froid et mixte
- Chapitre 7: le stockage de l'énergie
- Les technologies de stockage disponibles
- Stockage de l'énergie électrique
- Conclusion
- Spécificité Energie Environnement (TP)
- Série N°1
- Pépinière d'entreprise à Neuville sur Saône
- TP 1.1: Etude de l'éclairage d'un local d'une entreprise sous Dialux
- TP 1.2: Lecture d'un schéma électrique avec connaissance des différents appareils et les des différents schémas
- le contacteur
- Le sectionneur
- Le Fusible
- Le disjoncteur
- Le disjoncteur différentiel
- TP 1.3: Production photovoltaïque
- TP 1.4 : le pneumatique
- Partie 1: Mise en situation sur platine
- Partie 2: Réalisation de schéma
- La cafetière électrique
- TP 2.1: Chaine de Puissance et d'information
- TP 2.2: Etude de la fonction "Acquérir" dans la chaîne d'information
- TP 2.3 Etude de la modulation
- TP2.4: Etude thermique de la cafetière
- Pépinière d'entreprise à Neuville sur Saône
- Série N°2
- TP 3.1: LABVIEW
- a. Initiation à la programmation Labview
- Présentation de l'environnement
- Réalisation d'un comparateur de tension
- Entrée/sortie digitale
- Entrée/sortie analogique
- b. Régulation de la température intérieure d'une serre de jardin
- a. Initiation à la programmation Labview
- TP 3.2: Zelio
- A. Automatisation du système d'ouverture d'un portail
- Les variables d'entrées et de sorties de l'automatisme
- Cahier des charges fonctionnel (CDCF)
- Programmation de la commande piéton
- Programmation de la commande voiture
- B. Système chaine de remplissage
- A. Automatisation du système d'ouverture d'un portail
- TP 3.3: La domotique
- TP 3.1: LABVIEW
- Série N°3
- Le chalet de vacances
- TP 4.1: Le diagnostique énergétique
- TP 4.2: Production énergetique par éolienne
- TP 4.3: le concept MFC 2020
- TP 4.4: Performance énergétique des modes de régulation de chauffage du chalet
- Le E-solex
- TP 5.1: Régulation de vitesse du E-Solex
- TP 5.2: Etude du stockage d'énergie
- TP 5.3: Etude de la modulation d'énergie
- Le chalet de vacances
- Les mesures électriques
- Les unités des grandeurs électriques
- Le Multimètre
- Le voltmètre
- L'ampèremètre
- L'ohmmètre
- L'oscilloscope
- Allumage
- Réglage du niveau zéro
- Réglage de la base de temps
- Réglage de l'axe des Y
- Réglage et choix des tensions Ya et Yb
- Déclenchement
- Mesurer une tension
- Mesurer une période
- Simulation
- Le Wattmètre
- Les mini projet en EE 2019
- Panneau solaire en canette (3 élèves)
- Fabrication d'une micro centrale hydraulique (3 Elèves)
- Mise en place d'une barrière automatisée (3 Elèves)
- Ascenseur (3 Elèves)
- Série N°1
- Projets (terminales)
- Démarche de projet
- Projets SIN 2017
- Projets SIN 2018
- Projets 2023
- Projet DefiBots 2024
- Projet DefiBots 2025
- Convertisseur binaire/decimal/hexa
- Fiches d'aide (arduino et projet)
- Les "breadboard"
- Problématique de la fonction Delay
- Le moniteur série
- Arduino Pinout
- Front montant
- Mise en oeuvre et tests des capteurs
- Erreurs absolue - relative
- Le relais électromécanique
- Echanges européen
- Novara - Octobre 2015
- Novara - Octobre 2016
- Novara - Avril 2017
- Echange européen Trèvise 2017
- Novara - Mars 2018
- Novara - mars 2023
- Belgique 2023
- La poursuite d'étude pour les SIN
- Portes ouvertes
- Sources
Ce que dit la documentation arduino :
| delay() Description : Pauses the program for the amount of time (in miliseconds) specified as parameter. (There are 1000 milliseconds in a second.) Syntax : delay(ms) Parameters : ms: the number of milliseconds to pause (unsigned long) Returns : nothing |
Un exemple pour comprendre le problèmeObjectif du programme : il doit lire et fournir l'information de 2 capteurs. Le premier capteur sera lu toutes les minutes, le deuxième toutes les 3 minutes
| Une version d'essai du programme (programmée un peu vite, sans réfléchir!): //**** debut du programme *********// // adressage des capteurs (PIN) // int CAPT1_PIN = A0; int CAPT2_PIN = A1; int lecture-capt1=0; int lecture-capt1=0 ; void setup() { analogRead(CAPT1_PIN); analogRead(CAPT2_PIN); } void loop() { lecture-capt1 = analogRead(SLIDER1_PIN); // lecture capteur 1// delay(60000) ; // attente en mslecture-capt2 = analogRead(SLIDER1_PIN); // lecture capteur 2 // delay(180000) ; // attente en ms } | ![]() |
![]() | On voit très bien que le programme ne répond pas au cahier des charges. En effet, on ne peut lire le capteur 1 toutes les minutes car à la suite du capteur 2 on est bloqué 3 minutes.Imaginez que le programme gère la sécurité (incendie, fuite de gaz, …) ou la santé d'une personne après une opération (rythme cardiaque, …) et que pendant les 3 minutes du 2ème Delay on ne fait rien et qu'il se passe quelque chose !!!!!Le problème devient sérieux ! |
Delay est donc une fonction bloquante alors qu'il nous faudrait une fonction non bloquante :
Une solution possible : la fonction "millis()"
Ce que dit la documentation arduino :
| millis() Description : Returns the number of milliseconds since the Arduino board began running the current program. This number will overflow (go back to zero), after approximately 50 days. Parameters : None Returns : Number of milliseconds since the program started (unsigned long) Note: please note that the return value for millis() is an unsigned long, logic errors may occur if a programmer tries to do arithmetic with smaller data types such as int's. Even signed long may encounter errors as its maximum value is half that of its unsigned counterpart. |
Ce que l'on comprend :A l’intérieur de la carte Arduino se trouve un chronomètre. Ce chronomètre mesure l’écoulement du temps depuis le lancement de l’application. Sa précision est la milliseconde. La fonction millis() nous sert à savoir quelle est la valeur courante de ce compteur. Ce compteur est capable de mesurer une durée allant jusqu’à 50 jours. La valeur retournée doit être stockée dans une variable de type « unsigned long ».Dans la pratique, l'utilisation de la fonction millis() va nécessiter 3 étapes :
| étape 1 : on mémorise le temps de référence (le temps de départ). Ce temps est le moment où l'on dit : on commence à mesurer le temps "à partir de maintenant". En général cette mémorisation se fait une fois (à chaque début de lancer du chronomètre), à un certain moment. A chaque cycle du programme, on ne va donc pas ré-écrire ce temps de départ.Pour faire une action une seule fois, il suffit de prendre une variable (par exemple "temps_depart_memo") dont on modifiera la valeur pour dire si on a mémorisé ou non le temps de départ (par exemple 0 signifie que le temps n'est pas mémorisé et 1 signifie que le temps est mémorisé)Remarque : pour lancer une nouvelle mesure du temps il faudra remettre à 0 la variable "temps_depart_memo" | ![]() |
Cela peut donner ://**** extrait du programme *********// void loop() { if (temps_depart_memo==0){ temps1=millis() ; // mémorisation du temps de départ temps_depart_memo=1 ; // variable mise à 1 =le temps est mémorisé}…..…..étape 2: on gère notre action en fonction du temps.Exemple : je veux faire une action après un certain temps (exemple ici 3 minutes) ://**** programme *********// …..…..if (temps_depart_memo==1) // test si l'action de la temporisation est lancée{ temps_ecoule=millis()-temps1 ; // calcul du temps écoulé en millisecondes if (temps_ecoule>180000) // test si le temps écoulé dépasse 180000ms (3min*60*1000) { // ici mon action à exécuter }}…..…..étape 3: pour relancer une nouvelle temporisation, il faudra remettre à zéro la variable qui nous sert à faire une seule fois la mémorisation du temps de départ ("temps_depart_memo").
Une règle à retenir:
![]() | En dehors des phases de test (notamment des capteurs), il ne faut pas utiliser la fonction Delay. |
Cet astuce est-elle fiable ?
La fonction millis() retourne un nombre entier de taille fixe (32 bits), cela signifie qu'après un certain temps la valeur retournée pas millis() va déborder et revenir à zéro. En effet après 11111111111111111111111111111111 (32 bits à 1 = FFFFFFFF en hexa)il devrait y avoir 100000000000000000000000000000000mais comme le type "unsigne byte" est sur 32 bits, le 33ème bit (à 1) n'existe pas et on obtient :00000000000000000000000000000000 (32 zéro)Ce débordement de millis() se produit environ 50 jours après le démarrage du programme. Pour être précis, le débordement se produit après 4 294 967 296 millisecondes, soit 49 jours, 17 heures, 2 minutes, 47 secondes et 296 millisecondes. Si votre code est susceptible de rester en activité plus de 49 jours et que vous utilisez millis(), il va falloir trouver une solution !Remarque : Il n’est pas nécessaire d’attendre 50 jours pour tester votre programme et mettre en évidence le bug. Il suffit de rajouter lors de la mémorisation du temps de départ une valeur proche de la valeur maximum.Remarque 2 : le fait d'avoir utiliser dans notre exemple une soustraction temps_ecoule=milli()-temps1 peut nous amener vers une solution. Vous pouvez faire des essais avec le programme suivant en changeant les valeur de temps_actuel et temps_départExemple de programme de test à faire (ici fonctionnement normal car le temps_actuel > temps_depart):unsigned long temps_actuel=0xFFFFFFFF; // valeur en hexadecimalunsigned long temps_depart=0xFFFFFFFA; // valeur en hexadecimalunsigned long resultat; void setup() { Serial.begin(9600); } void loop() { resultat=temps_actuel-temps_depart; Serial.println(resultat); }Faire d'autres tests en simulant un temps supérieur à 50 heures (temps_actuel repasse à 00000000h) pour voir si ça fonctionne et si ce n'est pas le cas il faut trouver une solution.
En dehors des phases de test (notamment des capteurs), il ne faut pas utiliser la fonction Delay.
Régi par la licence Creative Commons: Licence d'attribution en partage identique et non commercial 4.0
« Précédent | Suivant » Equipe STI 2D I2D et options EE et SIN du Lycée LaMache - Combe - Verilhac - Boiron - Varenne Créé avec le logiciel libre eXeLearningCréé avec eXeLearning (Nouvelle fenêtre)
Tag » Arduino Pause Ms
-
Delay() - Arduino Reference
-
DelayMicroseconds() - Arduino Reference
-
Why You Shouldn't Always Use The Arduino Delay Function
-
How To Avoid Using The Delay() Function In Arduino Sketches - Digikey
-
Arduino - Delay () Function
-
Arduino Tutorial: Using Millis() Instead Of Delay()
-
Introduire Le Temps - Arduino : Premiers Pas En Informatique ...
-
Delay() | Référence Du Langage Arduino En Français
-
Arduino Delay [Tutorial] - The Robotics Back-End
-
Pausing A Loop To Run Another In Arduino - Stack Overflow
-
Arduino: Using Millis() Instead Of Delay() - DZone IoT
-
Comment Gérer Le Temps Dans Un Programme - Locoduino
-
Delay(ms) - Arduino 日本語リファレンス



