Arduino Nano - Bouton - Relais

Ce tutoriel vous explique comment utiliser l'Arduino Nano et un bouton pour contrôler le relais. En connectant le relais à un verrou solénoïde, une ampoule, une bande LED, un moteur ou un actionneur..., nous pouvons utiliser un bouton pour les contrôler. Nous allons apprendre deux applications différentes :

Application 1 - L'état du relais est synchronisé avec l'état du bouton. En détail :

Application 2 - L'état du relais est basculé à chaque fois que le bouton est pressé. Plus spécifiquement :

Dans l'Application 2, nous devons anti-rebondir le bouton pour nous assurer qu'il fonctionne correctement. Nous verrons pourquoi c'est important en comparant comment se comporte le relais lorsque nous utilisons le code Arduino avec et sans anti-rebond du bouton.

Préparation du matériel

1×Arduino Nano
1×USB A to Mini-B USB cable
1×Push Button
1×(Optional) Panel-mount Push Button
1×Relay
1×Breadboard
1×Jumper Wires
1×(Optional) Solenoid Lock
1×(Optional) 12V Power Adapter
1×(Optional) DC Power Jack
1×(Optional) 9V Power Adapter for Arduino Nano
1×(Recommended) Screw Terminal Adapter for Arduino Nano

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du relais et du bouton

Si vous n'êtes pas familiarisé avec le relais et le bouton (y compris le brochage, le fonctionnement et la programmation), les tutoriels suivants peuvent vous aider :

Diagramme de câblage

Schéma de câblage du relais à bouton Arduino Nano

This image is created using Fritzing. Click to enlarge image

Application 1 - L'état du relais est synchronisé avec l'état du bouton

Code Arduino Nano

/* * Ce code Arduino Nano a été développé par newbiely.fr * Ce code Arduino Nano est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino-nano/arduino-nano-button-relay */ const int BUTTON_PIN = 8; // The Arduino Nano pin connected to button's pin const int RELAY_PIN = 2; // The Arduino Nano pin connected to relay's pin void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(BUTTON_PIN, INPUT_PULLUP); // set arduino pin to input pull-up mode pinMode(RELAY_PIN, OUTPUT); // set arduino pin to output mode } void loop() { int button_state = digitalRead(BUTTON_PIN); // read new state if (button_state == LOW) { Serial.println("The button is being pressed"); digitalWrite(RELAY_PIN, HIGH); // turn on } else if (button_state == HIGH) { Serial.println("The button is unpressed"); digitalWrite(RELAY_PIN, LOW); // turn off } }

Étapes rapides

  • Connectez un Arduino Nano à votre ordinateur avec un câble USB.
  • Lancez l'IDE Arduino et sélectionnez la carte et le port corrects.
  • Copiez le code et ouvrez-le dans l'IDE Arduino.
  • Cliquez sur le bouton Upload de l'IDE Arduino pour compiler et téléverser le code sur l'Arduino Nano.
Téléversement de code avec l'IDE Arduino
  • Appuyez sur le bouton et maintenez-le pendant quelques secondes.
  • Vérifiez le changement d'état du relais.

Vous verrez que l'état du relais est synchronisé avec l'état du bouton.

Explication du code

Découvrez l'explication ligne par ligne contenue dans les commentaires du code source !

Application 2 - Le bouton bascule le relais

Code Arduino Nano - Bouton bascule relais sans anti-rebond

/* * Ce code Arduino Nano a été développé par newbiely.fr * Ce code Arduino Nano est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino-nano/arduino-nano-button-relay */ const int BUTTON_PIN = 8; // The Arduino Nano pin connected to button's pin const int RELAY_PIN = 2; // The Arduino Nano pin connected to relay's pin int relay_state = LOW; // The current state of relay int prev_button_state; // The previous state of button int button_state; // The current state of button void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(BUTTON_PIN, INPUT_PULLUP); // set arduino pin to input pull-up mode pinMode(RELAY_PIN, OUTPUT); // set arduino pin to output mode button_state = digitalRead(BUTTON_PIN); } void loop() { prev_button_state = button_state; // save the last state button_state = digitalRead(BUTTON_PIN); // read new state if(prev_button_state == HIGH && button_state == LOW) { Serial.println("The button is pressed"); // toggle state of relay relay_state = !relay_state; // control relay according to the toggled state digitalWrite(RELAY_PIN, relay_state); } }

Explication du code

Vous pouvez trouver l'explication dans les lignes de commentaire du code Arduino Nano ci-dessus.

Dans le code, l'expression relay_state = !relay_state est équivalente au code suivant :

if(relay_state == LOW) relay_state = HIGH; else relay_state = LOW;

Étapes rapides

  • Copiez le code et ouvrez-le dans l'IDE Arduino.
  • Téléchargez le code sur l'Arduino Nano.
  • Appuyez plusieurs fois sur le bouton de libération.
  • Vérifiez le changement d'état du relais.

Vous pourriez remarquer que le relais s'active ou se désactive à chaque fois que vous appuyez sur le bouton, mais cela peut ne pas toujours être le cas. Parfois, il peut basculer rapidement plusieurs fois avec une seule pression sur le bouton, ou il se peut qu'il ne bascule pas du tout (basculer deux fois très rapidement, ce qui est invisible à l'œil nu).

Pour résoudre ce problème, nous devons debouncer le bouton.

Code Arduino Nano - Bouton bascule le relais avec anti-rebond

Le debouncing d'un bouton peut être difficile pour les débutants. Heureusement, la bibliothèque ezButton facilite cette tâche.

Pourquoi est-il nécessaire de supprimer les rebonds ? Consultez le tutoriel Arduino Nano - Suppression des rebonds des boutons pour plus d'informations.

/* * Ce code Arduino Nano a été développé par newbiely.fr * Ce code Arduino Nano est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino-nano/arduino-nano-button-relay */ #include <ezButton.h> const int BUTTON_PIN = 8; // The Arduino Nano pin connected to button's pin const int RELAY_PIN = 2; // The Arduino Nano pin connected to relay's pin ezButton button(BUTTON_PIN); // create ezButton object for pin 7; int relay_state = LOW; // The current state of relay void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(RELAY_PIN, OUTPUT); // set arduino pin to output mode button.setDebounceTime(50); // set debounce time to 50 milliseconds } void loop() { button.loop(); // MUST call the loop() function first if(button.isPressed()) { Serial.println("The button is pressed"); // toggle state of relay relay_state = !relay_state; // control relay according to the toggled state digitalWrite(RELAY_PIN, relay_state); } }

Étapes rapides

  • Installez la bibliothèque ezButton. Consultez Comment faire pour les instructions.
  • Copiez le code et ouvrez-le avec Arduino IDE.
  • Cliquez sur le bouton Upload dans Arduino IDE pour téléverser le code sur l'Arduino Nano.
  • Appuyez et relâchez le bouton plusieurs fois.
  • Observez le changement d'état du relais.

Vous remarquerez que le relais s'activera ou se désactivera une seule fois à chaque fois que vous appuierez sur le bouton.

Vidéo

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!