Jouer avec les leds
(17 révisions intermédiaires par un utilisateur sont masquées) | |||
Ligne 1 : | Ligne 1 : | ||
− | [[Category:Tutoriels| | + | [[Category:Tutoriels|4]] |
+ | Nous allons maintenant explorer d'autres méthodes pour jouer avec les led. | ||
+ | |||
+ | Sur les cartes Uno, Due et sur la plupart des autres cartes compatibles Arduino, en dehors de la Led "Power" (si elle existe) qui indique que la carte est alimentée, il n'y a qu'une seule Led pilotable, connectée en général sur la Pin D13. | ||
+ | Mais il y a des cartes qui ont des Leds accessibles supplémentaires : les carte compatibles Arduino Leonardo et ses dérivées (Pro micro, LeoDongle, et autre cartes basées sur le micro-contrôleur Atmega32U4). Ces cartes ont souvent 2 Leds supplémentaires pour indiquer qu'il y a des transferts de données qui s’opèrent sur le port USB : RxLed et TxLed. | ||
+ | |||
+ | Vous verrez ces Leds s'activer si vous utilisez le port série virtuel USB de ces cartes pour votre application, ou tout simplement lorsque vous allez téléverser un programme. Ces Leds peuvent être utilisées également pour votre application, dans la mesure ou vous ne vous servez pas du port série virtuel USB. | ||
+ | |||
+ | Dans les exemples qui suivent, nous allons cependant nous restreindre à l'utilisation de la Led D13, présente sur pratiquement toutes les cartes. L’exception est [https://www.electroseed.fr/shop/product_info.php?products_id=50 la carte LeoDongle], qui n'a pas de Led connectée sur D13, et sur laquelle on ne peut utiliser que la pin RxLed(D17). | ||
+ | |||
+ | - Commencez par supprimer tous les modules de l'interface ("Ctrl-A" puis "Suppr"). | ||
+ | |||
+ | - Ajoutez un premier module "SW Timer", comme celui que vous avez ajouté dans le tutoriel [[Premiers_pas|Premiers Pas]], mais cette fois ci, ne configurez pas la pin, laissez là sur "Not used". Choisissez 10 Hz comme fréquence. | ||
+ | |||
+ | - Ajoutez un module "Digital Out" (groupe "Output"), glissez le dans l'interface puis configurez le en choisissant la pin "D13" ou celle sur laquelle il y une Led sur la carte que vous utilisez. | ||
+ | |||
+ | - Enfin reliez la sortie du module "SW Timer" à l'entrée de ce module "Digital Out". | ||
+ | |||
+ | Vous devriez avoir ceci : | ||
+ | |||
+ | [[Fichier:blink2.jpg|link=https://www.electroseed.fr/shop/gui/index.php?file=examples/01-Basics/Blink2.txt]] | ||
+ | |||
+ | |||
+ | Téléversez le code, vous devriez avoir une Led qui clignote exactement comme dans le tutoriel précédent, la seule différence c'est que vous avez appris comment relier des modules entre eux ! | ||
+ | |||
+ | |||
+ | Maintenant sélectionnez le module "SW Timer1" et dupliquez le en tapant "Ctrl-C" puis "Ctrl-V", puis posez le nouveau module à gauche des autres modules. | ||
+ | |||
+ | - Ouvrez les propriétés de ce nouveau module, renommez le en "SW Timer2", puis choisissez 1 Hz comme fréquence. | ||
+ | |||
+ | - Enfin reliez la sortie de ce module à l'entrée de "SW Timer1". | ||
+ | |||
+ | Vous devriez avoir ceci : | ||
+ | |||
+ | [[Fichier:blink3.jpg|link=https://www.electroseed.fr/shop/gui/index.php?file=examples/01-Basics/Blink3.txt]] | ||
+ | |||
+ | |||
+ | Téléversez le code, vous devriez avoir une Led qui clignote très brièvement une fois toutes les secondes. | ||
+ | |||
+ | |||
+ | Maintenant explorons les possibilités de combinaisons des signaux avec une porte logique : | ||
+ | |||
+ | - supprimez tous les liens entre les modules en cliquant dessus puis en tapant "Suppr" | ||
+ | |||
+ | - rajoutez un module "And" que vous trouverez dans le groupe "Logic" | ||
+ | |||
+ | - réalisez les connexions suivantes : | ||
+ | |||
+ | [[Fichier:blink4.jpg|link=https://www.electroseed.fr/shop/gui/index.php?file=examples/01-Basics/Blink4.txt]] | ||
+ | |||
+ | |||
+ | Téléversez le code, vous devriez avoir une Led qui clignote très rapidement 5 fois toutes les secondes pendant une demi seconde. | ||
+ | |||
+ | |||
+ | Essayons maintenant une autre façon de jouer avec une led : | ||
+ | |||
+ | - Supprimez tous les modules. | ||
+ | |||
+ | - Ajoutez un module "Analog Out" (groupe "Output"), glissez le dans l'interface puis configurez le en choisissant la pin "D13". Si vous utilisez un Teensy et que vous avez bien sélectionné "Teensy" comme carte, vous ne trouverez pas la pin D13. C'est normal, car les Teensy n'ont pas de fonctionnalité [https://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion PWM] sur la pin D13. Vous ne pourrez donc pas pour ces cartes utiliser cette méthode (donc passez la méthode suivante). | ||
+ | |||
+ | - à gauche de ce module, ajoutez un autre module "Generator" (groupe "Synth", tout en bas de la barre latérale), configurez le type sur "Sine" et la fréquence sur 1 Hz. Laissez les autres paramètres par défaut. | ||
+ | |||
+ | - Reliez la sortie du module "Generator1" à l'entrée "Analog Out1". | ||
+ | |||
+ | |||
+ | vous devriez maintenant avoir ceci : | ||
+ | |||
+ | [[Fichier:blink_fade_analogout.jpg|link=https://www.electroseed.fr/shop/gui/index.php?file=examples/01-Basics/Blink_fade_analogout.txt]] | ||
+ | |||
+ | Téléversez le code, vous devriez avoir une Led qui clignote doucement de manière continue, au lieu d'être juste allumée ou éteinte. | ||
+ | |||
+ | |||
+ | Si vous utilisez un Teensy, ou si vous voulez réaliser cet exemple sur n'importe quelle pin de n'importe quelle carte, il va falloir utiliser un autre module "Generator", configuré en mode PWM. Ce module réalise en fait une PWM de manière logicielle, elle ne pourra donc pas monter aussi haut en fréquence qu'une PWM matérielle (qui peut monter au delà de 20 KHz, voir plus sur certaines cartes). Nous verrons plus loin comment utiliser les PWM pour contrôler des moteurs. | ||
+ | |||
+ | - Supprimez le module "Analog Out1" | ||
+ | |||
+ | - prenez à nouveau un module "Digital Out", glissez le dans l'interface puis configurez le en choisissant la pin "D13" ou celle sur laquelle il y une Led sur la carte que vous utilisez. | ||
+ | |||
+ | - entre ce module et le module "Generator1" créé précédemment, ajoutez à nouveau un module "Generator", renommez le "Generator2", configurez son type sur "PWM" et sa fréquence sur 100 Hz. Laissez les autres paramètres par défaut. | ||
+ | |||
+ | - Reliez la sortie du module "Generator1" à l'entrée "Duty" du "Generator2", et la sortie de "Generator2" à l'entrée "Digital Out1". | ||
+ | |||
+ | - Rafraîchissez la page, par exemple en tapant "F5", cela va mettre à jour le dessin des générateurs pour représenter le type de signal. | ||
+ | |||
+ | |||
+ | vous devriez maintenant avoir ceci : | ||
+ | |||
+ | [[Fichier:blinkfade.jpg|link=https://www.electroseed.fr/shop/gui/index.php?file=examples/01-Basics/BlinkFade.txt]] | ||
+ | |||
+ | |||
+ | Téléversez le code, vous devriez avoir une Led qui clignote doucement de manière continue, au lieu d'être juste allumée ou éteinte. | ||
+ | |||
+ | Grace à tous ces exemples pour les Leds, vous avez pu découvrir quelques modules de Node Blue. Vous devez commencer à sentir l'esprit de cet outil et les possibilités infinies qu'il offre. | ||
+ | |||
+ | Mais ces exemples sont plus que juste des exemples. Vous verrez au cours des tutoriaux suivants que nous utiliserons très souvent les Led pour tester des processus, car elles permettent de visualiser un état booléen (0 ou 1), mais aussi une grandeur "Analogique" en faisant varier leur intensité. | ||
+ | |||
+ | |||
+ | |||
+ | '''Petite parenthèse sur le terme "Analogique".''' | ||
+ | |||
+ | J'ai mis des guillemets autour de "Analogique", car c'est un peu un abus de language ici. Dans l'environnement Arduino, la fonction "analogWrite" utilise sauf exception les PWM matérielles des cartes, à une fréquence comprise en général entre 500 et 1000 Hz. Le module "Analog Out" de Node Blue utilise cette fonction. | ||
+ | |||
+ | Quand ce type de signal arrive sur une Led, la persistance rétinienne de nos yeux nous donne l'impression que l'intensité peut être réglée de manière continue entre 0 et 255 (c'est la plage de valeurs qu'on peut utiliser analogWrite). Cependant si vous branchez ce signal sur un amplificateur afin de piloter un moteur ou un haut-parleur, vous allez entendre un sifflement parasite à la fréquence de la PWM. C'est d'ailleurs pour cette raison qu'on essaie de monter la fréquence des PWM au delà de 20 KHz quand on pilote de moteurs, car notre oreille en général n'entend plus au delà (sauf pour les très jeunes, et plus on vieillit plus la fréquence max qu'on perçoit diminue). Les [https://fr.wikipedia.org/wiki/Classes_de_fonctionnement_d%27un_amplificateur_%C3%A9lectronique Amplificateurs audio de classe D,E ou F] utilisent également cette technique car elle permet d'avoir un très bon rendement et un coût de fabrication réduit par rapport aux Amplificateurs de classe A, B ou C. | ||
+ | |||
+ | Sur les cartes compatibles Arduino Due, Zero, sur les Teensy et sur pas mal de cartes plus récentes, il y a un ou plusieurs [https://fr.wikipedia.org/wiki/Convertisseur_num%C3%A9rique-analogique "DAC" (CNA en Français)], qui méritent plus l'appellation "Analogique", car ils ne produisent pas de fréquences parasites (ou en tous cas beaucoup moins). Bien sûr ils ont leur limitations aussi, car ils ont forcément une résolution finie (en général de 8 à 24 bits), peuvent présenter des non-linéarités, et s'ils sont alimentés par un mauvaise source de tension, ils vont transmettre les parasites qu'on leur envoie. Mais si on veut faire de l'audio ou si les fréquences parasites générées par le PWM sont gênantes, il faudra utiliser des DACs. | ||
+ | |||
+ | Nous allons maintenant continuer notre découverte des modules, et découvrir les [[Entrées_Sorties_Numériques|entrées numériques]]. |
Version actuelle en date du 13 décembre 2019 à 00:14
Nous allons maintenant explorer d'autres méthodes pour jouer avec les led.
Sur les cartes Uno, Due et sur la plupart des autres cartes compatibles Arduino, en dehors de la Led "Power" (si elle existe) qui indique que la carte est alimentée, il n'y a qu'une seule Led pilotable, connectée en général sur la Pin D13. Mais il y a des cartes qui ont des Leds accessibles supplémentaires : les carte compatibles Arduino Leonardo et ses dérivées (Pro micro, LeoDongle, et autre cartes basées sur le micro-contrôleur Atmega32U4). Ces cartes ont souvent 2 Leds supplémentaires pour indiquer qu'il y a des transferts de données qui s’opèrent sur le port USB : RxLed et TxLed.
Vous verrez ces Leds s'activer si vous utilisez le port série virtuel USB de ces cartes pour votre application, ou tout simplement lorsque vous allez téléverser un programme. Ces Leds peuvent être utilisées également pour votre application, dans la mesure ou vous ne vous servez pas du port série virtuel USB.
Dans les exemples qui suivent, nous allons cependant nous restreindre à l'utilisation de la Led D13, présente sur pratiquement toutes les cartes. L’exception est la carte LeoDongle, qui n'a pas de Led connectée sur D13, et sur laquelle on ne peut utiliser que la pin RxLed(D17).
- Commencez par supprimer tous les modules de l'interface ("Ctrl-A" puis "Suppr").
- Ajoutez un premier module "SW Timer", comme celui que vous avez ajouté dans le tutoriel Premiers Pas, mais cette fois ci, ne configurez pas la pin, laissez là sur "Not used". Choisissez 10 Hz comme fréquence.
- Ajoutez un module "Digital Out" (groupe "Output"), glissez le dans l'interface puis configurez le en choisissant la pin "D13" ou celle sur laquelle il y une Led sur la carte que vous utilisez.
- Enfin reliez la sortie du module "SW Timer" à l'entrée de ce module "Digital Out".
Vous devriez avoir ceci :
Téléversez le code, vous devriez avoir une Led qui clignote exactement comme dans le tutoriel précédent, la seule différence c'est que vous avez appris comment relier des modules entre eux !
Maintenant sélectionnez le module "SW Timer1" et dupliquez le en tapant "Ctrl-C" puis "Ctrl-V", puis posez le nouveau module à gauche des autres modules.
- Ouvrez les propriétés de ce nouveau module, renommez le en "SW Timer2", puis choisissez 1 Hz comme fréquence.
- Enfin reliez la sortie de ce module à l'entrée de "SW Timer1".
Vous devriez avoir ceci :
Téléversez le code, vous devriez avoir une Led qui clignote très brièvement une fois toutes les secondes.
Maintenant explorons les possibilités de combinaisons des signaux avec une porte logique :
- supprimez tous les liens entre les modules en cliquant dessus puis en tapant "Suppr"
- rajoutez un module "And" que vous trouverez dans le groupe "Logic"
- réalisez les connexions suivantes :
Téléversez le code, vous devriez avoir une Led qui clignote très rapidement 5 fois toutes les secondes pendant une demi seconde.
Essayons maintenant une autre façon de jouer avec une led :
- Supprimez tous les modules.
- Ajoutez un module "Analog Out" (groupe "Output"), glissez le dans l'interface puis configurez le en choisissant la pin "D13". Si vous utilisez un Teensy et que vous avez bien sélectionné "Teensy" comme carte, vous ne trouverez pas la pin D13. C'est normal, car les Teensy n'ont pas de fonctionnalité PWM sur la pin D13. Vous ne pourrez donc pas pour ces cartes utiliser cette méthode (donc passez la méthode suivante).
- à gauche de ce module, ajoutez un autre module "Generator" (groupe "Synth", tout en bas de la barre latérale), configurez le type sur "Sine" et la fréquence sur 1 Hz. Laissez les autres paramètres par défaut.
- Reliez la sortie du module "Generator1" à l'entrée "Analog Out1".
vous devriez maintenant avoir ceci :
Téléversez le code, vous devriez avoir une Led qui clignote doucement de manière continue, au lieu d'être juste allumée ou éteinte.
Si vous utilisez un Teensy, ou si vous voulez réaliser cet exemple sur n'importe quelle pin de n'importe quelle carte, il va falloir utiliser un autre module "Generator", configuré en mode PWM. Ce module réalise en fait une PWM de manière logicielle, elle ne pourra donc pas monter aussi haut en fréquence qu'une PWM matérielle (qui peut monter au delà de 20 KHz, voir plus sur certaines cartes). Nous verrons plus loin comment utiliser les PWM pour contrôler des moteurs.
- Supprimez le module "Analog Out1"
- prenez à nouveau un module "Digital Out", glissez le dans l'interface puis configurez le en choisissant la pin "D13" ou celle sur laquelle il y une Led sur la carte que vous utilisez.
- entre ce module et le module "Generator1" créé précédemment, ajoutez à nouveau un module "Generator", renommez le "Generator2", configurez son type sur "PWM" et sa fréquence sur 100 Hz. Laissez les autres paramètres par défaut.
- Reliez la sortie du module "Generator1" à l'entrée "Duty" du "Generator2", et la sortie de "Generator2" à l'entrée "Digital Out1".
- Rafraîchissez la page, par exemple en tapant "F5", cela va mettre à jour le dessin des générateurs pour représenter le type de signal.
vous devriez maintenant avoir ceci :
Téléversez le code, vous devriez avoir une Led qui clignote doucement de manière continue, au lieu d'être juste allumée ou éteinte.
Grace à tous ces exemples pour les Leds, vous avez pu découvrir quelques modules de Node Blue. Vous devez commencer à sentir l'esprit de cet outil et les possibilités infinies qu'il offre.
Mais ces exemples sont plus que juste des exemples. Vous verrez au cours des tutoriaux suivants que nous utiliserons très souvent les Led pour tester des processus, car elles permettent de visualiser un état booléen (0 ou 1), mais aussi une grandeur "Analogique" en faisant varier leur intensité.
Petite parenthèse sur le terme "Analogique".
J'ai mis des guillemets autour de "Analogique", car c'est un peu un abus de language ici. Dans l'environnement Arduino, la fonction "analogWrite" utilise sauf exception les PWM matérielles des cartes, à une fréquence comprise en général entre 500 et 1000 Hz. Le module "Analog Out" de Node Blue utilise cette fonction.
Quand ce type de signal arrive sur une Led, la persistance rétinienne de nos yeux nous donne l'impression que l'intensité peut être réglée de manière continue entre 0 et 255 (c'est la plage de valeurs qu'on peut utiliser analogWrite). Cependant si vous branchez ce signal sur un amplificateur afin de piloter un moteur ou un haut-parleur, vous allez entendre un sifflement parasite à la fréquence de la PWM. C'est d'ailleurs pour cette raison qu'on essaie de monter la fréquence des PWM au delà de 20 KHz quand on pilote de moteurs, car notre oreille en général n'entend plus au delà (sauf pour les très jeunes, et plus on vieillit plus la fréquence max qu'on perçoit diminue). Les Amplificateurs audio de classe D,E ou F utilisent également cette technique car elle permet d'avoir un très bon rendement et un coût de fabrication réduit par rapport aux Amplificateurs de classe A, B ou C.
Sur les cartes compatibles Arduino Due, Zero, sur les Teensy et sur pas mal de cartes plus récentes, il y a un ou plusieurs "DAC" (CNA en Français), qui méritent plus l'appellation "Analogique", car ils ne produisent pas de fréquences parasites (ou en tous cas beaucoup moins). Bien sûr ils ont leur limitations aussi, car ils ont forcément une résolution finie (en général de 8 à 24 bits), peuvent présenter des non-linéarités, et s'ils sont alimentés par un mauvaise source de tension, ils vont transmettre les parasites qu'on leur envoie. Mais si on veut faire de l'audio ou si les fréquences parasites générées par le PWM sont gênantes, il faudra utiliser des DACs.
Nous allons maintenant continuer notre découverte des modules, et découvrir les entrées numériques.