Arduino avec Python: comment commencer

Arduino avec Python: comment commencer

Microcontrollers existe depuis longtemps et ils sont utilisés dans tout, des machines complexes aux appareils électroménagers courants. Cependant, travailler avec eux est traditionnellement réservé aux personnes ayant une formation technique formelle, comme les techniciens et les ingénieurs électriciens. L’émergence de Arduino a rendu la conception d’applications électroniques beaucoup plus accessible à tous les développeurs. Dans ce didacticiel, vous découvrirez comment utiliser Arduino avec Python pour développer vos propres projets électroniques.

*Vous allez couvrir les bases d'Arduino avec Python et apprendre à:*
  • Configurer des circuits électroniques

  • Configurer le protocole Firmata sur Arduino

  • Écrire des applications de base pour Arduino en Python

  • Contrôlez les entrées et sorties analogiques et numériques

  • Intégrez des capteurs et des commutateurs Arduino à des applications de niveau supérieur

  • Déclencher des notifications sur votre PC et envoyer des e-mails à l’aide d’Arduino

    *Bonus gratuit:* lien: [5 réflexions sur la maîtrise de Python], un cours gratuit pour les développeurs Python qui vous montre la feuille de route et l'état d'esprit dont vous aurez besoin pour faire passer vos compétences Python au niveau supérieur.

La plate-forme Arduino

Arduino est une plate-forme open source composée de matériel et de logiciels qui permet le développement rapide de projets électroniques interactifs. Le https://vimeo.com/18539129émergence d’Arduino] a attiré l’attention de professionnels de nombreuses industries différentes, https://readwrite.com/2014/05/12/arduino-massimo-banzi-diy-electronics-hardware -hacking-builders/[contribuant] au début du Maker Movement.

Avec la popularité croissante du Maker Maker et le concept de Internet of Things, Arduino est devenu l’une des principales plateformes de prototypage électronique et de développement de MVP.

Arduino utilise son propre langage de programmation, qui est similaire au C ++. Cependant, il est possible d’utiliser Arduino avec Python ou un autre langage de programmation de haut niveau. En fait, des plates-formes comme Arduino fonctionnent bien avec Python, en particulier pour les applications qui nécessitent une intégration avec des capteurs et d’autres appareils physiques.

Dans l’ensemble, Arduino et Python peuvent faciliter un environnement d’apprentissage efficace qui encourage les développeurs à se lancer dans la conception électronique. Si vous connaissez déjà the basics of Python, vous pourrez commencer à utiliser Arduino en utilisant Python pour le contrôler.

La plate-forme Arduino comprend à la fois hardware et des produits logiciels. Dans ce didacticiel, vous utiliserez le matériel Arduino et le logiciel Python pour en savoir plus sur les circuits de base, ainsi que sur les entrées et sorties numériques et analogiques.

Matériel Arduino

Pour exécuter les exemples, vous devrez assembler les circuits en raccordant des composants électroniques . Vous pouvez généralement trouver ces articles dans les magasins de composants électroniques ou dans de bons kits de démarrage Arduino. Tu auras besoin:

  1. Une Arduino Uno ou une autre carte compatible

  2. Une LED standard de n’importe quelle couleur

  3. Un bouton poussoir

  4. Un potentiomètre de 10 KOhm

  5. Une résistance de 470 Ohm

  6. Une résistance de 10 KOhm

  7. Une planche à pain

  8. Fils de connexion de différentes couleurs et tailles

Examinons de plus près quelques-uns de ces composants.

Le composant 1 est une *Arduino Uno * ou une autre carte compatible. Arduino est un projet qui comprend de nombreux https://www.arduino.cc/en/main/boardsboardboards] et modules à des fins différentes, et Arduino Uno est le plus élémentaire d’entre eux. C’est également la carte la plus utilisée et la plus documentée de toute la famille Arduino, c’est donc un excellent choix pour les développeurs qui commencent tout juste avec l’électronique.

