.. note::
Bonjour et bienvenue dans la Communauté Facebook des passionnés de Raspberry Pi, Arduino et ESP32 de SunFounder ! Plongez plus profondément dans l'univers des Raspberry Pi, Arduino et ESP32 avec d'autres passionnés.
**Pourquoi rejoindre ?**
- **Support d'experts** : Résolvez les problèmes après-vente 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 améliorer vos compétences.
- **Aperçus exclusifs** : Accédez en avant-première aux annonces de nouveaux produits et aux aperçus.
- **Réductions spéciales** : Profitez de réductions exclusives sur nos produits les plus récents.
- **Promotions festives et cadeaux** : Participez à des cadeaux et des promotions de vacances.
👉 Prêt à explorer et à créer avec nous ? Cliquez [|link_sf_facebook|] et rejoignez-nous aujourd'hui !
.. _2.1.1_js:
2.1.1 Bouton
=================
Introduction
-------------------
Dans ce projet, nous apprendrons à allumer ou éteindre la LED en utilisant un bouton.
Composants requis
-------------------------------
Pour ce projet, nous avons besoin des composants suivants.
.. image:: ../img/list_2.1.1_Button.png
Il est certainement pratique d'acheter un kit complet, voici le lien :
.. list-table::
:widths: 20 20 20
:header-rows: 1
* - Nom
- ARTICLES DANS CE KIT
- LIEN
* - Kit Raphael
- 337
- |link_Raphael_kit|
Vous pouvez également les acheter séparément via les liens ci-dessous.
.. list-table::
:widths: 30 20
:header-rows: 1
* - INTRODUCTION DES COMPOSANTS
- LIEN D'ACHAT
* - :ref:`cpn_gpio_extension_board`
- |link_gpio_board_buy|
* - :ref:`cpn_breadboard`
- |link_breadboard_buy|
* - :ref:`cpn_wires`
- |link_wires_buy|
* - :ref:`cpn_resistor`
- |link_resistor_buy|
* - :ref:`cpn_led`
- |link_led_buy|
* - :ref:`cpn_button`
- |link_button_buy|
Schéma de câblage
-----------------------
Utilisez un bouton normalement ouvert comme entrée du Raspberry Pi, le raccordement est montré dans le schéma ci-dessous. Lorsque le bouton est pressé, le GPIO18 passera à un niveau bas (0V). Nous pouvons détecter l'état du GPIO18 par programmation. C'est-à-dire que si le GPIO18 passe à un niveau bas, cela signifie que le bouton est pressé. Vous pouvez exécuter le code correspondant lorsque le bouton est pressé, et alors la LED s'allumera.
.. note::
La patte la plus longue de la LED est l'anode et la plus courte est la cathode.
.. image:: ../img/image302.png
.. image:: ../img/image303.png
Procédures expérimentales
-----------------------------
**Étape 1** : Construisez le circuit.
.. image:: ../img/image152.png
**Étape 2** : Accédez au dossier du code.
.. raw:: html
.. code-block::
cd ~/raphael-kit/nodejs/
**Étape 3** : Exécutez le code.
.. raw:: html
.. code-block::
sudo node button.js
Maintenant, appuyez sur le bouton, et la LED s'allumera ;
relâchez le bouton, et la LED s'éteindra.
**Code**
.. code-block:: js
const Gpio = require('pigpio').Gpio;
const led = new Gpio(17, {mode: Gpio.OUTPUT});
const button = new Gpio(18, {
mode: Gpio.INPUT,
pullUpDown: Gpio.PUD_DOWN,
edge: Gpio.EITHER_EDGE
});
button.on('interrupt', (level) => {
led.digitalWrite(level);
});
**Explication du code**
.. code-block:: js
const Gpio = require('pigpio').Gpio;
const led = new Gpio(17, {mode: Gpio.OUTPUT});
Importez le module ``pigpio``, créez un objet led pour contrôler le port IO Gpio17, et réglez-le en mode sortie.
.. code-block:: js
const button = new Gpio(18, {
mode: Gpio.INPUT,
pullUpDown: Gpio.PUD_DOWN,
edge: Gpio.EITHER_EDGE
});
Créez un objet bouton pour contrôler le port IO Gpio18, réglez-le en mode entrée,
Tirez vers le bas (bas lorsque le bouton n'est pas pressé, haut lorsque le bouton est pressé).
Et définissez la fonction d'interruption, le mode est EITHER_EDGE, c'est-à-dire que les bords montant et descendant déclencheront la fonction d'interruption.
.. code-block:: js
button.on('interrupt', (level) => {
led.digitalWrite(level);
});
Écrivez une fonction d'interruption, lorsque le bouton est pressé, c'est un bord descendant, déclenchant la fonction d'interruption,
À ce moment-là, écrivez le niveau bas du port IO du bouton dans le port IO de la led, et la led s'allume.
Lorsque le bouton est relâché, c'est un bord montant, déclenchant la fonction d'interruption,
À ce moment-là, le niveau haut du port IO du bouton est écrit dans le port IO de la led, et la led s'éteint.
Image du phénomène
^^^^^^^^^^^^^^^^^^^^^^^
.. image:: ../img/image153.jpeg