millis (): zvese zvaunoda kuti uzive nezve iro basa reArduino

Arduino UNO millis inoshanda

Arduino ine yakanaka repertoire yemabasa ekushanda pamwe nekufamba kwenguva. Imwe yacho ndeye millis (), kuraira kunokupa iyo nguva mumamiriseconds kubva bhodhi reArduino ravhurwa. Izvi zvingaite kunge zvisina musoro, uye kuti zvinongoshanda chete kuziva kuti hobho yakavhurwa riini, asi chokwadi ndechekuti ine akawanda mashandisiro ekushandisa.

kubudikidza ejemplo, inogona kushandiswa kuona nguva yadarika pakati pezviitiko zviviri kana kupfuura, dzivirira kuburitsa (bounce) kwebhatani, nezvimwe. Inogona zvakare kushandiswa kuratidza iyo yekuuraya nguva mumatanho akakosha ekodhi, kuve nechokwadi chekuti chirongwa chinoshanda munguva chaiyo.

Millis () basa

millis basa Arduino

Sezvandambotaura, iyo Arduino millis basa rinoshandiswa kuyera nguva, uye rinodaro mu milliseconds (ms), saka izita rayo. Mune mamwe mazwi, kukosha kwenhamba kunodzoserwa nebasa iri kana iwe uchiisanganisira mune yako sketch idhata renguva pfupi rinoratidzwa muchikamu icho.

Iwe unofanirwa kuziva kuti iyo yakanyanya kukosha yeiyi musiyano iri isina kusaina refu, ndiko kuti, refu isina chiratidzo. Izvi zvakakosha, nekuti kana diki rikashandiswa, matambudziko epfungwa anogona kuitika. Uye zvakare, iwe unofanirwa kuziva kuti inogona kusvika pamazuva makumi mashanu enguva (50 ms), kana yangosvika iko kukosha ichatangazve uye yotangazve kubva zero.

Chimwe chinhu chaunofanirwa kuziva ndechekuti millis inoshanda haishandisi paramita.

Zvimwe zvenguva pfupi zveArduino mabasa

Arduino ine mamwe mabasa ane chekuita nenguva iwe aunoshandisa mune kodhi yako. Imwe yacho ndeye kunonoka kwakakurumbira (), asi pane zvimwe:

  • kunonoka (): Ndiyo yakanyanya kushandiswa uye yakajairika pane ese Arduino mabasa. Iyo zvakare inoshandisa mamiriseconds se millis (). Uye zvakare ichave yerudzi isina kusainwa kwenguva refu, pamusoro pekushaya kukosha kwekudzoka. Iyo inoshandiswa kunyanya kuunza kumbomira mukuitwa kwechirongwa, nemazhinji mafomu.
  • kunonokaMicroseconds (): haishandiswe mumasiketi, mune ino kesi haina kusaina kureba, isina kukosha kwekudzoka, uye mune ino kesi inoshandisa microseconds. Parizvino, huwandu hwepamusoro hunogona kuwanikwa nekujeka kwe16383, uye hushoma hwe3μs. Kana iwe uchifanira kubata unomirira kwenguva yakareba kupfuura iyoyo, zvinokurudzirwa kushandisa kunonoka ().
  • micros (): zvakare inodzosera kukosha kwenhamba mu microseconds (μs) kubvira Arduino bhodhi payakatanga kuita chirongwa ichi. Ndokunge, yakafanana nemamirisiti (), asi iine chimwe chinhu. Muchokwadi, inoshandisawo isina kunyorwa yakareba mhando uye haina kushandisa parameter futi. Asi ine mimwe misiyano yekuwedzera, senge kuti inogadzirisa uye inotanga kubva pa zero painosvika 70 maminetsi. Nezve kugadzirisa kwayo kwema4 μs, kana nemamwe mazwi, kukosha kwainodzoka kunogara kuri kuwanda kwemana (4, 8, 12, 16,…). Rangarira kuti 1000 μs yakaenzana 1 ms uye 1.000.000 1 XNUMX yakaenzana XNUMX s.

Millis () mienzaniso muArduino IDE

Screenshot yaArduino IDE

Aya ndiwo ese mazwi, uye akanakisa maonero eiyo millis () basa ari kuratidza mimwe mienzaniso yeakareruka Arduino IDE sketches kuti iwe ugone kuona zvimwe zvinoshandiswa uye kushandisa makesi. Saka heano mamwe mienzaniso inoshanda...

Inogona kushandiswa ne ese mabhodhi eArduino

1-Muenzaniso we tsanangura mashandisiro kubva 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
}

Pima iyo nguva pakati pemaviri serial meseji:

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

Gadzira kubwaira akatungamirira ne millis ():

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

Gadzira a yakapusa sequencer kutumira mameseji kuburikidza neiyo serial yekutarisa panguva dzakasiyana nguva uchishandisa 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 - ");
}

Unotoziva izvozvo zve mamwe mashoko unogona kurodha pasi yemahara Arduino programming kosi muPDF.


Izvo zviri muchinyorwa zvinoomerera pamisimboti yedu ye tsika dzekunyora. Kuti utaure chikanganiso tinya pano.

Iva wekutanga kutaura

Siya yako yekutaura

Your kero e havazobvumirwi ichibudiswa. Raida minda anozivikanwa ne *

*

*

  1. Inotarisira iyo data: Miguel Ángel Gatón
  2. Chinangwa cheiyo data: Kudzora SPAM, manejimendi manejimendi.
  3. Legitimation: Kubvuma kwako
  4. Kutaurirana kwedata
  5. Dhata yekuchengetedza: Dhatabhesi inobatwa neOccentus Networks (EU)
  6. Kodzero: Panguva ipi neipi iwe unogona kudzora, kupora uye kudzima ruzivo rwako