Outils pour utilisateurs

Outils du site


issue131:gcb

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue131:gcb [2018/04/09 14:22] d52frissue131:gcb [2018/04/12 17:16] (Version actuelle) andre_domenech
Ligne 1: Ligne 1:
 **In the last issue I showed you how to read the voltage with a potentiometer and send the values over the serial line.   In this issue we will read the ‘state’ of a switch using  different techniques and take some actions after the state or change of state is recognized.  For debugging purposes I will eventually send some messages to the serial line. For the hardware in this article you will need a momentary switch  - everyone should have a momentary switch. See https://learn.sparkfun.com/tutorials/switch-basics/momentary-switches for an overview of switches. We will use a similar one like this https://www.sparkfun.com/products/97 as it is breadboard friendly and gives a good haptic feedback (clicking sound). ** **In the last issue I showed you how to read the voltage with a potentiometer and send the values over the serial line.   In this issue we will read the ‘state’ of a switch using  different techniques and take some actions after the state or change of state is recognized.  For debugging purposes I will eventually send some messages to the serial line. For the hardware in this article you will need a momentary switch  - everyone should have a momentary switch. See https://learn.sparkfun.com/tutorials/switch-basics/momentary-switches for an overview of switches. We will use a similar one like this https://www.sparkfun.com/products/97 as it is breadboard friendly and gives a good haptic feedback (clicking sound). **
  
-Dans le dernier numéro, je vous ai montré comment lire la tension avec un potentiomètre et envoyer les valeurs sur une ligne série. Dans ce numéro, nous lirons l'« état » d'un interrupteur en utilisant plusieurs techniques et ferons des actions après la reconnaissance de cet état ou d'un changement d'état. Pour des besoins de débogage, j'enverrai finalement des messages sur la ligne série. Comme matériel dans cet article, nous aurons besoin d'un bouton-poussoir - tout le monde un poussoir. Voyez https://learn.sparkfun.com/tutorials/switch-basics/momentary-switches pour un aperçu des poussoirs. Nous en utiliserons un semblable à celui-ci : https://www.sparkfun.com/products/97 car il est pratique pour une plaque d'essai et donne un retour tactile (son du clic).+Dans le dernier numéro, je vous ai montré comment lire la tension avec un potentiomètre et envoyer les valeurs sur une ligne série. Dans ce numéro, nous lirons l'« état » d'un interrupteur en utilisant plusieurs techniques et ferons des actions après la reconnaissance de cet état ou d'un changement d'état. Pour des besoins de débogage, j'enverrai finalement des messages sur la ligne série. Comme matériel dans cet article, vous aurez besoin d'un bouton-poussoir - tout le monde devrait avoir un poussoir. Voyez https://learn.sparkfun.com/tutorials/switch-basics/momentary-switches pour un aperçu des poussoirs. Nous en utiliserons un semblable à celui-ci : https://www.sparkfun.com/products/97 car il est pratique pour une plaque d'essai et donne un retour tactile (son du clic).
  
 **Using a switch as Input **Using a switch as Input
Ligne 17: Ligne 17:
 • Une résistance de tirage externe. • Une résistance de tirage externe.
 • Une résistance d'écoulement externe. • Une résistance d'écoulement externe.
-• Pas de résistance. « Il y a un loup » dans cette méthode ; aussi, soyez prudent pour lire ce composant.+• Pas de résistance. « Il y a un loup » dans cette méthode ; aussi, lisez cette partie-ci avec beaucoup d'attention.
  
 **Internal pull-up resistor **Internal pull-up resistor
Ligne 25: Ligne 25:
 Résistance de tirage interne Résistance de tirage interne
  