*Remarque:* Arduino est une plate-forme matérielle ouverte, il existe donc de nombreux autres fournisseurs qui vendent des cartes compatibles qui pourraient être utilisées pour exécuter les exemples que vous voyez ici. Dans ce didacticiel, vous apprendrez à utiliser l'Arduino Uno.

Les composants 5 et 6 sont des résistances. La plupart des résistances sont identifiées par des bandes colorées selon un color code. En général, les trois premières couleurs représentent la valeur d’une résistance, tandis que la quatrième couleur représente sa tolérance . Pour une résistance de 470 Ohm, les trois premières couleurs sont le jaune, le violet et le marron. Pour une résistance de 10 KOhm, les trois premières couleurs sont le marron, le noir et l’orange.

Le composant 7 est une maquette , que vous utilisez pour raccorder tous les autres composants et assembler les circuits. Bien qu’une planche à pain ne soit pas requise, il est recommandé d’en obtenir une si vous avez l’intention de commencer à travailler avec Arduino.

Logiciel Arduino

En plus de ces composants matériels, vous devrez installer certains logiciels. La plate-forme comprend Arduino IDE, un environnement de développement intégré pour la programmation de périphériques Arduino, entre autres outils en ligne.

Arduino a été conçu pour vous permettre de programmer les cartes sans difficulté. En général, vous suivrez ces étapes:

  1. Connectez la carte à votre PC

  2. Installer et ouvrir l’IDE Arduino

  3. Configurer les paramètres de la carte

  4. Écrivez le code

  5. Appuyez sur un bouton de l’IDE pour télécharger le programme sur la carte

Pour installer l’IDE Arduino sur votre ordinateur, téléchargez la version appropriée pour votre système d’exploitation à partir du site Web Arduino. Consultez la documentation pour les instructions d’installation:

  • Si vous utilisez Windows , utilisez le programme d’installation de Windows pour vous assurer de télécharger les pilotes nécessaires pour utiliser Arduino sous Windows. Consultez la Arduino documentation pour plus de détails.

  • Si vous utilisez Linux , vous devrez peut-être ajouter votre utilisateur à certains groupes afin d’utiliser le port série pour programmer Arduino. Ce processus est décrit dans le Arduino install guide for Linux.

  • Si vous utilisez macOS , vous pouvez installer Arduino IDE en suivant le Arduino install guide for OS X.

    *Remarque:* Vous utiliserez l'IDE Arduino dans ce tutoriel, mais Arduino fournit également un https://create.arduino.cc/getting-started/plugin[web editor] qui vous permettra de programmer des cartes Arduino à l'aide du navigateur .

Maintenant que vous avez installé l’IDE Arduino et rassemblé tous les composants nécessaires, vous êtes prêt à commencer avec Arduino! Ensuite, vous allez télécharger un "Bonjour, monde!" programme à votre conseil.

"Bonjour le monde!" Avec Arduino

L’IDE Arduino est livré avec plusieurs exemples croquis que vous pouvez utiliser pour apprendre les bases d’Arduino. Un sketch est le terme que vous utilisez pour un programme que vous pouvez télécharger sur un forum. Étant donné que l’Arduino Uno n’a pas d’écran connecté, vous aurez besoin d’un moyen de voir la sortie physique de votre programme. Vous allez utiliser l’exemple d’esquisse Blink pour faire clignoter une LED intégrée sur la carte Arduino.

Téléchargement de l’esquisse d’exemple de clignotement

Pour commencer, connectez la carte Arduino à votre PC à l’aide d’un câble USB et démarrez l’IDE Arduino. Pour ouvrir l’esquisse d’exemple Blink, accédez au menu File et sélectionnez Examples, puis 01.Basics et, enfin, Blink:

Blink example sketch sur Arduino IDE

