Quelle ' est la différence entre analogWrite et digitalWrite?

Comme lindique le titre. Quelle est la différence entre les deux?

analogWrite(pin,0-255) vs digitalWrite(pin,LOW-HIGH)

Commentaires

  • Je ne veux pas ‘ être grossier mais quest-ce qui était déroutant à ce sujet dans la documentation sur arduino.cc ou inclus avec le IDE?

Réponse

digitalWrite définira la broche spécifiée sur lun des deux états – HIGH / LOW, qui équivaut à 5v (3,3v sur certaines cartes) et à la masse respectivement.

analogWrite peut varier selon le type de sortie utilisé.

Sil est appliqué à une broche PWM – il définira la broche à un signal périodique haut / bas, où le pourcentage du signal passé haut est proportionnel à la valeur écrite. par exemple –

 analogWrite(PWMpin,255) 

Sera HIGH 100% du temps, tandis que

 analogWrite(PWMpin,127) 

Sera HIGH 50% du temps, et LOW 50% du temps

Lors de lapplication de analogWrite à une broche DAC (disponible sur certaines cartes, comme le DUE ou MEGA ) anal ogWrite entraînera en fait la broche spécifiée à produire un niveau de tension proportionnel à la valeur analogique spécifiée

Par exemple, sur le Due, avec une tension maximale de 3,3 V et une résolution analogique par défaut de 8 bits – [0: 255]

 analogWrite(DACpin,255) 

La broche spécifiée produira 3,3v, et-

 analogWrite(DACpin,127) 

La broche spécifiée produira 1.35v

Commentaires

  • Non, il ny a pas de DAC sur le Mega.
  • vous avez raison, la réponse a été modifiée pour refléter cela.
  • Excellent. Jai pris la liberté de rendre lédition plus concise.
  • Je crois quil existe un  » maxanalog  » définir ou constant, pour offrir une meilleure compatibilité avec dautres plates-formes. Lesp8266 a une écriture analogique qui peut aller de 0 à 1024. * Jai ‘ gratté quelques cheveux en essayant de trouver pourquoi mon contrôleur LED RVB ne ‘ t être aussi brillant avec le même code, je pensais que cétait dû à la différence de puissance ou de tension, mais jai utilisé un MOSFET avec un facteur (gain?) approprié. Cétait simplement allumé pendant (1024/256) du temps.

Réponse

analogWrite (): La méthode analogWrite () définit la valeur dune broche de sortie PWM. AnalogWrite () est sur une échelle de 0 à 255, de sorte que analogWrite (255) demande un cycle de service de 100% (toujours activé), et analogWrite (127) est un cycle de service de 50% (sur la moitié du temps).

Cycle de service PWM

Syntaxe : analogWrite (pin, val)

Où,

pin: le numéro de broche de sortie PWM.

val: int valeur du rapport cyclique entre 0 (toujours désactivé) et 255 (toujours activé)

Exemple de code:

int outLed = 10; //LED connected to digital pin 10 int value = 0; //variable to store the read value int analogIN = 3; //input pin void setup() { pinMode(outLed, OUTPUT); // set the PWM pin as OUTPUT } void loop() { value = analogRead(analogIN); // read the value of analogIN (values between from 0 to 1023) analogWrite(outLed, value/4); // sets the read value on outLed (values between from 0 to 255) } 

digitalWrite: La méthode digitalWrite () définit la valeur dune broche numérique sur HIGH ou LOW. Ici, 5V (ou 3,3V sur les cartes 3,3V) pour HIGH, 0V (masse) pour LOW.

Syntaxe: digitalWrite (pin, val)

Où,

pin: le numéro de pin

val: HIGH ou LOW

Exemple de code:

int ledPin = 13; // LED connected to digital pin 13 void setup() { pinMode(ledPin, OUTPUT); // sets the digital pin as output } void loop() { digitalWrite(ledPin, HIGH); // sets the LED on delay(1000); // waits for a second digitalWrite(ledPin, LOW); // sets the LED off delay(1000); // waits for a second } 

Answer

