millis (): wax kasta oo aad u baahan tahay inaad ka ogaato waxqabadka Arduino

Arduino UNO hawlaha millis

Arduino wuxuu leeyahay jaangooyooyin wanaagsan oo la shaqeeya waqti ka dib. Mid ka mid ah ayaa ah milis (), tilmaam ku siinaysa adiga wakhtiga milisekondarka tan iyo markii guddiga Arduino la daaray. Tani waxay umuuqataa wax aan macquul ahayn, iyo in kaliya ay u adeegayso in la ogaado markii saxanka la shiday, laakiin runtu waxay tahay inay leedahay codsiyo badan oo wax ku ool ah.

by ejemplo, waxaa loo isticmaali karaa in lagu go'aamiyo waqtiga ka dhex dhacay laba ama in ka badan oo dhacdo, iska ilaali boodboodka (boodboodka) badhan, iwm. Waxay sidoo kale u adeegi kartaa inay muujiso waqtiga fulinta marxaladaha muhiimka ah ee koodhka, hubinta in barnaamijku ku shaqeeyo waqtiga dhabta ah.

Millis () shaqeyn

hawl milis

Sidaan horayba u soo sheegay, shaqada Arduino millis waxaa loo isticmaalaa in lagu cabiro waqtiga, waana lagu sameeyaa millise seconds (ms), haddaba magaceeda. Si kale haddii loo dhigo, qiimaha tirada ee shaqadani soo noqonayso markii aad ku darto sawirkaaga waa xog ku meel gaar ah oo lagu muujiyey cutubkaas.

Waa inaad ogaataa in qiimaha ugu badan ee doorsoomahan uu yahay aan saxeexin dheer, taasi waa, muddo dheer oo aan lahayn calaamado. Tani waa muhiim, maxaa yeelay haddii mid ka yar la isticmaalo, dhibaatooyinka caqliga ayaa dhici kara. Intaas waxaa sii dheer, waa inaad ogaataa inay socon karto ilaa 50 maalmood oo waqtiga ah (4.320.000.000 ms), marka ay qiimahaas gaarto dib ayey u bilaabi doontaa oo waxay mar kale ka bilaabi doontaa eber.

Waxyaabaha kale ee ay tahay inaad ogaato ayaa ah in milishu uu shaqeynayo ma adeegsado cabbiro.

Hawlaha kale ee ku meel gaarka ah Arduino

Arduino waxay leedahay hawlo kale oo waqti la xiriira oo aad ugu adeegsan karto koodhkaaga. Mid ka mid ah ayaa ah dib u dhaca caanka ah (), laakiin waxaa jira wax badan:

  • daahid (): Waa tan ugu isticmaalka badan uguna caansan dhammaan howlaha Arduino. Waxay sidoo kale u isticmaashaa milliseconds sida millis (). Iyo sidoo kale waxay noqon doontaa nooca aan la saxiixin dheer, iyo sidoo kale iyada oo aan lahayn qiime celin. Waxaa badanaa loo adeegsadaa in lagu soo bandhigo joogsiyada fulinta barnaamijka, oo leh codsiyo badan.
  • dib u dhigistaMicroseconds (): wuu yaryahay adeegsiga sawir gacmeedyada, kiiskan wali lama saxiixin waqti dheer, oo aan lahayn qiime celin, kiiskanna wuxuu adeegsadaa microseconds. Waqtigaan, qiimaha ugu badan waxaa lagu gaari karaa saxsanaanta 16383, iyo uguyaraan 3μs. Haddii ay tahay inaad wax ka qabato sugitaanka intaas ka dheer, waxaa lagugula talinayaa inaad dib u dhigto ().
  • micros (): sidoo kale wuxuu soo celiyaa qiime tirooyin ah oo ku jira microseconds (μs) tan iyo markii guddiga Arduino ay bilaabeen fulinta barnaamijka. Taasi waa, waa sida milis (), laakiin leh cutub kale. Xaqiiqdii, sidoo kale waxay isticmaashaa nooca dheer ee aan saxeexnayn mana isticmaasho xuduudaha. Laakiin waxay leedahay xoogaa khilaafaad dheeri ah, sida inay dib u cusbooneysiiso oo ay ka bilowdo eber markii ay gaarto 70 daqiiqo. Marka laga hadlayo xallinta 4 μs, ama si kale haddii loo dhigo, qiimaha ay soo celiso had iyo jeer waxay noqon doontaa mid tiro badan oo afar ah (4, 8, 12, 16,…). Xusuusnow in 1000 equs u dhiganta 1 ms iyo 1.000.000 oo u dhiganta 1 s.

Millis () tusaalooyinka ku jira Arduino IDE

Muuqaalka shaashadda ee Arduino IDE

Kuwani dhammaantood waa ereyo, iyo sida hawsha millis () ay ugu egtahay sida ugu fiican waa iyadoo la muujinayo tusaalooyinka tusaalooyinka Arduino IDE fudud si aad u aragto codsiyada qaarkood una adeegsan karaan kiisaska. Marka waa kuwan qaar tusaalooyin wax ku ool ah...

Waa loo isticmaali karaa dhammaan looxyada Arduino

1-Tusaale loogu talagalay sharax isticmaalka laga bilaabo 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
}

Cabir waqtiga u dhexeeya laba farriin oo taxane ah:

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

Samee bilig biligleynaya leh milis ():

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

Abuur a seencer fudud si aad ugu dirto qoraalka adoo adeegsanaya kormeeraha taxanaha ah waqtiyo kala duwan adigoo isticmaalaya 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 - ");
}

Horey waad u ogayd taas macluumaad dheeraad ah waxaad kala soo bixi kartaa koorsada barnaamijka Arduino oo bilaash ah PDF.


Noqo kuwa ugu horreeya ee faallo bixiya

Ka tag faalladaada

cinwaanka email aan la daabacin doonaa. Beeraha loo baahan yahay waxaa lagu calaamadeeyay la *

*

*

  1. Masuul ka ah xogta: Miguel Ángel Gatón
  2. Ujeedada xogta: Xakamaynta SPAM, maaraynta faallooyinka.
  3. Sharci: Oggolaanshahaaga
  4. Isgaarsiinta xogta: Xogta looma gudbin doono dhinacyada saddexaad marka laga reebo waajibaadka sharciga ah.
  5. Kaydinta xogta: Macluumaadka ay martigelisay Shabakadaha Occentus (EU)
  6. Xuquuqda: Waqti kasta oo aad xadidi karto, soo ceshan karto oo tirtiri karto macluumaadkaaga.