L’exemple de code Blink sera chargé dans une nouvelle fenêtre IDE. Mais avant de pouvoir télécharger l’esquisse sur la carte, vous devez configurer l’IDE en sélectionnant votre carte et son port connecté.

Pour configurer la carte, accédez au menu Tools puis à Board. Pour Arduino Uno, vous devez sélectionner Arduino/Genuino Uno:

Après avoir sélectionné la carte, vous devez définir le port approprié. Accédez à nouveau au menu Tools, et cette fois sélectionnez Port:

Les noms des ports peuvent être différents, selon votre système d’exploitation. Sous Windows, les ports seront nommés + COM4 +, + COM5 +, ou quelque chose de similaire. Sous macOS ou Linux, vous pouvez voir quelque chose comme +/dev/ttyACM0 + ou +/dev/ttyUSB0 +. Si vous rencontrez des problèmes pour définir le port, consultez la Page de dépannage Arduino.

Après avoir configuré la carte et le port, vous êtes prêt à télécharger l’esquisse sur votre Arduino. Pour ce faire, il vous suffit d’appuyer sur le bouton Upload dans la barre d’outils IDE:

Lorsque vous appuyez sur Upload, l’EDI compile l’esquisse et la télécharge sur votre tableau. Si vous souhaitez vérifier les erreurs, vous pouvez appuyer sur Vérifier avant Upload, qui compilera uniquement votre croquis.

Le câble USB fournit une connexion série pour télécharger le programme et alimenter la carte Arduino. Pendant le téléchargement, vous verrez des voyants clignoter sur la carte. Après quelques secondes, le programme téléchargé s’exécutera et vous verrez un voyant LED clignoter une fois par seconde:

Arduino Buit-in LED clignotant

Une fois le téléchargement terminé, le câble USB continuera d’alimenter la carte Arduino. Le programme est stocké en mémoire flash sur le microcontrôleur Arduino. Vous pouvez également utiliser une batterie ou un autre power supply externe pour exécuter l’application sans câble USB.

Connexion de composants externes

Dans la section précédente, vous avez utilisé une LED qui était déjà présente sur la carte Arduino. Cependant, dans la plupart des projets pratiques, vous devrez connecter des composants externes à la carte. Pour effectuer ces connexions, Arduino dispose de plusieurs broches de différents types:

Arduino Uno Ports

Bien que ces connexions soient communément appelées broches , vous pouvez voir qu’elles ne sont pas exactement des broches physiques. Au contraire, les broches sont des trous dans une prise à laquelle vous pouvez connecter des fils de pontage. Dans la figure ci-dessus, vous pouvez voir différents groupes de broches:

  • Rectangle orange: Ce sont 13 broches numériques que vous pouvez utiliser comme entrées ou sorties. Ils sont uniquement destinés à fonctionner avec des signaux numériques, qui ont 2 niveaux différents:

    1. Niveau 0: représenté par la tension 0V

    2. Niveau 1: représenté par la tension 5V

  • Rectangle vert: Ce sont 6 broches analogiques que vous pouvez utiliser comme entrées analogiques. Ils sont censés fonctionner avec une tension arbitraire entre 0V et 5V.

  • Rectangle bleu: Ce sont 5 broches d’alimentation . Ils sont principalement utilisés pour alimenter des composants externes.

Pour commencer à utiliser des composants externes, vous devez connecter une LED externe pour exécuter l’exemple d’esquisse Blink. La LED intégrée est connectée à la broche numérique # 13 . Alors, connectons une LED externe à cette broche et vérifions si elle clignote. (Une LED standard est l’un des composants que vous avez vu répertoriés earlier.)

Avant de connecter quoi que ce soit à la carte Arduino, il est recommandé de le déconnecter de l’ordinateur. Avec le câble USB débranché, vous pourrez connecter la LED à votre carte:

Circuit pour esquisse clignotante

Notez que la figure montre la carte avec les broches numériques maintenant face à vous.

Utilisation d’une planche à pain

