millis (): אַלץ איר דאַרפֿן צו וויסן וועגן די Arduino פונקציע

Arduino UNO מיליס פאַנגקשאַנז

אַרדוינאָ האט אַ גוטע רעפּערטואַר פון פאַנגקשאַנז צו אַרבעטן מיט איבער צייט. איינער פון זיי איז מיליס (), אַ ינסטרוקטיאָן וואָס גיט איר די צייט אין מיליסעקאַנדז זינט די ברעט פון Arduino איז אנגעצונדן. דאָס קען ויסקומען ווילד און אַז עס איז בלויז צו וויסן ווען די טעלער איז געווען אנגעצונדן, אָבער דער אמת איז אַז עס האט פילע מער פּראַקטיש אַפּלאַקיישאַנז.

פּאָר ejemplo, עס קענען ווערן גענוצט צו באַשליסן די צייט וואָס איז פאַרבייַ צווישן צוויי אָדער מער געשעענישן, ויסמיידן די אָפּשפּרונג (אָפּשפּרונג) פון אַ קנעפּל, עטק. דאָס קען אויך דינען צו ווייַזן די דורכפירונג צייט אין קריטיש סטאַגעס פון דעם קאָד, צו ענשור אַז די פּראָגראַם אַרבעט אין פאַקטיש צייט.

Millis () פונקציע

מיליס פונקציע אַרדוינאָ

ווי איך שוין דערמאנט, די Arduino millis פונקציע איז געניצט צו מעסטן צייט און דאָס איז אין מיליסעקאַנדז (ms)דערפאר זייַן נאָמען. אין אנדערע ווערטער, די נומעריקאַל ווערט אַז די פֿונקציע קערט ווען איר אַרייַן עס אין דיין סקיצע איז אַ צייַטווייַליק דאַטן אויסגעדריקט אין דעם אַפּאַראַט.

איר זאָל וויסן אַז די מאַקסימום ווערט פון דעם בייַטעוודיק איז אַנסיינד לאַנג, וואָס איז, לאַנג אָן צייכן. דאָס איז וויכטיק, ווייַל אויב אַ קלענערער איז געניצט, לאָגיק פּראָבלעמס קען פּאַסירן. אין אַדישאַן, איר זאָל וויסן אַז עס קען דויערן אַרויף צו 50 טעג פון צייט (4.320.000.000 מס), אַמאָל עס ריטשט דעם ווערט, עס וועט ריסטאַרט און אָנהייבן ווידער פֿון נול.

אן אנדער זאַך איר דאַרפֿן צו וויסן איז אַז מיליס פונקציאָנירן טוט נישט נוצן פּאַראַמעטערס.

אנדערע צייַטווייַליק אַרדוינאָ פאַנגקשאַנז

