مليس (): هر شيءَ جو توهان کي ارڊينوينو فنڪشن بابت toاڻڻ جي ضرورت آهي

Arduino UNO مليس افعال

Arduino وقت سان گڏ ڪم ڪرڻ لاءِ افعال جو هڪ سٺو ذخيرو آهي. انهن مان هڪ آهي مليس ()، هڪ هدايت جيڪا توهان آرڊينو بورڊ کي کولڻ کان وٺي مليس سيڪنڊن ۾ وقت ڏئي ٿي. هي شايد مضحکہ خیز لڳي ٿو ، ۽ اهو صرف اهو toاڻڻ لاءِ ڪم ڪندو آهي ته شوق ڪڏهن کوليو ويو ، پر سچ اهو آهي ته ان ۾ ڪيترائي وڌيڪ عملي اپليڪيشن آهن.

جي ejemplo، اهو ان وقت کي طئي ڪرڻ لاءِ استعمال ڪري سگهجي ٿو جيڪو ٻن يا ٻن کان وڌيڪ واقعن وچ ۾ ختم ٿيو هجي ، هڪ بٽڻ جي اچ وڃ (اچھال) کان بچڻ ، وغيره. اهو پڻ ڪوڊ جي نازڪ مرحلن ۾ عملدرآمد جي وقت کي ظاهر ڪرڻ جي لاءِ استعمال ڪري سگهجي ٿو ، انهي ڳالهه کي يقيني بڻائي ته پروگرام اصل وقت ۾ ڪم ڪندو.

مليس () فعل

مليس فنڪشن آردوينو

جيئن ته مون اڳي ئي بيان ڪيو آهي ، ارڊينو مليس فنڪشن وقت کي ماپڻ لاءِ استعمال ٿيندو آهي ، ۽ اهو انهي ۾ ڪندو آهي ملي سيڪنڊ (ايم ايس)، ان جو نالو. ٻين لفظن ۾ ، عددي قيمت جيڪا اهو فنڪشن موٽائي ٿي جڏهن توهان هن کي پنهنجي خاڪا ۾ شامل ڪريو ٿا هڪ عارضي ڊيٽا آهي جيڪا ان يونٽ ۾ ظاهر ڪئي وئي آهي.

توهان کي knowاڻڻ گهرجي ته انهي تغير جي وڌ کان وڌ قيمت آهي ڊگهي نه ٿيل، اهو آهي ، نشاني کان ڊگهو. اهو ضروري آهي ، ڇاڪاڻ ته جيڪڏهن هڪ نن oneڙو استعمال ٿيندو ، منطق جا مسئلا ٿي سگهن ٿا. ان کان علاوه ، توهان کي knowاڻڻ گهرجي ته اهو 50 ڏينهن تائين رهي سگهي ٿو (4.320.000.000،XNUMX،XNUMX،XNUMX MS) ، هڪ ڀيرو جڏهن اهو ويڪر تي پهچي ويو آهي ، اهو صفر کان شروع ۽ شروع ٿي ويندو.

هڪ ٻي شي توهان کي toاڻڻ آهي ته مليس فنڪشن پيرا ميٽر استعمال نٿا ڪن.

ٻيا عارضي آرڊينوو ڪم