Les projets de circuits électroniques impliquent généralement de tester plusieurs idées, avec l’ajout de nouveaux composants et des ajustements au fur et à mesure. Cependant, il peut être difficile de connecter directement des composants, surtout si le circuit est volumineux.

Pour faciliter le prototypage, vous pouvez utiliser un breadboard pour connecter les composants. Il s’agit d’un appareil avec plusieurs trous qui sont connectés d’une manière particulière afin que vous puissiez facilement connecter des composants à l’aide de fils de pontage:

Breadboard

Vous pouvez voir quels trous sont interconnectés en regardant les lignes colorées. Vous utiliserez les trous sur les côtés de la maquette pour alimenter le circuit:

*Connectez un trou sur la* ligne rouge * à la source d'alimentation.
*Connectez un trou sur la* ligne bleue *au sol.

Ensuite, vous pouvez facilement connecter des composants à la source d’alimentation ou au sol en utilisant simplement les autres trous sur les lignes rouges et bleues. Les trous au milieu de la planche à pain sont connectés comme indiqué par les couleurs. Vous les utiliserez pour établir des connexions entre les composants du circuit. Ces deux sections internes sont séparées par une petite dépression, sur laquelle vous pouvez connecter des circuits intégrés (CI).

Vous pouvez utiliser une maquette pour assembler le circuit utilisé dans l’esquisse d’exemple Blink:

Circuit pour croquis de clignotement sur planche à pain

Pour ce circuit, il est important de noter que la LED doit être connectée en fonction de sa polarité ou elle ne fonctionnera pas. La borne positive de la LED est appelée* anode et est généralement la plus longue. La borne négative est appelée cathode * et est plus courte. Si vous utilisez un composant récupéré, vous pouvez également identifier les bornes en recherchant un côté plat sur la LED elle-même. Cela indiquera la position de la borne négative.

Lorsque vous connectez une LED à une broche Arduino, vous aurez toujours besoin d’une résistance pour limiter son courant et éviter de brûler la LED prématurément. Ici, vous utilisez une résistance de 470 Ohms pour ce faire. Vous pouvez suivre les connexions et vérifier que le circuit est le même:

  • La résistance est connectée à la broche numérique 13 de la carte Arduino.

  • L’anode LED est connectée à l’autre borne de la résistance.

  • La cathode LED est connectée à la terre (GND) via la ligne bleue de trous.

Pour une explication plus détaillée, consultez Comment utiliser une planche à pain.

Une fois la connexion terminée, rebranchez l’Arduino sur le PC et réexécutez l’esquisse Blink:

Arduino LED intégrées et externes clignotant

Comme les deux LED sont connectées à la broche numérique 13, elles clignotent ensemble lorsque l’esquisse est en cours d’exécution.

"Bonjour le monde!" Avec Arduino et Python

Dans la section précédente, vous avez téléchargé l’esquisse Blink sur votre carte Arduino. Les croquis Arduino sont écrits dans un langage similaire à C ++ et sont compilés et enregistrés sur la mémoire flash du microcontrôleur lorsque vous appuyez sur Upload. Bien que vous puissiez utiliser another language pour programmer directement le microcontrôleur Arduino, ce n’est pas une tâche triviale!

Cependant, il existe certaines approches que vous pouvez adopter pour utiliser Arduino avec Python ou d’autres langages. Une idée est d’exécuter le programme principal sur un PC et d’utiliser la connexion série pour communiquer avec Arduino via le câble USB. Le croquis serait chargé de lire les entrées, d’envoyer les informations au PC et d’obtenir des mises à jour du PC pour mettre à jour les sorties Arduino.

Pour contrôler Arduino à partir du PC, vous devez concevoir un protocole pour la communication entre le PC et Arduino. Par exemple, vous pouvez envisager un protocole avec des messages comme celui-ci:

  • LA VALEUR DU PIN 13 EST ÉLEVÉE: utilisé pour informer le PC de l’état des broches d’entrée numérique

  • SET PIN 11 LOW: utilisé pour dire à Arduino de définir les états des broches de sortie

