Arduino verfügt über ein gutes Repertoire an Funktionen, mit denen man im Laufe der Zeit arbeiten kann. Einer von ihnen ist millis (), eine Anweisung, die Ihnen die Zeit in Millisekunden angibt, seit das Arduino-Board eingeschaltet ist. Dies mag absurd erscheinen und dient nur dazu zu wissen, wann die Platte eingeschaltet wurde, aber die Wahrheit ist, dass sie viel mehr praktische Anwendungen hat.
von ejemplokann verwendet werden, um die Zeit zu bestimmen, die zwischen zwei oder mehr Ereignissen vergangen ist, um das Entprellen (Abprallen) einer Schaltfläche zu vermeiden usw. Es könnte auch dazu dienen, die Ausführungszeit in kritischen Phasen des Codes anzuzeigen und sicherzustellen, dass das Programm in Echtzeit arbeitet.
Millis () -Funktion
Wie ich bereits erwähnt habe, wird die Arduino-Millis-Funktion zum Messen der Zeit verwendet, und zwar in Millisekunden (ms)daher der Name. Mit anderen Worten, der numerische Wert, den diese Funktion zurückgibt, wenn Sie ihn in Ihre Skizze aufnehmen, sind temporäre Daten, die in dieser Einheit ausgedrückt werden.
Sie sollten wissen, dass der Maximalwert dieser Variablen ist lange nicht signiertdas heißt, lange ohne Zeichen. Dies ist wichtig, da bei Verwendung eines kleineren logische Probleme auftreten können. Außerdem sollten Sie wissen, dass es bis zu 50 Tage dauern kann (4.320.000.000 ms). Sobald es diesen Wert erreicht hat, wird es neu gestartet und beginnt erneut bei Null.
Eine andere Sache, die Sie wissen müssen, ist, dass die Millis-Funktion verwendet keine Parameter.
Andere temporäre Arduino-Funktionen
Arduino verfügt über weitere zeitbezogene Funktionen, die Sie in Ihrem Code verwenden können. Einer von ihnen ist die berühmte Verzögerung (), aber es gibt noch mehr:
- delay (): Es ist die am häufigsten verwendete und häufigste aller Arduino-Funktionen. Es werden auch Millisekunden als Millis () verwendet. Und es wird auch vom Typ unsigned long sein und keinen Rückgabewert haben. Es wird hauptsächlich verwendet, um Pausen bei der Ausführung eines Programms mit vielen Anwendungen einzuführen.
- delayMicroseconds (): In Skizzen wird es weniger verwendet. In diesem Fall ist es noch lange ohne Vorzeichen und ohne Rückgabewert. In diesem Fall werden Mikrosekunden verwendet. Derzeit kann ein Maximalwert mit einer Genauigkeit von 16383 und einem Minimum von 3 μs erreicht werden. Wenn Sie längere Wartezeiten benötigen, wird die Verwendung von delay () empfohlen.
- micros (): gibt auch einen numerischen Wert in Mikrosekunden (μs) zurück, seit die Arduino-Karte mit der Ausführung des Programms begonnen hat. Das heißt, es ist wie millis (), aber mit einer anderen Einheit. Tatsächlich wird auch der lange Typ ohne Vorzeichen verwendet, und es werden auch keine Parameter verwendet. Es gibt jedoch einige zusätzliche Unterschiede, z. B. dass es zurückgesetzt wird und bei Null beginnt, wenn es 70 Minuten erreicht. In Bezug auf die Auflösung von 4 μs oder mit anderen Worten ist der zurückgegebene Wert immer ein Vielfaches von vier (4, 8, 12, 16,…). Denken Sie daran, dass 1000 μs 1 ms und 1.000.000 1 s entsprechen.
Millis () Beispiele in Arduino IDE
Dies sind alles Wörter, und die beste Ansicht der Funktion millis () zeigt einige Beispiele für einfache Arduino IDE-Skizzen, damit Sie einige Anwendungen und Anwendungsfälle sehen können. Also hier sind einige praktische Beispiele...
1-Beispiel für Erklären Sie die Verwendung von millis ():
unsigned long inicio, fin, transcurrido; // Declarar las variables a usar void setup(){ Serial.begin(9600); //Iniciar la comunicación serial } void loop(){ inicio=millis(); //Consultar ms desde que inició la ejecución del sketch delay(1000); //Espera 1 segundo fin=millis(); //Consultar ms fin del sketch transcurrido=fin-inicio; //Calcula el tiempo desde la última lectura Serial.println(transcurrido); //Muestra el resultado en el monitor serial delay(500); //Esperar medio segundo }
Messen Sie die Zeit zwischen zwei seriellen Nachrichten:
unsigned long tiempo1 = 0; //Declaramos las variables e iniciamos a 0 unsigned long tiempo2 = 0; unsigned long diferenciaTiempo = 0; void setup() { Serial.begin(9600); Serial.println("Envía la letra A/a por la terminal serial"); } void loop() { if(Serial.available() > 0){ char datoRecibido = Serial.read(); if(datoRecibido == 'A' || datoRecibido == 'a'){ tiempo1 = millis(); Serial.println("Envía la letra B/b por la terminal Serial"); } else if(datoRecibido == 'b' && datoRecibido == 'B'){ tiempo2 = millis(); diferenciaTiempo = tiempo1-tiempo2; Serial.print("El tiempo transcurrido entre el primer y último dato enviado es: "); Serial.print(diferenciaTiempo); } } }
Tun Blink eine LED mit millis ():
int estadoLed; //Almacena el estado del LED (Encendido o apagado) int periodo = 100; //Tiempo que está el LED encendido o apagado unsigned long tiempoAnterior = 0; //Almacena tiempo de referencia para comparar void setup() { pinMode(13,OUTPUT); //Configura el pin 13 como salida para el LED } void loop() { if(millis()-tiempoAnterior>=periodo){ //Evalúa si ha transcurrido el periodo programado estadoLed=!estadoLed; //Cambia el estado del LED cada 100ms digitalWrite(13,estadoLed); //Actualiza el estado del LED al actual tiempoAnterior=millis(); //Almacena el tiempo actual como referencia } }
Erstellen Sie eine einfacher Sequenzer um mit millis () in verschiedenen Zeitintervallen Text über den seriellen Monitor zu senden:
#define INTERVALO_MENSAJE1 3000 #define INTERVALO_MENSAJE2 5000 #define INTERVALO_MENSAJE3 7000 #define INTERVALO_MENSAJE4 15000 unsigned long tiempo_1 = 0; unsigned long tiempo_2 = 0; unsigned long tiempo_3 = 0; unsigned long tiempo_4 = 0; void print_tiempo(unsigned long tiempo_millis); void setup() { Serial.begin(9600); } void loop() { if(millis() > tiempo_1 + INTERVALO_MENSAJE1){ tiempo_1 = millis(); print_tiempo(tiempo_1); Serial.println("Soy"); } if(millis() > tiempo_2 + INTERVALO_MENSAJE2){ tiempo_2 = millis(); print_tiempo(tiempo_2); Serial.println("Un mensaje"); } if(millis() > tiempo_3 + INTERVALO_MENSAJE3){ tiempo_3 = millis(); print_tiempo(tiempo_3); Serial.println("De"); } if(millis() > tiempo_4 + INTERVALO_MENSAJE4){ tiempo_4 = millis(); print_tiempo(tiempo_4); Serial.println("Esperanza"); } } void print_tiempo(unsigned long tiempo_millis){ Serial.print("Tiempo: "); Serial.print(tiempo_millis/1000); Serial.print("s - "); }
Das weißt du schon für Weitere Informationen Sie können die herunterladen kostenloser Arduino Programmierkurs in PDF.