Verzögerung in Mikrosekunden in Arduino hinzufügen
![Verzögerung in Mikrosekunden in Arduino hinzufügen](/img/Arduino/feature-image---arduino-delay-microseconds.webp)
In diesem Tutorial wird das Hinzufügen von Verzögerungen in Mikrosekunden im Code mit den Funktionen delayMicroseconds()
und micros()
in Arduino besprochen.
Verzögerung in Mikrosekunden in Arduino hinzufügen
Manchmal müssen wir in Arduino eine Aufgabe für eine bestimmte Zeit ausführen. Wenn wir zum Beispiel eine LED blinken lassen wollen, müssen wir die LED für eine bestimmte Zeit einschalten, z. B. eine Sekunde, und sie dann ausschalten.
Wir können die Funktion delayMicroseconds()
in Arduino verwenden, um eine Verzögerung in Mikrosekunden hinzuzufügen. Stellen Sie sich zum Beispiel vor, wir müssen in einem bestimmten Zeitintervall einige Zahlen auf dem seriellen Monitor drucken.
Wenn wir die Zahlen direkt drucken, ohne eine Verzögerung hinzuzufügen, werden die Zahlen so schnell gedruckt, dass wir den Prozess nicht einmal sehen, weil der Mikrocontroller schnell ist. Wenn wir dem Code eine Verzögerung hinzufügen, werden die Zahlen entsprechend der Verzögerung gedruckt.
Es wird eine Zahl gedruckt. Das Programm wartet auf die Verzögerung und die folgende Nummer wird gedruckt usw.
Lassen Sie uns zum Beispiel einige Zufallszahlen im Fenster des seriellen Monitors ausgeben und dem Code eine Verzögerung in Mikrosekunden hinzufügen.
Beispiel:
long MyRnd;
void setup() {
Serial.begin(9600);
randomSeed(analogRead(0));
}
void loop() {
MyRnd = random(100);
Serial.println(MyRnd);
delayMicroseconds(1000);
}
Wir haben im obigen Code eine Verzögerung von 1000 Mikrosekunden hinzugefügt. Die Eingabe der Funktion delayMicroseands()
ist eine Ganzzahl ohne Vorzeichen, und die maximale Zahl, die wir innerhalb der Funktion übergeben können, ist 16383.
Das Hinzufügen eines größeren Werts führt zu einer extremen Schussverzögerung im Code. Die Funktion gibt nichts zurück.
Wir können die Funktion delay()
verwenden, wenn wir eine Verzögerung in Millisekunden hinzufügen möchten. Wir können eine lange Verzögerung mit der Funktion delay()
hinzufügen, da die Eingabe dieser Funktion ein vorzeichenloser langer Datentyp ist.
Beachten Sie, dass, wenn wir einem Programm eine Verzögerung hinzufügen, jeder andere Prozess wie die Sensoreingänge angehalten wird, aber die Interrupts wie die PWM funktionieren. Um dieses Problem zu beseitigen, können wir die Funktion micros()
verwenden, die verwendet wird, um die Zeit zu überprüfen, die in mc verstrichen ist, als das Arduino-Board gestartet wurde.
Lassen Sie uns zum Beispiel die Funktion micros()
verwenden, um die Zeit in Mikrosekunden zu überprüfen, seit das Arduino-Board gestartet wurde.
Beispiel:
void setup() { Serial.begin(9600); }
void loop() {
Serial.println(micros());
delay(1000);
}
Ausgang:
1060
1001852
2003016
3004172
Wir haben die Funktion delay()
verwendet, um dem Code eine Verzögerung hinzuzufügen, um die Ausgabe im Code zu sehen. Es dauerte 1060 Mikrosekunden, um die Codezeilen vor der Funktion micros()
auszuführen.
Die Zeit, die zum Ausführen einer Anweisung benötigt wird, hängt vom Typ des Arduino-Boards ab, da verschiedene Boards unterschiedliche Frequenzen haben. Um die Zeit in Millisekunden aufzuzeichnen, können wir die Funktion millis()
verwenden.
Die Funktionen millis()
und micros()
halten keinen anderen in Arduino laufenden Prozess an. Wir können sie mit einer bedingten Anweisung verwenden, um die gleiche Aufgabe wie die Funktionen delay()
und delayMicroseconds()
auszuführen.
Wir können die Funktion millis()
verwenden, um die Zeit zu überprüfen, und mit einer if
-Anweisung können wir eine Aufgabe für eine bestimmte Zeit ausführen.
Lassen Sie uns beispielsweise Text auf dem seriellen Monitor drucken und eine Verzögerung von einer Sekunde hinzufügen, um den Text mit einem Intervall von einer Sekunde zu drucken.
Beispiel:
long t1 = 0;
long t2 = 0;
long t;
void setup() { Serial.begin(9600); }
void loop() {
t1 = millis();
t = t1 - t2;
if (t > 1000) {
Serial.println("Hello World");
t2 = t1;
}
}
Ausgang:
Hello World
Hello World
Hello World
Wir haben die Differenz zwischen den Zeitintervallen im obigen Code verwendet, um die verstrichene Zeit zu erhalten. Wenn die Zeit größer als eine Sekunde oder 1000 Millisekunden ist, drucken wir den Text und ändern das zweite Zeitintervall in das erste Zeitintervall, um die Differenz auf Null zu bringen.
Die Ausgabe zeigt, dass der Text mit einem Zeitunterschied von einer Sekunde auf dem seriellen Monitorfenster ausgegeben wird.