-Certains microcontrôleurs AVR et PIC ont des résistances internes de liaison au + qui peuvent être activées. Regardez le manuel de votre microcontrôleur s'il en a une et comment l'activer. Généralement, ces résistances sont qualifiées de « weak » (faible qualité) car leur résistance varie avec la température et suivant le composant. Sur le microcontrôleur choisi pour cet ensemble d'articles, le ATtiny13a, le registre de données et le registre de direction du Port B (voir p. 57 du manuel) doivent être initialisés en entrée. Si vous paramétrez une borne en entrée, la résistance de tirage est hors circuit par défaut dans Great Cow BASIC ; aussi, elle doit être activée en premier lieu. Avec ce tirage interne, le microcontrôleur lit une valeur élevée (le bouton étant relâché) ou faible (le bouton étant appuyé). Voici l'extrait de code pour activer la résistance interne pour l'ensemble des ports ou pour une seule borne dans Great Cow BASIC (voir le code ci-dessus). +Certains microcontrôleurs AVR et PIC ont des résistances internes de liaison au + qui peuvent être activées. Regardez le manuel de votre microcontrôleur s'il en a un et comment l'activer. Généralement, ces résistances sont qualifiées de « weak » (faible qualité) car leur résistance varie avec la température et suivant le composant. Sur le microcontrôleur choisi pour cet ensemble d'articles, le ATtiny13a, le registre de données et le registre de direction du Port B (voir p. 57 du manuel) doivent être initialisés en entrée. Si vous paramétrez une borne en entrée, la résistance de tirage est hors circuit par défaut dans Great Cow BASIC ; aussi, elle doit être activée en premier lieu. Avec ce tirage interne, le microcontrôleur lit une valeur élevée (le bouton étant relâché) ou faible (le bouton étant enfoncé). Voici l'extrait de code pour activer la résistance interne pour l'ensemble des ports ou pour une seule borne dans Great Cow BASIC (voir le code ci-dessus). 
  
 **External pull-up resistor **External pull-up resistor
Ligne 36: Ligne 36:
 Résistance de tirage externe Résistance de tirage externe
  
-Si des problèmes se font jour avec le tirage interne - comme indiqué précédemment, la température ou la technique de fabrication peuvent en être le cause - ,vous pouvez obtenir le même résultat en ajoutant une résistance externe. Une bonne valeur pour celle-ci est 10 kΩ et vous pouvez utiliser n'importe quelle qualité que vous avez sous la main. La résistance externe opère de la même manière que la résistance interne et gérera l'environnement de travail : la résistance tire le signal vers le haut (quand le poussoir n'est pas pressé) et une valeur basse de l'entrée est lue (quand le bouton est appuyé). Dans ce cas, vous pouvez définir vos entrées comme d'habitude sans activer les résistances de tirage internes. Si vous utilisez un tirage, la définition des entrées en Great Cow BASIC sera comme ceci : +Si des problèmes se font jour avec le tirage interne - comme indiqué précédemment, la température ou la technique de fabrication peuvent en être le cause - , vous pouvez obtenir le même résultat en ajoutant une résistance externe. Une bonne valeur pour celle-ci est 10 kΩ et vous pouvez utiliser n'importe quelle qualité que vous avez sous la main. La résistance externe opère de la même manière que la résistance interne et gérera l'environnement de travail : la résistance tire le signal vers le haut (quand le poussoir n'est pas enfoncé) et une valeur basse de l'entrée est lue (quand le bouton est enfoncé). Dans ce cas, vous pouvez définir vos entrées comme d'habitude sans activer les résistances de tirage internes. Si vous utilisez un tirage, la définition des entrées en Great Cow BASIC sera comme ceci : 
  
 #CHIP tiny13a, 1.2 #CHIP tiny13a, 1.2
Ligne 50: Ligne 50:
 Résistance d'écoulement externe Résistance d'écoulement externe
  