Avec le protocole défini, vous pouvez écrire un croquis Arduino pour envoyer des messages au PC et mettre à jour les états des broches selon le protocole. Sur le PC, vous pouvez écrire un programme pour contrôler l’Arduino via une connexion série, basé sur le protocole que vous avez conçu. Pour cela, vous pouvez utiliser la langue et les bibliothèques que vous préférez, comme Python et la bibliothèque PySerial.

Heureusement, il existe des protocoles standard pour faire tout cela! Firmata est l’un d’entre eux. Ce protocole établit un format de communication série qui vous permet de lire les entrées numériques et analogiques, ainsi que d’envoyer des informations aux sorties numériques et analogiques.

L’IDE Arduino comprend des croquis prêts à l’emploi qui piloteront Arduino via Python avec le protocole Firmata. Côté PC, il existe des implémentations du protocole dans plusieurs langues, dont Python. Pour commencer avec Firmata, utilisons-le pour implémenter un "Hello, World!" programme.

Téléchargement de l’esquisse Firmata

Avant d’écrire votre programme Python pour piloter Arduino, vous devez télécharger l’esquisse Firmata afin de pouvoir utiliser ce protocole pour contrôler la carte. L’esquisse est disponible dans les exemples intégrés de l’IDE Arduino. Pour l’ouvrir, accédez au menu Fichier, puis Exemples, suivi de Firmata, et enfin StandardFirmata:

L’esquisse sera chargée dans une nouvelle fenêtre IDE. Pour le télécharger sur l’Arduino, vous pouvez suivre les mêmes étapes que vous avez faites auparavant:

  1. Branchez le câble USB sur le PC.

  2. Sélectionnez la carte et le port appropriés sur l’IDE.

  3. Appuyez sur Upload.

Une fois le téléchargement terminé, vous ne remarquerez aucune activité sur l’Arduino. Pour le contrôler, vous avez toujours besoin d’un programme qui peut communiquer avec la carte via la connexion série. Pour travailler avec le protocole Firmata en Python, vous aurez besoin du package pyFirmata, que vous pouvez installer avec + pip +:

$ pip install pyfirmata

Une fois l’installation terminée, vous pouvez exécuter une application Blink équivalente à l’aide de Python et Firmata:

 1 import pyfirmata
 2 import time
 3
 4 board = pyfirmata.Arduino('/dev/ttyACM0')
 5
 6 while True:
 7     board.digital[13].write(1)
 8     time.sleep(1)
 9     board.digital[13].write(0)
10     time.sleep(1)

Voici comment ce programme works. Vous importez + pyfirmata + et l’utilisez pour établir une connexion série avec la carte Arduino, qui est représentée par l’objet + board + à la ligne 4. Vous configurez également le port dans cette ligne en passant un argument à + ​​pyfirmata.Arduino () +. Vous pouvez utiliser l’IDE Arduino pour trouver le port.

+ board.digital + est une liste dont les éléments représentent les broches numériques de l’Arduino. Ces éléments ont les méthodes + read () + et + write () +, qui liront et écriront l’état des broches. Comme la plupart des programmes de périphériques intégrés, ce programme se compose principalement d’une boucle infinie:

  • Sur la ligne 7, la broche numérique 13 est activée, ce qui allume la LED pendant une seconde.

  • Dans la ligne 9, cette broche est désactivée, ce qui éteint la LED pendant une seconde.

Maintenant que vous connaissez les bases de la façon de contrôler un Arduino avec Python, passons en revue certaines applications pour interagir avec ses entrées et sorties.

Lecture des entrées numériques

*Les entrées numériques* ne peuvent avoir que deux valeurs possibles. Dans un circuit, chacune de ces valeurs est représentée par une tension différente. Le tableau ci-dessous montre la représentation d'entrée numérique pour une carte Arduino Uno standard:
Value Level Voltage

