Kann ich die analogen Pins auf dem Arduino für mein Projekt als digital verwenden?

Ich bin neu in der Verwendung von Arduino und habe ein Arduino Uno. Für die Projekte, die ich gemacht habe, habe ich nur die digitalen Pins verwendet.

Ich baue ein kleines Fahrzeug, das Schrittmotoren verwendet. Mir sind die Stifte ausgegangen, um die Motoren für dieses Fahrzeug zu steuern. Wozu dienen die analogen Pins? Ist es mir möglich, analoge Pins zu verwenden, um den Rest der Schrittmotoren zu steuern, die ich mit dem Arduino verbinde, oder muss ich einen größeren Arduino als Arduino Uno kaufen, um diese Vorrichtung zu steuern?

Antworten (5)

Ja, die analogen Pins auf dem Arduino können als digitale Ausgänge verwendet werden.

Dies ist in der Dokumentation zu den Arduino-Eingangspins im Abschnitt Pin-Mapping dokumentiert:

Pin-Zuordnung
Die analogen Pins können identisch zu den digitalen Pins verwendet werden, indem die Aliase A0 (für analogen Eingang 0), A1 usw. verwendet werden. Der Code würde beispielsweise so aussehen, um den analogen Pin 0 auf einen Ausgang zu setzen und zu setzen es HIGH:
PinMode (A0, AUSGANG);
digitalWrite (A0, HOCH);

Ja entschuldigung. Ich erinnere mich, dass es spät war, als ich das gepostet habe, und ich wurde schläfrig und verlor die Konzentration. Ich habe den Kommentar entfernt.

Sie können die analogen Pins immer zum digitalen Schreiben verwenden.

  • digitalRead()Funktioniert auf allen Pins. Es rundet einfach den empfangenen Analogwert und präsentiert ihn Ihnen. Wenn analogRead(A0)es größer oder gleich 512 ist, digitalRead(A0)wird es 1 sein, sonst 0.
  • digitalWrite()funktioniert auf allen Pins, mit zulässigem Parameter 0 oder 1. digitalWrite(A0,0)ist dasselbe wie analogWrite(A0,0), und digitalWrite(A0,1)ist dasselbe wieanalogWrite(A0,255)
  • analogRead()funktioniert nur auf analogen Pins. Es kann jeden Wert zwischen 0 und 1023 annehmen.
  • analogWrite()funktioniert auf allen analogen Pins und allen digitalen PWM - Pins. Sie können einen beliebigen Wert zwischen 0 und 255 angeben.

Mit den analogen Pins können Sie analoge Werte lesen / schreiben - im Grunde können sie, anstatt eine Spannung von 0 oder 5 (wie bei Digital) auszugeben, einen Spannungsbereich zwischen 0 und 5 (sowohl als Eingang als auch als Ausgang) liefern. Beachten Sie, dass die Spannung während der analogen Ausgabe nur die mit einem Multimeter beobachtete Spannung ist. In Wirklichkeit senden die analogen Pins Impulse von 0-V- und 5-V-Signalen, um einen Ausgang zu erhalten, der analog "aussieht" (dies ist PWM).

In Bezug auf die Anzahl der Pins: Beachten Sie, dass die PWM-Pins für die analoge Ausgabe verwendet werden können. Wenn Ihnen die Pins ausgehen, können Sie Multiplexing verwenden , um mehr zu machen. Es ist nicht notwendig, einen anderen Arduino zu besorgen.

AnalogWrite() gibt keine Spannungen zwischen 0 bis 5 aus (außer auf dem Due)! AnalogWrite() ändert nur die Pulsweitenmodulation des Signals. Die Ausgangsspannung beträgt immer noch 5 Volt (oder was auch immer VCC ist). Die mit "analog" gekennzeichneten Pins geben nur 0V oder 5V aus. Sie sind nicht variabel und werden notiert
@ JamesC4S: Guter Punkt, bearbeitet. Danke :)
Viel besser! :)
Sind digitalRead() und digitalWrite() auf analogen Pins langsamer? Wenn digitalRead() den Wert rundet, kann ich mir vorstellen, dass es viel langsamer ist als digitalRead() auf einem digitalen Pin?
Das ist sehr prägnant und informativ, danke, aber ich glaube, dass es einen kleinen Fehler gibt. Laut Feindokumentation : the Arduino (ATmega) will report HIGH if: a voltage greater than 3.0V is present at the pin (5V boards)was der Aussage in diesem Beitrag widerspricht If analogRead(A0) is greater than or equal to 512, digitalRead(A0) will be 1, else 0.
Eine Ausnahme: Die zusätzlichen A6- und A7-Pins des Arduino Nano, Pro Mini und Mini können nur als analoge Eingänge verwendet werden, nicht als digitale Ein- oder Ausgänge. Dies ist eine für diese Pins spezifische Hardwarebeschränkung, die bei anderen Modellen nicht zu finden ist.

Die analogen Pins auf dem Arduino können als digitale Pins verwendet werden, wie Anindo Ghosh darauf hingewiesen hat.

Aber selbst wenn Ihnen die Stifte zur Steuerung Ihrer Schrittmotoren ausgehen, müssen Sie nicht wirklich ein weiteres Board kaufen. Sie können einfach eine Zwischenkomponente wie ein Register oder einen Multiplexer verwenden, um den entsprechenden Schrittmotor zu steuern.

Wenn Sie es sich leisten können und die Arbeit mit einem Stepper wirklich super einfach machen möchten, sehen Sie sich Easy Stepper an . Ich war sehr zufrieden.

Von der Beispiel-Codepage

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);          
}

Ebenfalls von derselben Seite ist hier ein 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();
}
Dies beantwortet die Frage wirklich nicht; Als Kommentar wäre es besser. Könnten Sie es konkretisieren, damit es die Frage beantwortet?
@AnnonomusPerson: Der EasyDriver Schrittmotortreiber scheint ein aktives Produkt zu sein, auf Lager und alles.

Als Antwort hinzufügen, da ich keinen Kommentar abgeben kann.

Um es kurz zu beantworten: Ja, das können Sie. Wie das geht, entnehmen Sie bitte der Antwort von Anindo Ghosh .

Bitte beachten Sie jedoch, dass die Pins A6 und A7 beim Arduino Nano nur analog sind und nicht im digitalen Modus verwendet werden können.

Bitte beachten Sie, dass diese Antwort fast nur einen Link enthält. Links/Websites können veraltet sein, wodurch diese Antwort unbrauchbar wird. Behalten Sie den Link bei, aber fassen Sie bitte 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. aber eine kurze Zusammenfassung würde die Antwort sicherlich verbessern.
@JYelton Ich bin dem Link nicht gefolgt, aber du hast Recht.