millis (): yonke into ofuna ukuyifumana malunga nomsebenzi weArduino

Arduino UNO imisebenzi yemillis

I-Arduino ine-repertoire elungileyo yemisebenzi yokusebenza kunye nexesha elingaphezulu. Omnye wabo ngu iimilisisi (), Umyalelo onika ixesha kwii-millisecond okoko kuvulwe ibhodi yeArduino. Oku kunokubonakala kungenangqondo, kwaye isebenza kuphela ukwazi ukuba ipleyiti ivuliwe nini, kodwa inyani kukuba inezicelo ezininzi ezisebenzayo.

por ejemplo, inokusetyenziselwa ukumisela ixesha elidlulileyo phakathi kweziganeko ezibini okanye nangaphezulu, thintela ukubuyisa (ukubuyisa) kweqhosha, njl. Inokusebenza ukubonisa ixesha lokuphumeza ngokwamanqanaba abalulekileyo ekhowudi, ukuqinisekisa ukuba inkqubo isebenza ngexesha lokwenyani.

Umsebenzi weMillis ()

Umsebenzi wemillis Arduino

Njengoko sele nditshilo, umsebenzi we-Arduino millis usetyenziselwa ukulinganisa ixesha, kwaye wenza njalo kwi i-milliseconds (ms), yiyo loo nto igama layo. Ngamanye amagama, ixabiso elabuyiswa ngulo msebenzi xa ulifaka kumzobo wakho yidatha yethutyana ebonakaliswe kuloo yunithi.

Kuya kufuneka uyazi ukuba elona xabiso liphezulu loku kwahluka ngu ayityikitywanga ixesha elideOko kukuthi, inde ngaphandle komqondiso. Oku kubalulekile, kuba ukuba incinci iyasetyenziswa, iingxaki zengqondo zinokwenzeka. Ukongeza, kuya kufuneka uyazi ukuba inokuhlala kwiintsuku ezingama-50 zexesha (4.320.000.000 ms), nje ukuba ifikelele kwelo xabiso iya kuqala kwaye iqale kwakhona ukusuka kwi-zero.

Enye into ekufuneka uyazi kukuba umsebenzi wemillis ayisebenzisi iiparameter.

Eminye imisebenzi yeArduino yexeshana

IArduino ineminye imisebenzi enxulumene nexesha onokuyisebenzisa kwikhowudi yakho. Omnye wabo ngu ukulibaziseka okudumileyo (), kodwa kukho ngaphezulu:

  • ukulibaziseka (): Yeyona nto isetyenzisiweyo kwaye ixhaphake kuyo yonke imisebenzi yeArduino. Ikwasebenzisa iimillisecond njengemillis (). Kwaye iya kuba yeyodidi olungatyikitywanga ixesha elide, kunye nokungabinalo nexabiso lokubuyisa. Isetyenziswa ikakhulu ukwazisa ukunqumama ekwenzeni inkqubo, kunye nokusetyenziswa okuninzi.
  • ukulibazisekaMicroseconds (): ayisetyenziswa kangako kwimizobo, kule meko ayisayinwanga ixesha elide, ngaphandle kwexabiso lokubuya, kwaye kule meko isebenzisa ii-microseconds. Okwangoku, ixabiso liphezulu linokufezekiswa ngokuchaneka kwe-16383, kunye nobuncinci be-3μs. Ukuba kufuneka uphathe ukulinda ixesha elide kunoko, kuyacetyiswa ukuba usebenzise delay ().
  • iimicros (): ibuye ibuyise ixabiso lamanani kwii-microseconds (μs) okoko ibhodi yeArduino yaqala ukwenza inkqubo. Oko kukuthi, kufana nemillis (), kodwa nenye iyunithi Ngapha koko, isebenzisa uhlobo olungasayinwanga olude kwaye ayisebenzisi iiparameter nokuba. Kodwa inomahluko owongezelelweyo, njengokuthi icwangcisa kwakhona kwaye iqale ukusuka kwi-zero xa ifikelela kwimizuzu engama-70. Ngokubhekisele kwisisombululo sayo se-4 μs, okanye ngamanye amagama, ixabiso eliyibuyisayo iya kuhlala iphindaphindwe kane (4, 8, 12, 16,…). Khumbula ukuba i-1000 μs ilingana ne-1 ms kunye ne-1.000.000 ilingana no-1 s.

Millis () imizekelo kwiArduino IDE

Iscreen seArduino IDE

Onke la ngamagama, kwaye indlela i-millis () esebenza ngayo ibukeka intle kukubonisa eminye imizobo yeArduino IDE elula ukuze ubone ezinye izicelo kwaye usebenzise iimeko. Nazi ke ezinye imizekelo esebenzayo...

Ingasetyenziswa nge Zonke iibhodi zeArduino

1-Umzekelo we chaza ukusetyenziswa ukusuka kwimillis ():

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
}

Linganisa ixesha phakathi kwemiyalezo emibini ebhaliweyo:

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

Yenza blink i-LED ngeemillis ():

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

Yakha sequencer elula ukuthumela isicatshulwa ngokujonga esweni ngamaxesha ahlukeneyo usebenzisa ii-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 - ");
}

Sele uyazi loo nto olunye ulwazi unokuzikhuphelela Inkqubo yasimahla yeArduino kwiPDF.


Yiba ngowokuqala ukuphawula

Shiya uluvo lwakho

Idilesi yakho ye email aziyi kupapashwa. ezidingekayo ziphawulwe *

*

*

  1. Uxanduva lwedatha: UMiguel Ángel Gatón
  2. Injongo yedatha: Ulawulo lwe-SPAM, ulawulo lwezimvo.
  3. Umthetho: Imvume yakho
  4. Unxibelelwano lwedatha: Idatha ayizukuhanjiswa kubantu besithathu ngaphandle koxanduva lomthetho.
  5. Ukugcinwa kweenkcukacha
  6. Amalungelo: Ngalo naliphi na ixesha unganciphisa, uphinde uphinde ucime ulwazi lwakho.