Compter les impulsions en provenance d'un opto-coupleur en fourche en utilisant une interruption externePar X. HINAULT - Page créée le : 13/2/2011. (cliquer sur l'image pour agrandir)
On this page... (hide) 1. PrésentationCe programme compte les impulsions en provenance d'un opto-coupleur en fourche en utilisant l'interruption externe n°0 sur la broche 2 de la carte Arduino. Le résultat est affiché dans le Terminal Série du logiciel Arduino. Ce programme utilise les fonctionnalités suivantes :
Ressources utiles associées à ce programme :
Voir également : 2. Matériel Nécessaire2.1 L'espace de développement Arduino
![]() 2.2 Le matériel suivant pour réaliser le montage associé
![]()
![]()
![]() Pour plus de détails, voir : Optocoupleur en fourche (LITON LTH301-07) 3. Instructions de montage
4. Le schéma théorique du montageLe schéma théorique du montage (cliquer pour agrandir) 5. Le circuit du montageLe schéma du montage à réaliser (cliquer pour agrandir) 6. Explication du programme6.1 Au niveau de la partie déclarative :
6.2 Au niveau de la fonction d'initialisation setup( ) :
6.3 Au niveau de la boucle principale, la fonction loop ( ) :
6.4 Au niveau de la routine de gestion de l'interruption
7. Mise en oeuvre du programme7.1 Préparation du montage et programmation de la carte Arduino :
7.2 Préparation du Terminal côté PC dans le logiciel Arduino
![]()
![]()
![]() 7.3 Fonctionnement
(cliquer sur l'image pour agrandir) 8. Le programme complet en langage ArduinoA copier/coller directement dans l'éditeur Arduino // --- Programme Arduino --- // Trame de code générée par le générateur de code Arduino // du site www.mon-club-elec.fr // Auteur du Programme : X. HINAULT - Tous droits réservés // Programme écrit le : 13/2/2011. // ------- Licence du code de ce programme ----- // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, // or any later version. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. // //////////////////// PRESENTATION DU PROGRAMME //////////////////// // -------- Que fait ce programme ? --------- /* Ce programme compte les impulsions en provenance d'un opto-coupleur en fourche en utilisant l'interruption externe n°0 sur la broche 2 de la carte Arduino. Le résultat est affiché dans le Terminal Série du logiciel Arduino. */ // --- Fonctionnalités utilisées --- // Utilise la connexion série vers le PC // Utilise l'interruption externe 0 (broche 2) // Utilise optocoupleur infra-rouge en fourche, type LTH301-7, // -------- Circuit à réaliser --------- // La connexion série vers le PC utilise les broches 0 et 1 (via le câble USB) // Broche 2 : La sortie du phototransistor d'un optocoupleur en fourche // /////////////////////////////// 1. Entête déclarative /////////////////////// // A ce niveau sont déclarées les librairies incluses, les constantes, les variables, les objets utiles... // --- Déclaration des constantes --- // --- Inclusion des librairies --- // --- Déclaration des constantes utiles --- // --- Déclaration des constantes des broches E/S numériques --- // --- Déclaration des constantes des broches analogiques --- // --- Déclaration des variables globales --- volatile int comptageImpulsion=0; // variable accessible dans la routine interruption externe 0 // --- Déclaration des objets utiles pour les fonctionnalités utilisées --- // ////////////////////////// 2. FONCTION SETUP = Code d'initialisation ////////////////////////// // La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme void setup() { // debut de la fonction setup() // --- ici instructions à exécuter 1 seule fois au démarrage du programme --- // ------- Initialisation fonctionnalités utilisées ------- Serial.begin(115200); // initialise connexion série à 115200 bauds // IMPORTANT : régler le terminal côté PC avec la même valeur de transmission attachInterrupt(0, gestionINT0, RISING); // attache l'interruption externe n°0 à la fonction gestionINT0() // mode déclenchement possibles = LOW, CHANGE, RISING, FALLING // ------- Broches en sorties numériques ------- // ------- Broches en entrées numériques ------- // ------- Activation si besoin du rappel au + (pullup) des broches en entrées numériques ------- // ------- Initialisation des variables utilisées ------- } // fin de la fonction setup() // ******************************************************************************** ////////////////////////////////// 3. FONCTION LOOP = Boucle sans fin = coeur du programme ////////////////// // la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension void loop(){ // debut de la fonction loop() // tout se passe dans la fonction de gestion de l'interruption externe } // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin // ******************************************************************************** // ////////////////////////// FONCTIONS DE GESTION DES INTERRUPTIONS //////////////////// // ------------------- fonction de gestion l'interruption externe n°0 (broche 2) ---------------- // cette fonction est appelée à chaque fois que l'interruption a lieu selon le mode configuré (LOW, CHANGE, RISING, FALLING) void gestionINT0() {// la fonction appelée par l'interruption externe n°0 comptageImpulsion=comptageImpulsion+1; // Incrémente la variable de comptage // ATTENTION : delay() et millis() non dispo ici - données série perdues //---- affiche le nombre d'impulsions sur le port série Serial.print("Nombre impulsions = "); Serial.println(comptageImpulsion); } // ////////////////////////// AUTRES FONCTIONS DU PROGRAMME //////////////////// // ////////////////////////// Fin du programme //////////////////// |