Arduino האט אנדערע צייט-פֿאַרבונדענע פאַנגקשאַנז פֿאַר איר צו נוצן אין דיין קאָד. איינער פון זיי איז די באַרימט פאַרהאַלטן (), אָבער עס איז מער:

  • פאַרהאַלטן (): דאָס איז די מערסט געוויינט און פּראָסט פון אַלע אַרדוינאָ פאַנגקשאַנז. עס אויך ניצט מיליסעקאַנדז ווי מיליס (). און עס וועט אויך זיין טיפּ ונסיגנעד לאַנג און נישט האָבן אַ צוריקקער ווערט. דער הויפּט איז געניצט צו באַקענען פּאָזאַז אין דער דורכפירונג פון אַ פּראָגראַם מיט פילע אַפּלאַקיישאַנז.
  • פאַרהאַלטן מיקראָסעקאָנדס (): עס איז ווייניקער געוויינט אין סקעטשאַז, אין דעם פאַל עס איז נאָך אַנסיינד לאַנג, אָן צוריקקער ווערט, און אין דעם פאַל עס ניצט מיקראָסעקאַנדז. דערווייַל, אַ מאַקסימום ווערט קענען זיין אַטשיווד מיט אַ פּינטלעכקייַט פון 16383 און אַ מינימום פון 3μ ס. אויב איר האָבן צו האַנדלען מיט ווייץ מער ווי עס, עס איז רעקאַמענדיד צו נוצן פאַרהאַלטן ().
  • מייקראָס (): אויך קערט אַ נומעריק ווערט אין מיקראָסעקאַנדז (μ ס) זינט די אַרדוינאָ ברעט סטאַרטעד עקסאַקיוטינג דעם פּראָגראַם. דאָס איז, עס איז ווי מיליס (), אָבער מיט אן אנדער אַפּאַראַט. אין פאַקט, עס אויך ניצט די ונסיגנעד לאַנג טיפּ און עס קען נישט נוצן פּאַראַמעטערס. אָבער עס האט עטלעכע נאָך דיפעראַנסיז, אַזאַ ווי אַז עס ריסעץ און סטאַרץ פון נול ווען עס ריטשאַז 70 מינוט. וועגן זיין האַכלאָטע פון ​​4 μs, אָדער אין אנדערע ווערטער, די ווערט עס קערט וועט שטענדיק זיין אַ קייפל פון פיר (4, 8, 12, 16, ...). געדענקען אַז 1000 μs יקוואַלז 1 מיז און 1.000.000 יקוואַלז 1 s.

Millis () ביישפילן אין Arduino IDE

סקרעענשאָט פון Arduino IDE

דאָס זענען אַלע ווערטער, און ווי די Millis () פֿונקציע קוקט בעסטער, איז געוויזן עטלעכע ביישפילן פון פּשוט סקעטשאַז פון Arduino IDE אַזוי איר קענען זען עטלעכע אַפּלאַקיישאַנז און נוצן קאַסעס. אַזוי דאָ זענען עטלעכע פּראַקטיש ביישפילן...

קענען זיין געוויינט מיט אַלע אַרדוינאָ באָרדז

1-עקסאַמפּלע פֿאַר דערקלערן די נוצן פֿון מיליס ():

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
}

מעסטן די צייט צווישן צוויי סיריאַל אַרטיקלען:

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

מאַכן פּינטלען אַ געפירט מיט מיליס ():

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

שאַפֿן אַ פּשוט סעקווענסער צו שיקן טעקסט דורך די סיריאַל מאָניטאָר מיט פאַרשידענע ינטערוואַלז מיט מיליס ():

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

איר שוין וויסן אַז פֿאַר מער אינפֿאָרמאַציע איר קענען אראפקאפיע די פריי אַרדוינאָ פּראָגראַממינג קורס אין פּדף.


דער אינהאַלט פון דעם אַרטיקל אַדכיר צו אונדזער פּרינציפּן פון לייט עטיקס. צו מעלדונג אַ טעות גיט דאָ.

זייט דער ערשטער צו באַמערקן

לאָזן דיין באַמערקונג

אייער בליצפּאָסט אַדרעס וועט נישט זייַן ארויס. Required fields זענען אנגעצייכנט מיט *

*

*

  1. פאַראַנטוואָרטלעך פֿאַר די דאַטן: Miguel Ángel Gatón
  2. ציל פון די דאַטן: קאָנטראָל ספּאַם, קאָמענטאַר פאַרוואַלטונג.
  3. לעגיטימאַטיאָן: דיין צושטימען
  4. קאָמוניקאַציע פון ​​די דאַטן: די דאַטן וועט נישט זיין קאַמיונאַקייטיד צו דריט פּאַרטיעס אַחוץ דורך לעגאַל פליכט.
  5. דאַטן סטאָרידזש: דאַטאַבייס כאָוסטיד דורך Occentus Networks (EU)
  6. רעכט: צו קיין צייט איר קענט באַגרענעצן, צוריקקריגן און ויסמעקן דיין אינפֿאָרמאַציע.