L’utilisation d’un relais pour contrôler des appareils électriques est une méthode très pratique et efficace. Avec une carte Arduino et un bouton-poussoir, il est possible de commander un relais et de le faire fonctionner. Dans cet article, nous allons vous expliquer comment commander un relais à l’aide d’un bouton-poussoir et d’une carte Arduino. Nous verrons également comment configurer le relais et le bouton-poussoir pour qu’ils fonctionnent correctement.
Commander un relais à l’aide d’un BP avec une carte Arduino
Présentation
Ce programme commande à l’aide d’un bouton poussoir un relais à partir d’une broche de la carte Arduino via un circuit intégré ULN 2803 (octuple amplificateur inverseur 500mA).
Voir également :
Matériel Nécessaire
L’espace de développement Arduino
- … pour éditer, compiler le programme et programmer la carte Arduino.

Le matériel suivant pour réaliser le montage associé
- une plaque d’essai pour montage sans soudures,

- des straps,

- un bouton poussoir pour CI,

- un CI ULN 2803,

- un relais standard 12V,

Instructions de montage
- Connecter sur la broche 2 (configurée en entrée) un bouton poussoir connecté à la masse (0V)
- Connecter sur la broche 3 (configurée en sortie) une broche de commande du CI ULN2803
Le schéma théorique du montage
La diode représentée n’est pas obligatoire, mais a pour but de prévenir les problèmes de reset intempestif de la carte Arduino. Cela fonctionne bien quand même sans la diode.

ATTENTION : L’utilisation du 220V est dangereuse et nécessite impérativement de respecter des règles de sécurité précises. Les mineurs ne doivent en aucun cas utiliser du 220V sans la présence d’un adulte.
Le circuit du montage
Explication du programme
Structure globale du programme
Ce programme simple comprend :
- une entête déclarative
- une partie « configuration » qui ne sera exécutée qu’une fois (fonction setup( ) )
- une partie constituée d’une boucle sans fin que le programme répètera à l’infini ( fonction loop( ) ) : c’est le coeur du programme.
Déroulement du programme
Le programme se déroule de la façon suivante :
- Après avoir pris en compte les instructions de la partie déclarative,
- puis après avoir exécuté la partie configuration ( fonction setup( ) ),
- le programme bouclera sans fin ( fonction loop ( ) ), exécutant de façon répétée le code compris dans la boucle sans fin.

Le déroulement du programme
Au niveau de la partie déclarative :
Déclaration de constantes utiles
- On déclare les constantes utiles dans le programme :
- Déclaration des constantes utiles pour l’utilisation des boutons poussoirs :
const int PAS_APPUI=1; // constante état du BP – relâché sur niveau haut
Déclaration des constantes de broches
- Déclaration des constantes pour les broches utilisées dans le programme :
const int RELAIS=3; //declaration constante de broche
Déclaration des variables globales
- Déclaration des variables globales du programme : on déclare une variable de type boolean (type binaire) qui reflète l’état de la broche de commande du relais.
Au niveau de la fonction d’initialisation setup( ) :
Initialisation des fonctionnalités utilisées :
- On initialise les différentes fonctionnalités utilisées :
configuration des broches utilisées :
- Configuration des broches en sortie :
- Configuration des broches en entrée :
- Activation du rappel au + interne des broches en entrée si nécessaire :
Au niveau de la boucle principale, la fonction loop ( ) :
- On teste l’état du BP : lorsque le BP est appuyé, on inverse l’état de la broche de commande du relais.
etatRelais=!etatRelais; // inverse l’état du relais
digitalWrite(RELAIS,etatRelais); // met la broche de commande dans l’état voulu
delay (500); // pause anti-rebond – évite double prise en compte appui BP
} // fin if
- Le programme recommence en boucle les instructions de la fonction loop( ).
Se reporter aux commentaires présents dans le programme pour plus de détails.
Mise en oeuvre du programme
Préparation du montage et programmation de la carte Arduino :
- Commencer par réaliser le montage indiqué sur plaque d’expérimentation
- Ensuite, programmer la carte Arduino avec ce programme (en bas de page) selon la procédure habituelle
Fonctionnement
- Chaque appui sur le BP inverse l’état du relais : travail, repos, travail, repos, etc…
Le programme complet en langage Arduino :
A copier/coller directement dans l’éditeur Arduino
// par X. HINAULT – Le 03/03/2010
// www.mon-club-elec.fr
// — Que fait ce programme ? —
/* commande à l’aide d’un bouton poussoir
un relais à partir d’une broche de la carte Arduino
via un ULN 2803 (octuple amplificateur inverseur 500mA)*/
// — Fonctionnalités utilisées —
// — Circuit à réaliser —
// Connecter sur la broche 2 (configurée en entrée) un bouton poussoir connecté à la masse (0V)
// Connecter sur la broche 3 (configurée en sortie) une broche de commande du CI ULN2803
//**************** Entête déclarative *******
// A ce niveau sont déclarées les librairies, les constantes, les variables…
// — Inclusion des librairies utilisées —
// — Déclaration des constantes —
const int APPUI=0; // constante état du BP – appui sur niveau bas
const int PAS_APPUI=1; // constante état du BP – relâché sur niveau haut
// — constantes des broches —
const int BP=2; //declaration constante de broche
const int RELAIS=3; //declaration constante de broche
// — Déclaration des variables globales —
boolean etatRelais=0; // variable bit reflet état du relais
// — Déclaration des objets utiles pour les fonctionnalités utilisées —
//**************** 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 au démarrage —
// ——- Broches en sortie ——-
pinMode(RELAIS, OUTPUT); //met la broche en sortie
// ——- Broches en entrée ——-
pinMode(BP, INPUT); //met la broche en entree
// ——- Activation du rappel au + interne des broches en entrée si nécessaire ——-
digitalWrite(BP, HIGH) ; // activation du pullup de la broche en entrée
} // fin de la fonction setup()
// ********************************************************************************
//*************** 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()
// — ici instructions à exécuter par le programme principal —
if (digitalRead(BP)==APPUI) { // si appui sur BP
etatRelais=!etatRelais; // inverse l’état du relais
digitalWrite(RELAIS,etatRelais); // met la broche de commande dans l’état voulu
delay (500); // pause anti-rebond – évite double prise en compte appui BP
} // fin if
} // fin de la fonction loop() – le programme recommence au début de la fonction loop sans fin
// ********************************************************************************
//*************** Autres Fonctions du programme *************
// — Fin programme —
Articles Liés
- EXPERT : ARDUINO : LCD Graphique
Arduino est une plateforme de prototypage électronique open source qui permet aux utilisateurs de créer…
- "Symbiose numérique" Arduino / PC
L'utilisation d'Arduino et de PC est devenue une pratique courante pour les développeurs et les…
- ARDUINO : EXPERT : LCD
Arduino est une plateforme de prototypage électronique open source qui permet aux utilisateurs de créer…