.. 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.9_js: 2.1.9 Joystick ================ .. note:: .. image:: ../img/mcp3008_and_adc0834.jpg :width: 25% :align: left Selon la version de votre kit, identifiez si vous disposez d’un **ADC0834** ou d’un **MCP3008** et suivez la section correspondante. Introduction -------------- Dans ce projet, nous allons apprendre comment fonctionne un joystick. Nous manipulerons le joystick et afficherons les résultats à l'écran. Required Components -------------------------------- Pour ce projet, nous avons besoin des composants suivants. .. image:: ../img/image317.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 DU COMPOSANT - 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_joystick` - \- * - :ref:`cpn_adc0834` - \- Schematic Diagram ----------------------- Lors de la lecture des données du joystick, il y a quelques différences entre les axes : les données des axes X et Y sont analogiques, nécessitant l'utilisation de l'ADC0834 pour convertir la valeur analogique en valeur numérique. Les données de l'axe Z sont numériques, vous pouvez donc les lire directement avec le GPIO ou utiliser également l'ADC pour les lire. .. image:: ../img/image319.png .. image:: ../img/image320.png Procédures expérimentales ----------------------------- **Étape 1 :** Construisez le circuit. .. image:: ../img/image193.png **Étape 2 :** Allez dans le dossier du code. .. raw:: html .. code-block:: cd ~/raphael-kit/nodejs/ **Étape 3 :** Exécutez le code. .. raw:: html .. code-block:: sudo node joystick.js Après l'exécution du code, manipulez le joystick, puis les valeurs correspondantes de x, y, Btn s'affichent à l'écran. **Code** .. code-block:: js const Gpio = require('pigpio').Gpio; const ADC0834 = require('./adc0834.js').ADC0834; const adc = new ADC0834(17, 18, 22); const btn = new Gpio(25, { mode: Gpio.INPUT, pullUpDown: Gpio.PUD_UP, }); setInterval(async() => { x_val = await adc.read(0); y_val = await adc.read(1); btn_val = btn.digitalRead(); console.log(`x = ${x_val}, y = ${y_val}, btn = ${btn_val}\n`); }, 100); **Explication du code** .. code-block:: js const ADC0834 = require('./adc0834.js').ADC0834; Nous importons un constructeur ``ADC0834`` pour utiliser le module adc0834. .. code-block:: js setInterval(async() => { x_val = await adc.read(0); y_val = await adc.read(1); btn_val = btn.digitalRead(); console.log(`x = ${x_val}, y = ${y_val}, btn = ${btn_val}\n`); }, 100); Lors de la lecture des valeurs de plusieurs canaux de l'ADC0834 en même temps, une programmation asynchrone est nécessaire. Nous construisons ici une fonction promise, et utilisons l'instruction await de la fonction async pour écrire élégamment cette tâche asynchrone complexe. * `Promise `_ * `Async Function `_ Image du phénomène ---------------------- .. image:: ../img/image194.jpeg