-La résistance d'écoulement agit à l'inverse de la résistance de tirage. Au lieu de tirer le signal vers le haut (+), vous tirez le signal vers le bas (Masse). La résistance tire le signal vers le bas (quand le bouton est relâché) et la valeur d'entrée est élevée (quand le bouton est appuyé). Là encore, une résistance de 10 kΩ est recommandée. Les entrées sont définies de la même manière qu'avec la résistance de tirage. La définition des ports dans Great Cow BASIC, en cas d'utilisation d'une résistance d'écoulement, sera comme suit :+La résistance d'écoulement agit à l'inverse de la résistance de tirage. Au lieu de tirer le signal vers le haut (+), vous tirez le signal vers le bas (Masse). La résistance tire le signal vers le bas (quand le bouton est relâché) et la valeur d'entrée est élevée (quand le bouton est enfoncé). Là encore, une résistance de 10 kΩ est recommandée. Les entrées sont définies de la même manière qu'avec la résistance de tirage externe. La définition des ports dans Great Cow BASIC, en cas d'utilisation d'une résistance d'écoulement, sera comme suit :
  
 #CHIP tiny13a, 1.2 #CHIP tiny13a, 1.2
Ligne 57: Ligne 57:
 **The question is now, are there any differences between the pull-up and the pull-down resistance in software other than the name and the opposite direction with respect to Vcc and GND?  Yes.   If you read a switch which uses a pull-up resistor, the signal is inverted.  A high value means the button is not pressed (FALSE) and a low value means the button is pressed (TRUE). If you consider to connect your switches through a pull-down resistor the high value is button pressed (TRUE) and in case of the low value the button is not pressed (FALSE). In pseudocode it would be as shown below.** **The question is now, are there any differences between the pull-up and the pull-down resistance in software other than the name and the opposite direction with respect to Vcc and GND?  Yes.   If you read a switch which uses a pull-up resistor, the signal is inverted.  A high value means the button is not pressed (FALSE) and a low value means the button is pressed (TRUE). If you consider to connect your switches through a pull-down resistor the high value is button pressed (TRUE) and in case of the low value the button is not pressed (FALSE). In pseudocode it would be as shown below.**
  
-La question est maintenant de savoir s'il y a des différences dans le logiciel entre la résistance de tirage et celle d'écoulement, autres que leurs nom et leur fonctionnement inverse par rapport au + et à la masse. Oui. Si vous lisez un interrupteur qui utilise une résistance de tirage, le signal est inversé. Une valeur haute signifie que le bouton n'est pas pressé (FAUX) et une valeur faible qu'il est pressé (VRAI). Si vous choisissez de connecter vos interrupteurs par l'intermédiaire d'une résistance d'écoulement, la valeur haute indique que le bouton est appuyé (VRAI) et, dans le cas d'une valeur basse, le bouton est relâché (FAUX). En pseudo-code, ce sera comme présenté ci-dessous +La question est maintenant de savoir s'il y a des différences dans le logiciel entre la résistance de tirage et celle d'écoulement, autres que leurs nom et leur fonctionnement inverse par rapport au + et à la masse. Oui. Si vous lisez un interrupteur qui utilise une résistance de tirage, le signal est inversé. Une valeur haute signifie que le bouton n'est pas enfoncé (FAUX) et une valeur faible qu'il est enfoncé (VRAI). Si vous choisissez de connecter vos interrupteurs par l'intermédiaire d'une résistance d'écoulement, la valeur haute indique que le bouton est enfoncé (VRAI) et, dans le cas d'une valeur basse, le bouton est relâché (FAUX). En pseudo-code, ce sera comme présenté ci-dessous
  
 **No Resistor **No Resistor
Ligne 65: Ligne 65:
 Pas de résistance Pas de résistance
  
-Si vous comptez lire l'interrupteur seul sans aucune résistance, ce qu'on pourrait appeler le quatrième méthode, ce n'est pas une bonne technique. La connexion du + et de la masse à travers un interrupteur sur votre borne d'entrée est connue comme étant un court-circuit. Une résistance de tirage place l'entrée dans un état connu.+Si vous comptez lire l'interrupteur seul sans aucune résistance, ce qu'on pourrait appeler la quatrième méthode, ce n'est pas une bonne technique. La connexion du + et de la masse à travers un interrupteur sur votre borne d'entrée est connue comme étant un court-circuit. Une résistance de tirage place l'entrée dans un état connu.
  
 **Debouncing **Debouncing