0

Low

0V

1

High

5V

Pour contrôler la LED, vous utiliserez un bouton-poussoir pour envoyer des valeurs d’entrée numérique à l’Arduino. Le bouton doit envoyer 0 V à la carte lorsqu’il est relâché et 5 V à la carte lorsqu’il est enfoncé. La figure ci-dessous montre comment connecter le bouton à la carte Arduino:

Circuit pour entrée numérique

Vous remarquerez peut-être que la LED est connectée à l’Arduino sur la broche numérique 13, comme auparavant. La broche numérique 10 est utilisée comme entrée numérique. Pour connecter le bouton-poussoir, vous devez utiliser la résistance 10 KOhm, qui agit comme pull down dans ce circuit. Une résistance pull down garantit que l’entrée numérique obtient 0V lorsque le bouton est relâché.

Lorsque vous relâchez le bouton, vous ouvrez la connexion entre les deux fils du bouton. Puisqu’il n’y a pas de courant traversant la résistance, la broche 10 se connecte simplement à la masse (GND). L’entrée numérique obtient 0V, ce qui représente l’état 0 (ou low ). Lorsque vous appuyez sur le bouton, vous appliquez 5 V à la fois à la résistance et à l’entrée numérique. Un courant traverse la résistance et l’entrée numérique obtient 5V, ce qui représente l’état 1 (ou haut ).

Vous pouvez également utiliser une planche à pain pour assembler le circuit ci-dessus:

Circuit pour entrée numérique sur maquette

Maintenant que vous avez assemblé le circuit, vous devez exécuter un programme sur le PC pour le contrôler à l’aide de Firmata. Ce programme allumera la LED, en fonction de l’état du bouton poussoir:

 1 import pyfirmata
 2 import time
 3
 4 board = pyfirmata.Arduino('/dev/ttyACM0')
 5
 6 it = pyfirmata.util.Iterator(board)
 7 it.start()
 8
 9 board.digital[10].mode = pyfirmata.INPUT
10
11 while True:
12     sw = board.digital[10].read()
13     if sw is True:
14         board.digital[13].write(1)
15     else:
16         board.digital[13].write(0)
17     time.sleep(0.1)

Parcourons ce programme:

  • Les lignes 1 et 2 importent + pyfirmata + et + time +.

  • La ligne 4 utilise + pyfirmata.Arduino () + pour configurer la connexion avec la carte Arduino.

  • La ligne 6 assigne un itérateur qui sera utilisé pour lire l’état des entrées du circuit.

  • La ligne 7 démarre l’itérateur, qui maintient une boucle en parallèle avec votre code principal. La boucle exécute + board.iterate () + pour mettre à jour les valeurs d’entrée obtenues à partir de la carte Arduino.

  • La ligne 9 définit la broche 10 comme entrée numérique avec + pyfirmata.INPUT +. Cela est nécessaire car la configuration par défaut consiste à utiliser des broches numériques comme sorties.

  • La ligne 11 démarre une boucle infinie + while +. Cette boucle lit l’état de la broche d’entrée, la stocke dans + sw + et utilise cette valeur pour allumer ou éteindre la LED en modifiant la valeur de la broche 13.

  • La ligne 17 attend 0,1 seconde entre les itérations de la boucle + while +. Ce n’est pas strictement nécessaire, mais c’est une bonne astuce pour éviter de surcharger le CPU, qui atteint 100% de charge lorsqu’il n’y a pas de commande d’attente dans la boucle.

+ pyfirmata + offre également une syntaxe plus compacte pour travailler avec les broches d’entrée et de sortie. Cela peut être une bonne option lorsque vous travaillez avec plusieurs broches. Vous pouvez réécrire le programme précédent pour avoir une syntaxe plus compacte:

 1 import pyfirmata
 2 import time
 3
 4 board = pyfirmata.Arduino('/dev/ttyACM0')
 5
 6 it = pyfirmata.util.Iterator(board)
 7 it.start()
 8
 9 digital_input = board.get_pin('d:10:i')
