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