آرڊينوو وٽ ٻيا وقت سان لاڳاپيل ڪم آهن توهان کي توهان جي ڪوڊ ۾ استعمال ڪرڻ لاءِ. انهن مان هڪ آهي مشهور دير ()پر وڌيڪ آهي:

  • دير (): اهو سڀني آرڊينوينو افعال جو سڀ کان وڌيڪ استعمال ۽ عام آهي. اهو پڻ مليس سيڪنڊن کي مليس طور استعمال ڪندو آهي (). ۽ اهو پڻ غير دستخط ٿيل قسم جو هوندو ، انهي سان گڏ واپسي وارو قدر نه هوندو. اهو بنيادي طور تي پروگرام جي عملدرآمد ۾ رڪاوٽون متعارف ڪرائڻ لاءِ استعمال ڪيو ويو آهي ، ڪيترن ئي ايپليڪيشنن سان.
  • دير سان مائڪرو سيڪنڊ (): گهٽ استعمال ٿيل آهي خاڪن ۾ ، انهي صورت ۾ اهو اڃا تائين ڊگهي ٿيل آهي ، انهي جي واپسي جي قيمت ناهي ، ۽ انهي حالت ۾ اهو مائڪرو سيڪنڊ استعمال ڪندو آهي. في الحال ، 16383 جي درستگي سان وڌ کان وڌ قيمت حاصل ڪري سگهجي ٿي ، ۽ گهٽ ۾ گهٽ 3μs. جيڪڏهن توهان کي انهي کان وڌيڪ عرصي جو انتظار ڪرڻو پوندو ، اهو دير جي استعمال لاءِ سفارش ڪجي ٿي ().
  • مائڪروس (): پڻ مائڪرو سيڪنڊ (μs) ۾ عددي قيمت موٽندي آهي جڏهن کان آرڊينو بورڊ پروگرام تي عمل شروع ڪيو آهي. اهو آهي ، اهو مليس وانگر آهي () ، پر ڪنهن ٻئي يونٽ سان. اصل ۾ ، اهو پڻ اڻ longاتل ڊگهي قسم استعمال ڪري ٿو ۽ اهو پيراگراف استعمال ڪونه ڪندو آهي. پر ان ۾ ڪجهه اضافي فرقَ آهن ، جيئن ته اها شروعات ٿيندي آهي ۽ صفر کان شروع ٿئي ٿي جڏهن 70 منٽن تائين پهچي وڃي ٿي. ان جو حل 4 μs جي حوالي سان ، يا ٻين لفظن ۾ ، اها واپسي جيڪا چٽي آهي هميشه هميشه چار (4 ، 8 ، 12 ، 16 ،…) کان وڌيڪ هوندي. ياد رکو ته 1000 μs 1 ms جي برابر آهي ۽ 1.000.000،1،XNUMX برابر XNUMX s.

Arduino IDE ۾ مليس () مثال

آردوينو IDE جو اسڪرين شاٽ

هي سڀ الفاظ آهن ، ۽ مليس جو بهترين نظارو () فنڪشن آرڊينو آئي ڊي اي ۾ سادي خاڪي جي ڪجهه مثال ڏيکاريندي آهي ته جيئن توهان ڪجهه ايپليڪيشنس ڏسي ۽ ڪيس استعمال ڪري سگهو. تنهن ڪري ڪجهه ڪجهه آهن عملي مثال...

سان استعمال ڪري سگھجي ٿو سڀ آرڊينو بورڊ

1- مثال لاءِ استعمال جي وضاحت ڪريو مليس کان ():

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

ٺاهيو ايل ايل ڪي ڇڏيو مليس سان ():

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

توھان اڳ ۾ ئي knowاڻو ٿا ان لاءِ وڌيڪ ڄاڻ توهان ڊائون لوڊ ڪري سگھو ٿا PDF ۾ مفت آرڊينو پروگرامنگ ڪورس.


مضمون جو مواد اسان جي اصولن تي عمل ڪري ٿو ايڊيٽوريل اخلاقيات. غلطي ڪلڪ ڪرڻ جي رپورٽ لاءِ هتي.

تبصرو ڪرڻ جو پهريون

پنهنجي راءِ ڏيو

پنهنجي اي ميل ايڊريس شايع نه ڪيو ويندو. گهري شعبن سان لڳل آهن *

*

*

  1. ڊيٽا جو ذميوار: Miguel Ángel Gatón
  2. ڊيٽا جو مقصد: ڪنٽرول سپيم ، تبصرو جي انتظام.
  3. سازش: توهان جي رضامندي
  4. ڊيٽا جي ابلاغ: ڊيٽا کي قانوني ذميواري کانسواءِ ٽئين پارٽين تائين رسائي نه ڏني ويندي.
  5. ڊيٽا اسٽوريج: ڊيٽابيس اويسينٽس نيٽورڪ (اي يو) پاران ميزباني ڪيل
  6. حق: ڪنهن به وقت توهان پنهنجي معلومات کي محدود ، ٻيهر ۽ ختم ڪري سگهو ٿا.