Ich bin neu in der Verwendung von Arduino und habe ein Arduino Uno. Für die Projekte, die ich durchgeführt habe, habe ich nur die digitalen Pins verwendet.
Ich baue ein kleines Fahrzeug mit Schrittmotoren. Ich habe keine Stifte mehr, um die Motoren für dieses Fahrzeug zu steuern. Wofür sind die analogen Pins? Kann ich die restlichen Schrittmotoren, die ich an das Arduino anschließe, mit analogen Pins steuern, oder muss ich ein größeres Arduino als Arduino Uno kaufen, um dieses Gerät zu steuern?
Antwort
Ja, die analogen Pins am Arduino können als digitale Ausgänge verwendet werden.
Dies ist in der Dokumentation zu Arduino-Eingangsstiften im Abschnitt Pin-Zuordnung dokumentiert:
Pin-Zuordnung
Die analogen Pins können identisch mit den digitalen Pins verwendet werden, wobei die Aliase A0 (für Analogeingang 0), A1 usw. verwendet werden. Der Code würde beispielsweise so aussehen Setzen Sie den analogen Pin 0 auf einen Ausgang und setzen Sie ihn auf HIGH:
PinMode (A0, OUTPUT);
DigitalWrite (A0, HIGH);
Kommentare
- Ja … Entschuldigung. Ich erinnere mich, dass es spät war, als ich das veröffentlichte und ich schläfrig wurde und die Konzentration verlor. Ich habe den Kommentar entfernt.
Antwort
Sie können die analogen Pins immer für digitales Schreiben verwenden. P. >
-
digitalRead()
funktioniert auf allen Pins. Es wird nur den empfangenen Analogwert gerundet und Ihnen präsentiert. WennanalogRead(A0)
größer oder gleich 512 ist, istdigitalRead(A0)
1, andernfalls 0. -
digitalWrite()
funktioniert auf allen Pins mit dem zulässigen Parameter 0 oder 1.digitalWrite(A0,0)
entsprichtanalogWrite(A0,0)
, unddigitalWrite(A0,1)
ist dasselbe wieanalogWrite(A0,255)
-
analogRead()
funktioniert nur auf analogen Pins. Es kann einen beliebigen Wert zwischen 0 und 1023 annehmen. -
analogWrite()
funktioniert auf allen analogen Pins und allen digitalen PWM Stifte. Sie können einen beliebigen Wert zwischen 0 und 255 angeben.
Mit den analogen Pins können Sie analoge Werte lesen / schreiben – im Grunde genommen, anstatt eine Spannung von 0 oder 5 auszugeben (wie bei digital). können sie einen Spannungsbereich zwischen 0 und 5 ergeben (sowohl als Eingang als auch als Ausgang). Beachten Sie, dass die Spannung während des Analogausgangs nur die mit einem Multimeter beobachtete Spannung ist. In der Realität senden die analogen Pins Impulse von 0 V- und 5 V-Signalen, um einen Ausgang zu erhalten, der analog „aussieht“ (dies ist PWM).
Bezüglich der Anzahl der Pins: Beachten Sie, dass die PWM-Pins sein können wird für den Analogausgang verwendet. Wenn Ihnen die Pins ausgehen, können Sie Multiplexing verwenden, um mehr zu erzielen. Es ist nicht erforderlich, ein anderes Arduino zu erhalten.
Kommentare
- AnalogWrite () gibt keine Spannungen zwischen 0 und 5 aus (außer am Due)! AnalogWrite () ändert nur die Pulsweitenmodulation des Signals. Die Ausgangsspannung beträgt immer noch 5 Volt (oder was auch immer VCC ist). Die mit “ analogen “ gekennzeichneten Pins geben nur 0 V oder 5 V aus. Sie sind nicht variabel und sind Anmerkung
- @ JamesC4S: Guter Punkt, bearbeitet. Danke 🙂
- Viel besser! 🙂
- Sind digitalRead () und digitalWrite () an analogen Pins langsamer? Wenn digitalRead () den Wert rundet, kann ich mir vorstellen, dass er auf einem digitalen Pin viel langsamer ist als digitalRead ()?
- Dies ist sehr präzise und informativ, danke, aber ich glaube, dass es einen kleinen Fehler gibt. Laut die feinen Dokumente :
the Arduino (ATmega) will report HIGH if: a voltage greater than 3.0V is present at the pin (5V boards)
widerspricht der Aussage in diesem BeitragIf analogRead(A0) is greater than or equal to 512, digitalRead(A0) will be 1, else 0
.
Antwort
Die analogen Pins des Arduino können wie gezeigt als digitale Pins verwendet werden raus von Anindo Ghosh.
Selbst wenn Ihnen die Stifte zur Steuerung Ihrer Schrittmotoren ausgehen, müssen Sie kein anderes Board kaufen. Sie können einfach eine Zwischenkomponente wie ein Register oder einen Multiplexer verwenden, um den entsprechenden Schrittmotor zu steuern.
Antwort
Wenn Sie es sich leisten können und die Arbeit mit einem Stepper wirklich einfach machen möchten check out Easy Stepper . Ich war sehr zufrieden.
Aus der Beispielcodepage
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); }
Auf derselben Seite finden Sie auch einen Beispielcode zum Betreiben von zwei Motoren mit zwei Easystepper-Boards mit Beschleunigung / Verzögerung: 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(); }
Kommentare
- Dies beantwortet die Frage wirklich nicht ‚, es wäre besser als Kommentar. Könnte Sie konkretisieren es so, dass es die Frage beantwortet?
- @AnnonomusPerson: Der EasyDriver-Schrittmotortreiber erscheint einem aktiven Produkt, auf Lager und allem.
Antwort
Hinzufügen als Antwort, da kein Kommentar möglich ist.
Um kurz zu antworten, können Sie dies zu Anindo Ghoshs Antwort , wie das geht.
Bitte beachten Sie Für den Arduino Nano sind die Pins A6 und A7 jedoch nur analog und kann nicht im digitalen Modus verwendet werden.
Kommentare
- Bitte beachten Sie, dass diese Antwort fast nur einen Link enthält. Links / Websites sind möglicherweise veraltet, sodass diese Antwort unbrauchbar wird. Behalten Sie den Link bei, aber fassen Sie die relevanten Teile der Website zusammen oder zitieren Sie sie.
- @Huisman Um fair zu sein, ist es weniger wahrscheinlich, dass Links zu anderen Fragen zu EE.SE veraltet oder unzugänglich werden. Eine kurze Zusammenfassung würde die Antwort sicherlich verbessern.
- @JYelton Ich habe ‚ dem Link nicht gefolgt, aber Sie ‚ re right.