millis (): txhua yam koj xav paub txog Arduino function

Arduino UNO millis zog

Arduino muaj qhov ua haujlwm zoo rau kev ua haujlwm nrog kev ua haujlwm dhau sijhawm. Ib tug ntawm yog lawv millis (), ib qho kev qhia uas muab sijhawm rau koj nyob rau hauv milliseconds txij li thaum lub Arduino board tau muab. Qhov no yuav zoo li tsis muaj tseeb, thiab nws tsuas yog pab kom paub thaum lub hob tau qhib, tab sis qhov tseeb yog tias nws muaj ntau qhov kev siv tau zoo ntxiv.

por ejemplo, nws tuaj yeem siv los txiav txim siab lub sijhawm uas dhau los ntawm ob lossis ntau qhov xwm txheej, zam qhov debounce (thaws) ntawm lub pob, thiab lwm yam. Nws kuj tseem siv tau los qhia lub sijhawm tiav hauv cov theem tseem ceeb ntawm txoj cai, kom ntseeg tau tias cov haujlwm ua haujlwm ntawm lub sijhawm.

Millis () muaj nuj nqi

millis muaj nuj nqi Arduino

Raws li kuv tau hais txog, Arduino millis kev ua haujlwm yog siv los ntsuas lub sijhawm, thiab nws ua li ntawd hauv milliseconds (ms), li no nws lub npe. Hauv lwm lo lus, tus lej muaj nuj nqi uas qhov haujlwm no rov qab los thaum koj suav nrog hauv koj cov duab kos yog cov ntaub ntawv ib ntus uas tau hais hauv chav ntawd.

Koj yuav tsum paub tias tus nqi siab ntawm cov nqi sib txawv no yog tsis tau kos npe ntev, ntawd yog, ntev ntev uas tsis muaj kos npe. Qhov no tseem ceeb heev, vim tias yog siv ib qho me dua, cov teeb meem kev cuam tshuam tuaj yeem tshwm sim. Ntxiv rau, koj yuav tsum paub tias nws tuaj yeem ntev txog 50 hnub ntawm lub sijhawm (4.320.000.000 ms), thaum nws tau mus txog qhov nqi ntawd nws yuav rov qab pib dua thiab pib dua los ntawm xoom.

Ib qho ntxiv uas koj yuav tsum paub yog tias millis muaj nuj nqi tsis siv tsis dhau.

Lwm cov haujlwm Arduino ib ntus

Arduino muaj lwm lub sijhawm ua haujlwm rau koj tau siv nyob rau hauv koj cov cai. Ib tug ntawm yog lawv nto moo qeeb (), tab sis tseem tshuav ntxiv:

  • ncua (): Nws yog qhov feem ntau siv thiab siv txhua yam ntawm Arduino kev ua haujlwm. Nws kuj tseem siv milliseconds li millis (). Thiab nws tseem yuav yog hom tsis kos npe ntev, nrog rau qhov tsis muaj nqi xa rov qab. Nws yog siv feem ntau los qhia cov pauses nyob rau hauv kev tua ntawm ib qho kev zov me nyuam, nrog ntau daim ntawv thov.
  • qeebMicroseconds (): yog tsawg dua siv hauv cov ntsiab lus kos, hauv qhov no tseem tseem tsis tau kos npe ntev, uas tsis muaj nqi rov qab, thiab hauv qhov no nws siv microseconds. Tam sim no, tus nqi siab tshaj plaws tuaj yeem ua tiav nrog qhov tseeb ntawm 16383, thiab qhov tsawg kawg yog 3μs. Yog tias koj yuav tsum siv sijhawm ntev dua qhov ntawd, nws raug nquahu kom siv qeeb ().
  • micros (): kuj rov tus lej nqi hauv microseconds ()s) txij li lub rooj tsavxwm Arduino pib tsim cov haujlwm. Ntawd yog, nws yog zoo li millis (), tab sis nrog lwm chav nyob. Qhov tseeb, nws tseem siv hom ntev uas tsis tau kos npe thiab nws tsis siv qhov tsis yog. Tab sis nws muaj qee qhov sib txawv ntxiv, xws li tias nws rov pib dua thiab pib ntawm xoom thaum nws mus txog 70 feeb. Hais txog nws txoj kev daws teeb meem ntawm 4 μs, lossis ua lwm yam lus, tus nqi nws rov qab yuav ib txwm muaj ntau yam ntawm plaub (4, 8, 12, 16, ...). Nco ntsoov tias 1000 μs sib npaug 1 ms thiab 1.000.000 sib npaug 1 s.

Millis () piv txwv hauv Arduino IDE

Screenshot ntawm Arduino IDE

Cov no yog txhua lo lus, thiab kev pom zoo tshaj plaws ntawm millis () ua haujlwm yog los ntawm kev qhia qee qhov piv txwv ntawm cov duab kos yooj yim Arduino IDE yog li koj tuaj yeem pom qee cov ntawv thov thiab siv rooj plaub. Yog li ntawm no yog qee qhov piv txwv tswv yim...

Yuav siv nrog txhua daim Arduino

1-Piv txwv rau piav qhia kev siv los ntawm 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
}

Ntsuas lub sijhawm ntawm ob lub xov tooj:

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

Ua ntsais ib qho LED nrog 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
    }
}

Tsim ib qho yooj yim sequencer xa cov ntawv sau los ntawm cov kev tshuaj xyuas cov sib txawv ntawm cov sij hawm sib txawv siv millis ():

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

Koj twb paub hais tias rau xav paub ntxiv koj muaj peev xwm rub tau lub pub dawb cov ntaub ntawv ua si Arduino hauv PDF.


Cov ntsiab lus ntawm tsab xov xwm ua raws li peb cov ntsiab cai ntawm kev tswj hwm kev ncaj nceesCov. Tshaj tawm ib qho yuam kev nyem no.

Yog thawj tus tuaj tawm tswv yim

Tso koj saib

Koj email chaw nyob yuav tsis tsum luam tawm. Yuav tsum tau teb cov cim nrog *

*

*

  1. Lub luag haujlwm rau cov ntaub ntawv: Miguel Ángel Gatón
  2. Lub hom phiaj ntawm cov ntaub ntawv: Tswj SPAM, kev tswj xyuas tawm tswv yim.
  3. Sau raws cai: Koj kev tso cai
  4. Kev sib txuas lus ntawm cov ntaub ntawv: Cov ntaub ntawv yuav tsis raug xa mus rau lwm tus neeg thib peb tsuas yog los ntawm kev txiav txim siab raug cai.
  5. Cov ntaub ntawv khaws cia: Cov Ntaub Ntawv khaws tseg los ntawm Occentus Networks (EU)
  6. Txoj Cai: Txhua lub sijhawm koj tuaj yeem txwv, rov qab thiab tshem tawm koj cov ntaub ntawv.