Pourquoi certaines épingles ont-elles des signes «~» à côté de leur numéro?


32

Je regardais mon Arduino Uno et j'ai remarqué ce symbole par les broches numériques 11, 10, 9, 6, 5et 3. Qu'est-ce que cela signifie? Cela affecte-t-il son fonctionnement? Puis-je ne pas utiliser ces broches dans certaines situations?


19
Le symbole tilde signifie "environ". Comme dans, "c'est approximativement la broche 11". Pendant le processus de fabrication, les broches peuvent se déplacer un peu. La broche 11 sera rarement exactement 11. Habituellement, elle est un peu plus ou un peu moins de 11. Les broches qui ont une tendance accrue à se déplacer seront indiquées par le symbole ~. :)

6
@AnnonomusPerson David est facétieux, ce qui n'est pas immédiatement évident si vous n'êtes pas familier avec les brochages et autres.
Shamtam

7
@Shamtam: Ou si vous n'êtes pas familier avec David :)
Chris Laplante

Réponses:


31

Se détendre. Ne t'inquiète pas. Ces broches sont appelées PWMet sont les mêmes que les autres broches, sauf qu'elles ont un "bonus supplémentaire".


Quelques utilisations du site Web d' Arduino :

  • Gradation d'une LED
  • Simule une sortie analogique. La sortie bascule toujours numériquement de 0V à 5V. Cependant, filtre passe-bas (condensateur et résistance) pour simuler les tensions analogiques.
  • Génération de signaux audio.
  • Fournir un contrôle de vitesse variable pour les moteurs.
  • Génération d'un signal modulé, par exemple pour piloter une LED infrarouge pour une télécommande.

Comment ça marche:

Les broches PWM sont contrôlées par des minuteries sur puce qui basculent automatiquement les broches à une fréquence d'environ 490 Hz. La "modulation de largeur d'impulsion" (PWM) est la durée pendant laquelle la broche reste activée ou désactivée pendant un seul cycle de cette fréquence. Cela peut atténuer une LED en donnant l'illusion qu'elle est à la moitié de la luminosité comme auparavant, où elle clignote vraiment très rapidement. Image de différents cycles d'utilisation.

Lorsqu'il y a un cycle de service de 25%, c'est un quart de fois. Si vous l'utilisiez pour une LED, elle apparaîtrait environ 1 / 4ème comme lumineuse [donner ou prendre]. (Remarque: comme certaines personnes l'ont souligné, ce n'est pas vraiment proportionnel, mais laissons les choses de cette façon pour plus de simplicité. EX: 25% n'est pas toujours 1/4 de la luminosité.)

(Si vous êtes vraiment averti en électricité, vous pouvez probablement ajouter un condensateur pour en faire également une sortie analogique.)


Comment utiliser ces broches pour sortir:

Tout d'abord, vous devez définir la broche comme sortie. Ensuite, vous utilisez analogWrite(ledPin, 128); pour le démarrer. C'est ledPinla broche PWM que vous souhaitez démarrer PWM et 128doit être remplacée par un nombre entre 0et 255; 0: 0% duty cycle(Tourne la broche complètement) et 255: 100% duty cycle. (allume complètement la broche)

Source: http://www.arduino-tutorials.com/arduino-pwm/


Pourquoi ne puis-je pas allumer et éteindre la lumière très rapidement dans mon code?:

Techniquement, vous pouvez cependant rencontrer certains problèmes:

  • Ce n'est peut-être pas aussi précis que d'utiliser les circuits câblés avec l'Arduino
  • Il est plus simple de taper l'instruction au lieu d'avoir beaucoup d'instructions "if"

Cela ne fera pas vraiment une grande différence si le seul but de l'Arduino est de générer des signaux PWM. Cependant, si vous mettez des retards supérieurs à 50 MS dans la boucle principale, cela gâchera le timing. Avec l'approche logicielle, vous voudriez éliminer toutes les fonctions de «retard» puisque l'Arduino ne fonctionne que sur un seul thread (il ne peut faire qu'une seule chose à la fois). Si vous savez ce que vous faites, cela ne fera pas beaucoup de différence pour atténuer la lumière, mais si vous avez une broche supplémentaire avec PWM, vous perdez simplement votre temps avec une approche logicielle.


Comme d'autres l'ont fait remarquer:

Vous avez toujours besoin d'une résistance pour vos circuits afin de limiter le courant et la tension. Vous ne pouvez pas ignorer cela.


1
Je n'ai aucune idée de ce que vous entendez par "puissance de traitement" (ou quoi que cette phrase soit censée signifier). PWM fonctionne car il est déclenché par les temporisateurs qui s'exécutent indépendamment du code en cours d'exécution.
baldengineer

@ JamesC4S Je veux dire que cela rend le code global plus lent si vous ajoutez le retard et qu'il passe "On" et "Off". Le processeur ne peut faire que beaucoup de choses par seconde avant de surchauffer afin de contrôler la vitesse à laquelle il va.
Anonymous Penguin

@AnnonomusPerson Vous devez être beaucoup plus clair dans les réponses que vous donnez. Je ne vois toujours pas ce que votre explication a à voir avec la "puissance de traitement". Par exemple, vous pouvez écrire des routines PWM qui n'utilisent pas delay (), en utilisant millis () par exemple, ce qui aurait un impact minimal sur la vitesse d'exécution pour le reste du code.
baldengineer

1
@AnnonomusPerson: Je dirais qu'il y a deux façons d'implémenter le PWM dans le code: soit on peut demander au processeur d'exécuter le PWM dans une boucle qui ne fait rien d'autre, sauf peut-être décider quand sortir, ou bien on peut avoir une interruption par minuterie effectuer le PWM. Dans la première situation, le processeur ne pourra rien faire d'autre pendant que le PWM se produit; dans ce dernier, il y aura des limites à l'exactitude et la précision de la synchronisation PWM. Les circuits matériels PWM permettent à une puce de générer des formes d'onde PWM propres et précises à une fraction de microseconde près, tout en faisant d'autres choses.
supercat

Notez que grâce au fonctionnement de la vision, une LED avec 1/4 DC (ou tout autre rapport) n'apparaîtra pas nécessairement la fraction correspondante de pleine luminosité.
Ignacio Vazquez-Abrams du

7

Une idée fausse commune sur les broches PWM est que lors de l'utilisation de PWM, il n'est pas nécessaire d'utiliser des résistances de limitation de courant (avec des LED, par exemple).

Ce n'est pas vrai. Les broches PWM doivent être considérées comme des broches numériques, qui sont activées et désactivées automatiquement. Cela signifie qu'ils passent à la même haute tension que toutes les autres broches.

Lorsque vous utilisez des LED avec PWM, vous devez toujours utiliser des résistances de limitation de courant. Lorsque vous utilisez des moteurs avec PWM, vous devriez (presque toujours) utiliser un transistor.


2
@AnnonomusPerson Non, ce n'est pas correct. Vous auriez toujours besoin de limiteurs de courant pour les LED même si vous disposiez de véritables sorties analogiques. Les LED ont besoin de sources de courant constant, pas de sources de tension constantes.
baldengineer

3
Vous pouvez obtenir des LED avec une résistance de limitation de courant intégrée. J'ai été tellement déçu lorsque j'ai demandé une LED chez Maplin et une résistance appropriée pour la faire fonctionner sur 12V quand ils m'ont dit qu'ils en avaient une qui fonctionnait directement à partir de 12V. Hé, attendez juste qu'ils essaient d'empaqueter une charge de transistors dans un paquet pour faire une porte ET ou quelque chose.
Andrew Morton le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.