Ligne 75: Ligne 75:
 Anti-rebond Anti-rebond
  
-L'anti-rebond d'un interrupteur est une de ces choses avec lesquelles vous devez généralement vivre quand vous jouez avec des interrupteurs et des circuits digitaux. Si vous voulez entrer un signal d'interrupteur manuel dans un circuit numérique, vous devrez supprimer les rebonds de sorte qu'un seul appui ne semble pas être des appuis multiples.+L'anti-rebond d'un interrupteur est une de ces choses avec lesquelles vous devez généralement vivre quand vous jouez avec des interrupteurs et des circuits numériques. Si vous voulez entrer un signal d'interrupteur manuel dans un circuit numérique, vous devrez supprimer les rebonds de sorte qu'un seul appui ne semble pas être des appuis multiples.
  
-Un autre problème concernant un interrupteur est que son état est flottant : le signal n'est pas aussi précis qu'il le devrait et le microcontrôleur lit des faux positifs ou des faux négatifs. Peut-être que l'interrupteur produit un signal pendant que vous appuyez dessus ou il produit un signal quand vous le relâchez. Comment pouvez-vous l'identifier ? Le bouton est-il appuyé ou non ? Pour de tels problèmes,il existe plusieurs solutions pour les résoudre ; cette technique est appelée anti-rebond.+Un autre problème concernant un interrupteur est que son état est flottant : le signal n'est pas aussi précis qu'il devrait l'être et le microcontrôleur lit des faux positifs ou des faux négatifs. Peut-être que l'interrupteur produit un signal pendant que vous appuyez dessus ou il produit un signal quand vous le relâchez. Comment pouvez-vous l'identifier ? Le bouton est-il enfoncé ou pas ? Pour de tels problèmes, il existe plusieurs solutions ; cette technique est appelée anti-rebond.
  
 **As with many topics, there exist several methods to debounce switches, in hardware, e.g. with a RC-Filter or you could use a specialised debouncing IC. Supplementary there exist several approaches to achieve the debouncing as a software method, as well. The goal of both ideas is that the transitions of the button would be clearly recognized. I will go the software route which seems sufficient to me. If the shown example does not fit your needs, please do a research, to find the right one for your specific application field. ** **As with many topics, there exist several methods to debounce switches, in hardware, e.g. with a RC-Filter or you could use a specialised debouncing IC. Supplementary there exist several approaches to achieve the debouncing as a software method, as well. The goal of both ideas is that the transitions of the button would be clearly recognized. I will go the software route which seems sufficient to me. If the shown example does not fit your needs, please do a research, to find the right one for your specific application field. **
  
-Comme pour de nombreux sujets, il existe plusieurs méthodes pour l'anti-rebond des interrupteurs avec du matériel, par ex., un filtre RC, ou vous pourriez utiliser un circuit spécialisé contre les rebonds. En plus, plusieurs approches logicielles permettent aussi de traiter les rebonds.Le but des deux idées est que les transitions du bouton soient clairement reconnues. Je prendrai la solution logicielle qui m'apparaît suffisante. Si l'exemple présenté ne répond pas à vos besoins, faites une recherche pour trouver la bonne pour votre champ d'application particulier.+Comme pour de nombreux sujets, il existe plusieurs méthodes pour l'anti-rebond des interrupteurs avec du matériel, par ex., un filtre RC, ou vous pourriez utiliser un circuit spécialisé contre les rebonds. En plus, plusieurs approches logicielles permettent aussi de traiter les rebonds. Le but des deux idées est que les transitions du bouton soient clairement reconnues. Je prendrai la solution logicielle qui m'apparaît suffisante. Si l'exemple présenté ne répond pas à vos besoins, faites une recherche pour trouver la bonne pour votre champ d'application particulier.
  
 **Simple debouncing method **Simple debouncing method
