millis (): alles, was Sie über die Arduino-Funktion wissen müssen

Arduino UNO Millis-Funktionen

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

Millis-Funktion Arduino

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

Screenshot der 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...

Kann mit verwendet werden alle Arduino Boards

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.


Schreiben Sie den ersten Kommentar

Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.