millis (): kõik, mida peate teadma Arduino funktsiooni kohta

Arduino UNO millisfunktsioonid

Arduinol on hea funktsioonide repertuaar, millega aja jooksul töötada. Üks neist on millis (), käsk, mis annab teile aega millisekundites alates Arduino parda sisselülitamisest. See võib tunduda absurdne ja aitab teada ainult plaadi sisselülitamise aega, kuid tõsi on see, et sellel on palju praktilisemaid rakendusi.

Por ejemplo, seda saab kasutada kahe või enama sündmuse vahel kulunud aja määramiseks, nupu tagasilöögi vältimiseks jne. Seda saaks kasutada ka täitmisaja kuvamiseks koodi kriitilistes etappides, tagades, et programm töötab reaalajas.

Millis () funktsioon

millisfunktsioon Arduino

Nagu juba mainisin, kasutatakse aja mõõtmiseks funktsiooni Arduino millis ja see teeb seda ka sisse millisekundit (ms), sellest ka selle nimi. Teisisõnu, arvuline väärtus, mille see funktsioon tagastab, kui lisate selle oma visandisse, on selles üksuses väljendatud ajutised andmed.

Peaksite teadma, et selle muutuja maksimaalne väärtus on allkirjastamata pikk, st kaua ilma märgita. See on oluline, sest väiksema kasutamise korral võivad tekkida loogikaprobleemid. Lisaks peaksite teadma, et see võib kesta kuni 50 päeva (4.320.000.000 XNUMX XNUMX XNUMX ms), kui see väärtus on saavutatud, taaskäivitatakse ja alustatakse uuesti nullist.

Teine asi, mida peate teadma, on see, et millid toimivad ei kasuta parameetreid.

Muud ajutised Arduino funktsioonid

Arduinol on ka muid ajaga seotud funktsioone, mida saate oma koodis kasutada. Üks neist on kuulus viivitus (), kuid on veel:

  • viivitus (): See on Arduino funktsioonidest kõige sagedamini kasutatav ja levinum. See kasutab millisekundeid ka millisekunditena (). Lisaks sellele on see ka allkirjastamata pikk, lisaks sellele, et sellel pole tagastusväärtust. Seda kasutatakse peamiselt paljude rakendustega programmi käivitamisel pauside sisseviimiseks.
  • viivitus mikrosekundit (): kasutatakse visandites vähem, sel juhul on see endiselt pikk allkirjastamata, ilma tagastusväärtuseta ja sel juhul kasutab see mikrosekundit. Praegu saab maksimaalse väärtuse saavutada täpsusega 16383 ja minimaalselt 3μs. Kui teil on vaja oodata kauem kui see, on soovitatav kasutada viivitust ().
  • mikros (): tagastab ka arvulise väärtuse mikrosekundites (μs) alates sellest, kui Arduino plaat hakkas programmi täitma. See tähendab, et see on nagu millis (), kuid koos teise ühikuga. Tegelikult kasutab see ka allkirjastamata pikka tüüpi ja ei kasuta ka parameetreid. Kuid sellel on mõned täiendavad erinevused, näiteks see, et see lähtestatakse ja algab nullist, kui see jõuab 70 minutini. Mis puutub lahutusvõimesse 4 μs ehk teisisõnu, siis on selle tagastatav väärtus alati nelja (4, 8, 12, 16,…) kordne. Pidage meeles, et 1000 μs võrdub 1 ms ja 1.000.000 1 XNUMX võrdub XNUMX s.

Millis () näited Arduino IDE-s

Arduino IDE ekraanipilt

Need on kõik sõnad ja funktsiooni millis () parim vaade näitab lihtsate Arduino IDE visandite näiteid, nii et näete mõnda rakendust ja juhtumit. Nii et siin on mõned praktilisi näiteid...

Saab kasutada koos kõik Arduino lauad

1-näide selgitage kasutamist millistest ():

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
}

Mõõtke kahe jadateate vahelist aega:

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

Hacer vilgub LED millidega ():

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

Loo a lihtne sekventser teksti saatmiseks läbi seeriamonitori erinevate ajaintervallidega millis () kasutades:

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

Sa juba tead seda más información saate alla laadida tasuta Arduino programmeerimiskursus PDF-is.


Ole esimene kommentaar

Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.