digitalWrite définit la broche de sortie sur LOW ou HIGH (où ces tensions dépendent du V cc du processeur. Pour un Uno ou Mega qui serait 0V ou 5V (ou proche).

Voici « une capture décran de digitalWrite (LOW):

digitalWrite (LOW)

Autrement dit, la broche de sortie est à 0V.


Maintenant pour digitalWrite (HIGH):

La tension de sortie est de 5V.

digitalWrite (HIGH)


analogWrite aurait vraiment dû être nommé PWMwrite depuis sa conf igures les minuteries du processeur pour produire PWM (modulation de largeur dimpulsion).

Essayons analogWrite (1):

analogWrite (1)

Vous pouvez voir que le niveau de tension est de 0V la plupart du temps, et passe à 5V pendant de courtes périodes. Vous voyez également que la fréquence est de 490 Hz, ce que la page de référence pour analogWrite dit que ce sera.


Zoom avant:

analogWrite (1) - zoomé

La sortie est élevée pendant 8 µs, ce qui correspond exactement à 1/256 de 2048 µs qui est la période de la minuterie. Ainsi, nous avons un cycle de service de 1/256 (0,39%).


Essayons analogWrite (127) – à mi-chemin de 0 à 255:

analogWrite (127)

Vous pouvez maintenant voir que la sortie est HAUTE exactement la moitié du temps et BAS le reste du temps.


Essayons analogWrite (254):

analogWrite (254)

Cest lopposé de analogWrite (1). La sortie est ÉLEVÉE tout le temps sauf pendant une brève période. Zoom avant:

analogWrite (254) - zoomé

La sortie est maintenant désactivée pendant 8 µs – par rapport à l’image précédente où elle était allumée pendant 8 µs.


analogWrite (0) est identique à digitalWrite (LOW).

analogWrite (255) est identique à digitalWrite (HIGH).

Ceci est prouvé par le code correspondant dans câblage_analog.c:

if (val == 0) { digitalWrite(pin, LOW); } else if (val == 255) { digitalWrite(pin, HIGH); } 

Résumé

analogWrite configure essentiellement les minuteries matérielles pour sortir PWM. Une fois que vous faites cela, le matériel de la minuterie produit le cycle de service demandé (de 0 à 255) où 0 est toujours désactivé, 255 est toujours activé, et une valeur intermédiaire vous donne PWM (sortie pulsée).


Pour plus dinformations sur les minuteries, consultez ma page sur les minuteries .

Réponse

digitalWrite définit la broche sur une valeur haute ou basse qui reste exactement à cette valeur jusquà ce que digitalWrite soit à nouveau appelée pour cette broche.

analogWrite définit la broche pour quelle ait une valeur oscillante qui a un longueur dimpulsion basée sur le rapport cyclique spécifié comme deuxième paramètre.

Donc:

digitalWrite (5, HIGH); // Pin 5 goes high analogWrite (6, 127); // Pin 6 oscillates regularly between 0v and 5v (or 3.3v) at about 250Hz. 

Réponse

analogWrite (): Ecrit une valeur analogique (onde PWM) sur une broche . Peut être utilisé pour allumer une LED à des luminosités variables ou pour entraîner un moteur à différentes vitesses. Après un appel à analogWrite(), la broche générera une onde carrée régulière du cycle de service spécifié jusquau prochain appel à analogWrite() (ou un appel à digitalRead() ou digitalWrite() sur la même broche). La fréquence du signal PWM sur la plupart des broches est denviron 490 Hz. Sur les cartes Uno et similaires, les broches 5 et 6 ont une fréquence denviron 980 Hz. Les broches 3 et 11 du Leonardo fonctionnent également à 980 Hz.

Pour plus de détails, visitez: https://www.arduino.cc/en/Reference/analogWrite

analogRead (): Lit la valeur de la broche analogique spécifiée. La carte Arduino contient un convertisseur analogique-numérique à 6 canaux (8 canaux sur le Mini et le Nano, 16 sur le Mega). Cela signifie quil mappera les tensions dentrée entre 0 et 5 volts en valeurs entières entre 0 et 1023. Cela donne une résolution entre les lectures de: 5 volts / 1024 unités ou 0,0049 volts (4,9 mV) par unité. La plage dentrée et la résolution peuvent être modifiées à laide de analogReference().

Pour plus de détails, visitez: https://www.arduino.cc/en/Reference/analogRead

Réponse

digitalWrite définit la broche spécifiée sur lun des deux états – HIGH / LOW

Où, HIGH = 5 V et LOW = 0 V

analogWrite Définissez la valeur PWM de la broche PWM

(Dans Arduino UNO, les broches PWM sont 3, 5, 6, 9, 10, 11)

Cela définira la broche à un signal périodique haut / bas.

analogWrite(PWMpin,255) 

Sera HAUT 100% du temps, tandis que

analogWrite(PWMpin,127) 

Sera ÉLEVÉ 50% du temps et BAS 50% du temps

Réponse

Donc Quelle est la différence entre analogWrite (X, 255) et digitalWrite (X, HIGH)? Probablement rien, sauf peut-être que le processeur doit faire des trucs supplémentaires pour comprendre quil na pas besoin dutiliser PWM, et aussi de style.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *