millis (). ամեն ինչ, ինչ դուք պետք է իմանաք Arduino գործառույթի մասին

Arduino UNO միլլիսի գործառույթներ

Arduino- ն ունի գործառույթների լավ ռեպերտուար, որի հետ ժամանակի ընթացքում պետք է աշխատել: Դրանցից մեկն է միլլիս (), հրահանգ, որը ձեզ տալիս է միլիվայրկյաններով ժամանակը, քանի որ Arduino տախտակը միացված է: Սա կարող է անհեթեթ թվալ, և որ այն ծառայում է միայն այն ժամանակ, երբ վառարանը միացված է, բայց ճշմարտությունն այն է, որ այն շատ ավելի գործնական կիրառություն ունի:

By ejemplo, այն կարող է օգտագործվել որոշելու ժամանակը, որը անցել է երկու կամ ավելի իրադարձությունների միջև, խուսափել կոճակի վերականգնումից (ցատկումից) և այլն: Այն կարող է նաև ծառայել կոդի կրիտիկական փուլերում կատարման ժամանակը ցույց տալուն ՝ ապահովելով, որ ծրագիրը գործում է իրական ժամանակում:

Միլլիս () գործառույթ

միլիս ֆունկցիա Arduino

Ինչպես արդեն նշեցի, Arduino millis ֆունկցիան օգտագործվում է ժամանակը չափելու համար, և դա անում է ներսում միլիսեկդոններ (ms), այստեղից էլ ՝ նրա անվանումը: Այլ կերպ ասած, այն թվային արժեքը, որը վերադարձնում է այս ֆունկցիան, երբ այն ընդգրկում ես քո ուրվագծում, այդ միավորում արտահայտված ժամանակավոր տվյալ է:

Դուք պետք է իմանաք, որ այս փոփոխականի առավելագույն արժեքն է անստորագիր երկար, այսինքն ՝ երկար առանց նշանի: Սա կարևոր է, քանի որ եթե ավելի փոքր օգտագործվում է, տրամաբանական խնդիրներ կարող են առաջանալ: Բացի այդ, դուք պետք է իմանաք, որ այն կարող է տևել մինչև 50 օր ժամանակ (4.320.000.000 ms), երբ այդ արժեքին հասնի, այն կվերագործարկվի և կսկսվի զրոյից:

Մեկ այլ բան, որ դուք պետք է իմանաք, միլիսի գործառույթն է չի օգտագործում պարամետրեր.

Arduino- ի այլ ժամանակավոր գործառույթներ

Arduino- ն ունի այլ ժամանակի հետ կապված գործառույթներ, որոնք դուք կարող եք օգտագործել ձեր կոդում: Դրանցից մեկն է հայտնի ուշացումը (), բայց կա ավելին.

  • ուշացում ()Դա Arduino- ի բոլոր գործառույթներից ամենաօգտագործվողն ու տարածվածն է: Այն նաև օգտագործում է միլիվայրկյանները որպես միլիվայր (): Եվ դա կլինի նաև տիպի անստորագիր երկար, ինչպես նաև չի ունենա վերադարձի արժեք: Այն օգտագործվում է հիմնականում ծրագրի կատարման մեջ դադարներ մտցնելու համար ՝ բազմաթիվ ծրագրերով:
  • ուշացում միկրովայրկյան (): ավելի քիչ է օգտագործվում էսքիզների մեջ, այս դեպքում այն ​​դեռ երկար է ստորագրված, առանց վերադարձի արժեքի, և այս դեպքում օգտագործում է միկրովայրկյան: Ներկայումս առավելագույն արժեքի կարելի է հասնել 16383 ճշգրտությամբ, իսկ նվազագույնը ՝ 3 μs: Եթե ​​դուք ստիպված եք սպասել սպասումներից ավելի երկար, խորհուրդ է տրվում օգտագործել ուշացումը ():
  • միկրո (): նույնպես վերադարձնում է թվային արժեքը միկրովայրկյանում (μs), քանի որ Arduino խորհուրդը սկսել է իրականացնել ծրագիրը: Այսինքն ՝ այն նման է միլիսի (), բայց մեկ այլ միավորով: Փաստորեն, այն նաև օգտագործում է անստորագիր երկար տիպը և չի օգտագործում նաև պարամետրեր: Բայց դա ունի որոշ լրացուցիչ տարբերություններ, օրինակ `այն վերականգնում է և սկսվում զրոյից, երբ հասնում է 70 րոպեի: Ինչ վերաբերում է դրա լուծմանը 4 μs, կամ այլ կերպ ասած, այն արժեքը, որը նա կվերադարձնի, միշտ կլինի չորսի բազմապատիկը (4, 8, 12, 16,): Հիշեք, որ 1000 μs հավասար է 1 ms, իսկ 1.000.000 հավասար 1 s:

Միլլիսի () օրինակներ Arduino IDE- ում

Լուսանկարը Arduino IDE- ից

Սրանք բոլորը բառեր են, և միլիս () ֆունկցիայի լավագույն տեսքը Arduino IDE- ում ցույց տալով պարզ ուրվագծերի մի քանի օրինակներ, որպեսզի տեսնեք որոշ ծրագրեր և օգտագործեք գործեր: Այսպիսով, ահա մի քանիսը գործնական օրինակներ...

Կարելի է օգտագործել հետ բոլոր Arduino տախտակները

1-օրինակ ՝ բացատրել օգտագործումը 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
}

Չափեք ժամանակը երկու սերիական հաղորդագրությունների միջև:

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

Անել թարթել LED միլլիսով ():

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

Դա դուք արդեն գիտեք դրա համար մաս información Դուք կարող եք ներբեռնել Arduino ծրագրավորման անվճար դասընթաց PDF- ով.


Հոդվածի բովանդակությունը հավատարիմ է մեր սկզբունքներին խմբագրական էթիկա, Սխալի մասին հաղորդելու համար կտտացրեք այստեղ.

Եղիր առաջին մեկնաբանողը

Թողեք ձեր մեկնաբանությունը

Ձեր էլ. Փոստի հասցեն չի հրապարակվելու: Պահանջվող դաշտերը նշված են *

*

*

  1. Տվյալների համար պատասխանատու ՝ Միգել Անխել Գատոն
  2. Տվյալների նպատակը. Վերահսկել SPAM, մեկնաբանությունների կառավարում:
  3. Օրինականություն. Ձեր համաձայնությունը
  4. Տվյալների հաղորդագրություն. Տվյալները չեն փոխանցվի երրորդ անձանց, բացառությամբ իրավական պարտավորության:
  5. Տվյալների պահպանում. Տվյալների շտեմարան, որը հյուրընկալվում է Occentus Networks (EU) - ում
  6. Իրավունքներ. Timeանկացած պահի կարող եք սահմանափակել, վերականգնել և ջնջել ձեր տեղեկատվությունը: