Je suis nouveau dans lutilisation dArduino, et jai un Arduino Uno. Pour les projets que jai réalisés, je nai utilisé que les broches numériques.
Je construis un petit véhicule qui utilise des moteurs pas à pas. Je nai plus de broches pour contrôler les moteurs de ce véhicule. À quoi servent les broches analogiques? Est-il possible pour moi dutiliser des broches analogiques pour contrôler le reste des moteurs pas à pas que je connecte à lArduino, ou dois-je acheter un Arduino plus gros que lArduino Uno pour contrôler cet engin?
Answer
Oui, les broches analogiques de lArduino peuvent être utilisées comme sorties numériques.
Ceci est documenté dans la documentation des broches dentrée Arduino , dans la section Mappage des broches:
Mappage des broches
Les broches analogiques peuvent être utilisées de la même manière que les broches numériques, en utilisant les alias A0 (pour lentrée analogique 0), A1, etc. Par exemple, le code ressemblerait à ceci: définir la broche analogique 0 sur une sortie et la définir sur HIGH:
pinMode (A0, OUTPUT);
digitalWrite (A0, HIGH);
Commentaires
- Ouais … désolé. Je me souviens quil était tard quand jai posté cela et que je devenais somnolent et perdais de la concentration. Jai supprimé le commentaire.
Réponse
Vous pouvez toujours utiliser les broches analogiques pour lécriture numérique.
-
digitalRead()
fonctionne sur toutes les broches. Il arrondira simplement la valeur analogique reçue et vous la présentera. SianalogRead(A0)
est supérieur ou égal à 512,digitalRead(A0)
sera 1, sinon 0. -
digitalWrite()
fonctionne sur toutes les broches, avec le paramètre autorisé 0 ou 1.digitalWrite(A0,0)
est identique àanalogWrite(A0,0)
, etdigitalWrite(A0,1)
est identique àanalogWrite(A0,255)
-
analogRead()
fonctionne uniquement sur les broches analogiques. Il peut prendre nimporte quelle valeur entre 0 et 1023. -
analogWrite()
fonctionne sur toutes les broches analogiques et toutes les PWM numériques épingles. Vous pouvez lui fournir nimporte quelle valeur entre 0 et 255.
Les broches analogiques vous permettent de lire / écrire des valeurs analogiques – en gros, au lieu de donner une tension de 0 ou 5 (comme avec le numérique) , ils peuvent donner une plage de tensions entre 0 et 5 (à la fois en entrée et en sortie). Notez que la tension pendant la sortie analogique est uniquement la tension observée avec un multimètre. En réalité, les broches analogiques envoient des impulsions de signaux 0V et 5V pour obtenir une sortie qui «ressemble» à analogique (cest PWM).
Concernant le nombre de broches: gardez à lesprit que les broches PWM peuvent être utilisé pour la sortie analogique. Si vous manquez de broches, vous pouvez utiliser le multiplexage pour en faire plus. Il nest pas nécessaire de se procurer un autre Arduino.
Commentaires
- AnalogWrite () ne produit pas de tensions entre 0 et 5 (sauf sur le Due)! AnalogWrite () ne modifie que la modulation de largeur dimpulsion du signal. La tension de sortie est toujours de 5 volts (ou quel que soit le VCC). Les broches marquées » analog » ne fourniront que 0V ou 5V. Ils ne sont pas variables et sont notés
- @ JamesC4S: Bon point, édité. Merci 🙂
- Beaucoup mieux! 🙂
- Est-ce que digitalRead () et digitalWrite () sur les broches analogiques sont plus lents? Si digitalRead () arrondit la valeur, je peux imaginer quelle est bien plus lente que digitalRead () sur une broche numérique?
- Cest très concis et informatif, merci, mais je crois quil y a une petite erreur. Selon les bons documents :
the Arduino (ATmega) will report HIGH if: a voltage greater than 3.0V is present at the pin (5V boards)
qui contredit laffirmation de ce postIf analogRead(A0) is greater than or equal to 512, digitalRead(A0) will be 1, else 0
.
Réponse
Les broches analogiques de lArduino peuvent être utilisées comme broches numériques, comme indiqué par Anindo Ghosh.
Cependant, même si vous manquez de broches pour contrôler vos moteurs pas à pas, vous navez pas vraiment besoin dacheter une autre carte. Vous pouvez simplement utiliser un composant intermédiaire tel quun registre ou un multiplexeur pour contrôler le moteur pas à pas approprié.
Réponse
Si vous pouvez vous le permettre et que vous voulez vraiment rendre le travail avec un stepper super facile consultez Easy Stepper . Jai été ravi.
De la page de code dexemple
http://www.sc-fa.com/blog/wp-content/uploads/2013/04/20130414-080645.jpg
Example 1: Basic Arduino setup This is the most basic example you can have with an Arduino, an Easy Driver, and a stepper motor. Connect the motor"s four wires to the Easy Driver (note the proper coil connections), connect a power supply of 12V is to the Power In pins, and connect the Arduino"s GND, pin 8 and pin 9 to the Easy Driver. Then load this sketch and run it on your Arduino or chipKIT: void setup() { pinMode(8, OUTPUT); pinMode(9, OUTPUT); digitalWrite(8, LOW); digitalWrite(9, LOW); } void loop() { digitalWrite(9, HIGH); delay(1); digitalWrite(9, LOW); delay(1); }
Également de la même page, voici un exemple de code pour faire fonctionner deux moteurs avec deux cartes easystepper, avec accélération / décélération: http://www.sc-fa.com/blog/wp-content/uploads/2013/04/20130414-081018.jpg
#include <AccelStepper.h> // Define two steppers and the pins they will use AccelStepper stepper1(1, 9, 8); AccelStepper stepper2(1, 7, 6); int pos1 = 3600; int pos2 = 5678; void setup() { stepper1.setMaxSpeed(3000); stepper1.setAcceleration(1000); stepper2.setMaxSpeed(2000); stepper2.setAcceleration(800); } void loop() { if (stepper1.distanceToGo() == 0) { delay(500); pos1 = -pos1; stepper1.moveTo(pos1); } if (stepper2.distanceToGo() == 0) { delay(500); pos2 = -pos2; stepper2.moveTo(pos2); } stepper1.run(); stepper2.run(); }
Commentaires
- Cela ne ‘ pas répondre à la question; ce serait mieux comme commentaire. Pourrait vous létoffez pour quil réponde à la question?
- @AnnonomusPerson: Le Pilote de moteur pas à pas EasyDriver apparaît comme un produit actif, en stock et tout.
Réponse
Ajout comme réponse, car je ne peux pas commenter.
Pour répondre brièvement, oui, vous pouvez. Veuillez vous référer à la Réponse dAnindo Ghosh sur la façon de procéder.
Remarque cependant que pour l Arduino Nano , les broches A6 et A7 sont uniquement analogiques et ne peut pas être utilisé en mode numérique.
Commentaires
- Veuillez noter que cette réponse ne contient presque quun lien. Les liens / sites Web peuvent devenir obsolètes, ce qui rend cette réponse inutile. Gardez le lien, mais veuillez résumer ou citer les parties pertinentes du site Web.
- @Huisman Pour être honnête, les liens vers dautres questions sur EE.SE sont moins susceptibles de devenir obsolètes ou de devenir inaccessibles; mais un bref résumé améliorerait certainement la réponse.
- @JYelton Je nai ‘ pas suivi le lien, mais vous ‘ re right.