Ligne 93: Ligne 93:
 Méthode simple pour un anti-rebond Méthode simple pour un anti-rebond
  
-La version simple d'un programme anti-rebond pour un interrupteur connecté à une résistance de tirage serait quelque chose comme ça ; pour les besoins du débogage, j'ai mis quelques sorties vers la connexion série (voir le code sur la page suivante, partie gauche).+La version simple d'un programme anti-rebond pour un interrupteur connecté à une résistance de tirage serait quelque chose comme ceci ; pour les besoins du débogage, j'ai mis quelques sorties vers la connexion série (voir le code sur la page suivante, partie gauche).
  
 Juste au cas où vous trouveriez plus facile de travailler avec un signal non-inversé et que vous ne vouliez pas utiliser de résistance de tirage, vous pourriez éviter les rebonds d'une résistance d'écoulement avec ce qui est montré dans la partie droite de la page suivante. Juste au cas où vous trouveriez plus facile de travailler avec un signal non-inversé et que vous ne vouliez pas utiliser de résistance de tirage, vous pourriez éviter les rebonds d'une résistance d'écoulement avec ce qui est montré dans la partie droite de la page suivante.
  
-Les deux méthodes lisent l'état de l'interrupteur dès le tout début du programme ; s'il est appuyé, la variable button est initialisée à zéro. Ensuite, l'interrupteur est relu dans une boucle et la variable button est incrémentée de 1 tant que le bouton est appuyé. Le court délai de 10 ms est là pour laisser le temps au signal de s'établir et être sûr de lire le bon état. Si le bouton est appuyé assez longtemps, la LED clignote.+Les deux méthodes lisent l'état de l'interrupteur dès le tout début du programme ; s'il est enfoncé, la variable button est initialisée à zéro. Ensuite, l'interrupteur est relu dans une boucle et la variable button est incrémentée de 1 tant que le bouton est enfoncé. Le court délai de 10 ms est là pour laisser le temps au signal de s'établir et être sûr de lire le bon état. Si le bouton est enfoncé assez longtemps, la LED s'allume ou s'éteint.
  
 **Breadboard circuitry **Breadboard circuitry
Ligne 117: Ligne 117:
 Conclusion Conclusion
  
-La capacité d'un microcontrôleur de n'importe quelle marque à lire un interrupteur d'une certaine manière est importante pour piloter de multiples fonctions du microcontrôleur. Si vous n'êtes pas capable de donner au microcontrôleur quelque chose en entrée, le traitement et la sortie sont impossibles. Et vous ne voudriez pas en rester définitivement sur un petit projet, par ex., un éclairage nocturne, en ayant à vous connecter à votre microcontrôleur juste pour allumer et éteindre une LED, n'est-ce pas ? Du fait de la vitesse du microcontrôleur, les appuis sur le bouton de ces exemples sont reconnus très souvent et seulement au début du programme. Dans le prochain article, j'examinerai une méthode pour résoudre cela et je vous présenterai les interruptions d'un microcontrôleur en général et dans Great Cow BASIC en particulier.+La capacité d'un microcontrôleur de n'importe quelle marque à lire un interrupteur d'une manière ou d'une autre est importante pour piloter de multiples fonctions du microcontrôleur. Si vous n'êtes pas capable de donner au microcontrôleur quelque chose en entrée, le traitement et la sortie de données sont impossibles. Et vous ne voudriez pas en rester définitivement sur un petit projet, par ex., une veilleuse, en ayant à vous connecter à votre microcontrôleur juste pour allumer et éteindre une LED, n'est-ce pas ? Du fait de la vitesse du microcontrôleur, les appuis sur le bouton de ces exemples sont reconnus très souvent et seulement au début du programme. Dans le prochain article, j'examinerai une méthode pour résoudre cela et je vous présenterai les interruptions d'un microcontrôleur en général et dans Great Cow BASIC en particulier.
  
 **Sources **Sources
issue131/gcb.1523276536.txt.gz · Dernière modification : 2018/04/09 14:22 de d52fr