10 led = board.get_pin('d:13:o')
11
12 while True:
13     sw = digital_input.read()
14     if sw is True:
15         led.write(1)
16     else:
17         led.write(0)
18     time.sleep(0.1)

Dans cette version, vous utilisez + board.get_pin () + pour créer deux objets. + digital_input + représente l’état de l’entrée numérique, et + led + représente l’état de la LED. Lorsque vous exécutez cette méthode, vous devez passer un argument de chaîne composé de trois éléments séparés par des deux-points:

  1. Le type de la broche (+ a + pour analogique ou + d + pour numérique)

  2. Le numéro de la broche

  3. Le mode de la broche (+ i + pour l’entrée ou + o + pour la sortie)

Puisque + digital_input + est une entrée numérique utilisant la broche 10, vous passez l’argument + 'd: 10: i' +. L’état de la LED est réglé sur une sortie numérique à l’aide de la broche 13, donc l’argument + led + est + 'd: 13: o' +.

Lorsque vous utilisez + board.get_pin () +, il n’est pas nécessaire de configurer explicitement la broche 10 comme entrée comme vous l’avez fait auparavant avec + pyfirmata.INPUT +. Une fois les broches définies, vous pouvez accéder à l’état d’une broche d’entrée numérique à l’aide de + lecture () +, et définir l’état d’une broche de sortie numérique avec + écriture () +.

Les entrées numériques sont largement utilisées dans les projets électroniques. Plusieurs capteurs fournissent des signaux numériques, comme des capteurs de présence ou de porte, qui peuvent être utilisés comme entrées pour vos circuits. Cependant, dans certains cas, vous devrez mesurer des valeurs analogiques, telles que la distance ou des quantités physiques. Dans la section suivante, vous verrez comment lire les entrées analogiques en utilisant Arduino avec Python.

Lecture des entrées analogiques

Contrairement aux entrées numériques, qui peuvent uniquement être activées ou désactivées, les entrées analogiques sont utilisées pour lire les valeurs dans une certaine plage. Sur l’Arduino Uno, la tension à une entrée analogique varie de 0V à 5V. Des capteurs appropriés sont utilisés pour mesurer les quantités physiques, telles que les distances. Ces capteurs sont chargés de coder ces quantités physiques dans la plage de tension appropriée afin qu’elles puissent être lues par l’Arduino.

Pour lire une tension analogique, l’Arduino utilise un *analog-to-digital converter (ADC) *, qui convertit la tension d’entrée en un nombre numérique avec un nombre fixe de bits. Ceci détermine la résolution de la conversion. L’Arduino Uno utilise un ADC 10 bits et peut déterminer 1024 niveaux de tension différents.

La plage de tension pour une entrée analogique est codée en nombres allant de 0 à 1023. Lorsque 0V est appliqué, l’Arduino l’encode au nombre 0 . Lorsque 5 V est appliqué, le nombre codé est 1023 . Toutes les valeurs de tension intermédiaires sont codées proportionnellement.

Un potentiometer est une résistance variable que vous pouvez utiliser pour régler la tension appliquée à une entrée analogique Arduino. Vous allez le connecter à une entrée analogique pour contrôler la fréquence d’une LED clignotante:

Circuit pour entrée analogique

Dans ce circuit, la LED est configurée comme auparavant. Les bornes d’extrémité du potentiomètre sont connectées à des broches de masse (GND) et 5V. De cette façon, la borne centrale (le curseur) peut avoir n’importe quelle tension dans la plage 0V à 5V selon sa position, qui est connectée à l’Arduino sur la broche analogique A0.

À l’aide d’une planche à pain, vous pouvez assembler ce circuit comme suit:

