Note

Bonjour et bienvenue dans la communauté des passionnés de SunFounder Raspberry Pi, Arduino et ESP32 sur Facebook ! Plongez dans l’univers de Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.

Pourquoi nous rejoindre ?

  • Support d’experts : Résolvez les problèmes post-achat et les défis techniques avec l’aide de notre communauté et de notre équipe.

  • Apprendre et partager : Échangez des astuces et des tutoriels pour approfondir vos compétences.

  • Aperçus exclusifs : Accédez en avant-première aux annonces de nouveaux produits et à des aperçus exclusifs.

  • Réductions spéciales : Profitez de réductions exclusives sur nos nouveaux produits.

  • Promotions festives et cadeaux : Participez à des tirages au sort et des promotions spéciales.

👉 Prêt à explorer et créer avec nous ? Cliquez sur [Ici] et rejoignez-nous dès aujourd’hui !

1.11 Intervalle

Aperçu

Il arrive parfois que vous deviez effectuer deux actions en même temps. Par exemple, vous voudrez peut-être faire clignoter une LED tout en surveillant l’appui sur un bouton. Dans ce cas, vous ne pouvez pas utiliser delay(), car cette fonction met en pause le programme Arduino pendant le délai spécifié. Si le bouton est pressé alors qu’Arduino est en pause, l’appui sera ignoré.

Ce code démontre comment faire clignoter une LED sans utiliser delay(). La LED s’allume et le programme enregistre le moment. À chaque passage dans la boucle loop(), il vérifie si le temps de clignotement souhaité est écoulé. Si oui, il bascule la LED entre on et off et met à jour l’heure pour le prochain clignotement, de sorte que la LED continue de clignoter sans interruption du programme.

Une analogie serait de chauffer une pizza au micro-ondes tout en surveillant un e-mail important. Avec delay(), vous resteriez devant le micro-ondes pendant 10 minutes. Avec ce code, vous pouvez allumer le micro-ondes, vérifier vos e-mails, faire autre chose, puis revenir voir si la pizza est prête.

Composants requis

../_images/list_1.11.png

Circuit Fritzing

Dans cet exemple, nous utilisons la broche numérique 9 pour piloter la LED. Une résistance est connectée entre la broche et l’anode (longue patte) de la LED, tandis que la cathode (courte patte) est reliée à la masse (GND).

../_images/image30.png

Schéma électronique

../_images/image466.png

Code

Note

  • Vous pouvez ouvrir le fichier 1.11_interval.ino dans le chemin sunfounder_vincent_kit_for_arduino\code\1.11_interval.

  • Ou copier ce code dans l’IDE Arduino 1/2.

Une fois le code téléversé sur la carte Mega2560, vous verrez la LED clignoter.

Analyse du Code

Déclarez la broche numérique 9 comme ledPin.

const int ledPin = 9;

Initialisez l’état de ledState à LOW pour éteindre la LED.

int ledState = LOW;

Déclarez une variable nommée previousMillis pour enregistrer le temps d’opération précédent du microcontrôleur.

unsigned long previousMillis = 0;

Définissez l’intervalle à 1000ms (millisecondes).

const long interval = 1000;

Définissez ledPin en mode OUTPUT.

pinMode(ledPin, OUTPUT);

Dans loop(), déclarez currentMillis pour enregistrer le temps actuel.

unsigned long currentMillis = millis();

Lorsque l’intervalle entre le temps actuel et le dernier clignotement dépasse 1000 ms, certaines fonctions sont déclenchées. Ensuite, previousMillis est mis à jour pour permettre le prochain clignotement une seconde plus tard.

if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis; // enregistrez le dernier temps de clignotement de la LED
//...
}

Ici, les fonctions exécutées à intervalles modifient l’état de la LED.

if (ledState == LOW)
{ledState = HIGH;}
else
{ledState = LOW;}
digitalWrite(ledPin, ledState);

Illustration du phénomène

../_images/image36.jpeg