Wie steuert man einen analogen Stift? Wie steuere ich eine Komponente mit AnalogWrite und AnalogRead?

Das Schreiben oder Lesen von analogen Pins wird es Ihnen ermöglichen, Ihre Bauteile zu steuern und die Messwerte Ihrer Sensoren abzulesen.

In diesem Kurs werden wir Folgendes sehen:

  • Ihre Komponente kontrollieren (analogWrite).
  • Die Spannung an einem Sensor ablesen (analogRead).
  • Den erhaltenen oder gewünschten Wert umwandeln (map).

Hier sind die analogen Pins, die durch analogWrite und analogRead gesteuert werden:

Was ist der Unterschied zwischen analog und digital?

Ein digitales Signal kann zwei Werte annehmen: HIGH oder LOW. HIGH entspricht dem hohen Zustand und LOW dem niedrigen Zustand . Dieses Signal ist sehr nützlich, um zum Beispiel den Zustand eines Druckknopfes zu erkennen oder eine LED einzuschalten.

Wenn du deine LED jedoch nur mit der halben Helligkeit einschalten willst, brauchst du ein analoges Signal.

Dieses kann unendlich viele Werte zwischen 0V und 5V annehmen. Dieses Signal wird Ihnen helfen, genauere Werte zu messen und zu senden, z. B. 0,45 V statt 0 V und 5 V wie bei einem digitalen Signal.

Sie können einen Analog-Digital-Wandler verwenden, um das Signal umzuwandeln.

analogWrite ()

Mit analogWrite können Sie Komponenten wie LEDs, Servomotoren usw. steuern. Mithilfe von pwm kann der analogWrite Komponenten präzise steuern, z. B. die Position eines Servomotors oder die Leistung einer LED.

analogWrite(pin, value);

Mit analogWrite können Sie Zwischenwerte zwischen 0 und 255 (auf einem Standard-Arduino-Board) erzeugen, indem Sie das Tastverhältnis der Ausgangsspannung anpassen. Mit anderen Worten, sie moduliert die Impulsbreite, um eine andere Durchschnittsspannung zu simulieren. Wenn Sie beispielsweise für die Funktion analogWrite einen Wert von 128 angeben, bedeutet dies, dass der Pin ein Rechtecksignal mit einem Tastverhältnis von 50 % erzeugt und damit eine durchschnittliche Spannung von etwa 2,5 V erzeugt.

Hier ein Beispiel für die Funktion analogWrite auf Pin A3 :

analogWrite(A3, 128);

analogRead ()

Wenn Sie den Wert, der von einem Sensor kommt, auslesen wollen, brauchen Sie die Funktion analogRead!

Hier ist ein Beispiel für die Verwendung der Funktion analogRead() :

analogRead(Pin)

Pin: von A0 bis A5

Die Funktion gibt den Wert des analogen Pins zurück, der ein Wert zwischen 0 und 1023 ist, der der am Pin abgelesenen Spannung entspricht. Wir werden sehen, wie er umgewandelt wird.

Umrechnung des Wertes

Map ist eine mathematische Funktion, die einen Wert umwandelt, indem sie die Grenzen des alten Werts und die Grenzen, zu denen der umgewandelte Wert gehören soll, angibt.

map(wert_a_umwandeln, alter_niederer_Wert, alter_hoher_Wert, neuer_niederer_Wert, neuer_hoher_Wert)
  • analogWrite () : Wandelt den Wert in % oder Grad zwischen 0 und 255 um.

Wie bereits erwähnt, nimmt die Funktion analogWrite als Parameter Werte zwischen 0 und 255 an. Der Servomotor zum Beispiel lässt sich jedoch mit Werten zwischen 0° und 180° steuern. Die LED kann zwischen 0% und 100% gesteuert werden.

Wir werden diese Werte also mithilfe der Funktion map so umwandeln, dass sie der Funktion analogWrite entsprechen.

Wenn wir zum Beispiel die 90°-Position für unseren Servomotor in Pin 7 wollen :

int servo_wert=90;
servo_wert=map(servo_wert,0,180,0,255);
analogWrite(7,servo_wert);
  • analogRead () : Den Wert zwischen 0 und 1023 in eine Spannung zwischen 0 und 5V umwandeln

Der Wert zwischen 0 und 1023 sagt Ihnen sicher nichts, deshalb wollen wir uns ansehen, wie man ihn zwischen 0V und 5V umwandelt. Dazu verwenden wir die Funktion map, die es uns ermöglicht, den erhaltenen Wert umzuwandeln:

int wert =analogRead(pin);
Wert=map(Wert,0,1023,0,5);