Circuit pour entrée analogique sur planche à pain

Avant de contrôler la LED, vous pouvez utiliser le circuit pour vérifier les différentes valeurs lues par l’Arduino, en fonction de la position du potentiomètre. Pour ce faire, exécutez le programme suivant sur votre PC:

 1 import pyfirmata
 2 import time
 3
 4 board = pyfirmata.Arduino('/dev/ttyACM0')
 5 it = pyfirmata.util.Iterator(board)
 6 it.start()
 7
 8 analog_input = board.get_pin('a:0:i')
 9
10 while True:
11     analog_value = analog_input.read()
12     print(analog_value)
13     time.sleep(0.1)

À la ligne 8, vous définissez + analog_input + comme broche d’entrée analogique A0 avec l’argument + 'a: 0: i' +. Dans la boucle infinie + while +, vous lisez cette valeur, la stockez dans + analog_value + et affichez la sortie vers la console avec + print () +. Lorsque vous déplacez le potentiomètre pendant l’exécution du programme, vous devez générer une sortie similaire à ceci:

0.0
0.0293
0.1056
0.1838
0.2717
0.3705
0.4428
0.5064
0.5797
0.6315
0.6764
0.7243
0.7859
0.8446
0.9042
0.9677
1.0
1.0

Les valeurs imprimées changent, allant de 0 lorsque la position du potentiomètre est à une extrémité à 1 lorsqu’il est à l’autre extrémité. Notez qu’il s’agit de valeurs flottantes, qui peuvent nécessiter une conversion en fonction de l’application.

Pour modifier la fréquence de la LED clignotante, vous pouvez utiliser la valeur + analog_value + pour contrôler la durée pendant laquelle la LED sera allumée ou éteinte:

 1 import pyfirmata
 2 import time
 3
 4 board = pyfirmata.Arduino('/dev/ttyACM0')
 5 it = pyfirmata.util.Iterator(board)
 6 it.start()
 7
 8 analog_input = board.get_pin('a:0:i')
 9 led = board.get_pin('d:13:o')
10
11 while True:
12     analog_value = analog_input.read()
13     if analog_value is not None:
14         delay = analog_value + 0.01
15         led.write(1)
16         time.sleep(delay)
17         led.write(0)
18         time.sleep(delay)
19     else:
20         time.sleep(0.1)

Ici, vous calculez + delay + comme + analog_value + 0.01 + pour éviter d’avoir + delay + égal à zéro. Sinon, il est courant d’obtenir une «+ valeur_analogue » de « Aucun » au cours des premières itérations. Pour éviter d'obtenir une erreur lors de l'exécution du programme, vous utilisez un conditionnel à la ligne 13 pour tester si ` analog_value ` est ` None +`. Ensuite, vous contrôlez la période de la LED clignotante.

Essayez d’exécuter le programme et de modifier la position du potentiomètre. Vous remarquerez la fréquence des changements de voyants clignotants:

À présent, vous avez vu comment utiliser les entrées numériques, les sorties numériques et les entrées analogiques sur vos circuits. Dans la section suivante, vous verrez comment utiliser les sorties analogiques.

Utilisation des sorties analogiques

Dans certains cas, il est nécessaire d’avoir une sortie analogique pour piloter un appareil qui nécessite un signal analogique. L’Arduino n’inclut pas de véritable sortie analogique, celle où la tension peut être réglée sur n’importe quelle valeur dans une certaine plage. Cependant, Arduino comprend plusieurs sorties *Pulse Width Modulation * (PWM).

PWM est une technique de modulation dans laquelle une sortie numérique est utilisée pour générer un signal avec une puissance variable. Pour ce faire, il utilise un signal numérique de fréquence constante, dans lequel le duty cycle * est modifié en fonction de la puissance souhaitée. Le rapport cyclique représente la fraction de la période pendant laquelle le signal est réglé sur *haut