.. 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 !
.. _1.1.1_js:
1.1.1 LED Clignotante
=====================
Introduction
--------------
Dans ce projet, nous allons apprendre à faire clignoter une LED par programmation. En effectuant
les bons réglages, votre LED peut produire une série de phénomènes intéressants. Alors, allons-y.
Composants Requis
---------------------
Pour ce projet, nous avons besoin des composants suivants.
.. image:: img/blinking_led_list.png
:width: 800
:align: center
Il est certainement pratique d'acheter un kit complet, voici le lien :
.. list-table::
:widths: 20 20 20
:header-rows: 1
* - Nom
- ÉLÉMENTS DANS CE KIT
- LIEN
* - Kit Raphael
- 337
- |link_Raphael_kit|
Vous pouvez également les acheter séparément à partir des 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|
Schéma de Câblage
-----------------
Dans cette expérience, connectez une résistance de 220Ω à l'anode (la longue patte de la LED),
puis la résistance à 3,3 V, et connectez la cathode (la courte patte) de la LED à GPIO17 du Raspberry Pi.
Par conséquent, pour allumer une LED, nous devons mettre GPIO17 à un niveau bas (0V). Nous pouvons obtenir
ce phénomène par programmation.
.. image:: img/image48.png
:width: 800
:align: center
Procédures Expérimentales
-------------------------
**Étape 1 :** Construisez le circuit.
.. image:: img/image49.png
:width: 800
:align: center
**Étape 2 :** Accédez au dossier du code.
.. raw:: html
.. code-block::
cd ~/raphael-kit/nodejs/
.. note::
Changez de répertoire vers le chemin du code dans cette expérience via ``cd``.
**Étape 3 :** Exécutez le code
.. raw:: html
.. code-block::
sudo node blink.js
.. note::
Ici, sudo - superuser do, et python signifie exécuter le fichier par Python.
Après l'exécution du code, vous verrez la LED clignoter.
**Étape 4 :** Si vous souhaitez modifier le fichier de code blink.js,
appuyez sur ``Ctrl + C`` pour arrêter l'exécution du code. Ensuite, tapez la commande suivante pour ouvrir blink.js :
.. raw:: html
.. code-block::
nano blink.js
.. note::
nano est un outil d'édition de texte. La commande est utilisée pour ouvrir le fichier de code blink.js avec cet outil.
Appuyez sur ``Ctrl+X`` pour quitter. Si vous avez modifié le code, une invite vous demandera si
vous souhaitez enregistrer les modifications ou non. Tapez ``Y`` (enregistrer) ou ``N``
(ne pas enregistrer).
Puis appuyez sur ``Enter`` pour quitter. Tapez à nouveau nano blink.js pour voir l'effet après
la modification.
**Code**
Voici le code du programme :
.. code-block:: js
const Gpio = require('pigpio').Gpio;
const led = new Gpio(17,{mode: Gpio.OUTPUT});
var led_state = 0;
function blink_led(){
led.digitalWrite(led_state);
led_state = !led_state;
}
setInterval(blink_led,300);
Ou bien, écrivez le code sous forme de fonction fléchée plus spécifique à js :
.. code-block:: js
const Gpio = require('pigpio').Gpio;
const led = new Gpio(17,{mode: Gpio.OUTPUT});
var led_state = 0;
setInterval(() => {
led.digitalWrite(led_state);
led_state = !led_state;
}, 300);
**Explication du code**
.. code-block:: js
const Gpio = require('pigpio').Gpio;
Importer le constructeur Gpio dans le package pigpio de cette manière,
et ensuite définir une constante ``Gpio`` pour représenter ce constructeur.
Avec une variété de constructeurs, nous pouvons utiliser js pour contrôler des dispositifs électroniques.
``pigpio`` peut être utilisé pour implémenter des GPIO rapides, le contrôle PWM, le contrôle de servo, la notification de changement d'état et la gestion des interruptions.
* `pigpio - github `_
.. Un wrapper pour la bibliothèque C pigpio permettant de gérer rapidement les GPIO,
.. le PWM, le contrôle de servo, la notification de changement d'état et la gestion des interruptions avec JS sur le Raspberry Pi Zero,
.. 1, 2, 3 or 4.
.. code-block:: js
const led = new Gpio(17,{mode: Gpio.OUTPUT});
Le mot-clé ``new`` est utilisé pour construire des objets instanciés de la classe.
Connectez la LED au GPIO17 de la carte d'extension en forme de T,
définissez le mode du LedPin sur sortie et assignez-le à la constante ``led``,
c'est-à-dire construisez un objet GPIO17 ``led``, et son mode est le mode sortie.
Il existe deux façons de numéroter les broches IO sur le Raspberry Pi :
numéro BOARD et numéro BCM. Dans notre projet, nous utilisons le numéro BCM.
Vous devez définir chaque canal utilisé comme entrée ou sortie.
.. code-block:: js
function blink_led(){
led.digitalWrite(led_state);
led_state = !led_state;
}
setInterval(blink_led,300);
La méthode ``setInterval()`` peut appeler des fonctions ou calculer des expressions avec une période spécifiée (en millisecondes).
Ici, nous changeons l'état de fonctionnement de la LED avec une période de 300 ms.
* `setInterval `_
La méthode ``gpio.digitalWrite(level)`` définit le niveau du gpio à 1 ou 0.
.. code-block:: js
var led_state = 0;
setInterval(() => {
led.digitalWrite(led_state);
led_state = !led_state;
}, 300);
Réécrivez le code en tant que fonction fléchée pour rendre le code plus court.
* `Arrow Functions `_
Image du Phénomène
-------------------------
.. image:: img/image54.jpeg
:width: 800
:align: center