millis (): ທຸກຢ່າງທີ່ທ່ານຕ້ອງຮູ້ກ່ຽວກັບ ໜ້າ ທີ່ຂອງ Arduino

Arduino UNO ຫນ້າທີ່ millis

Arduino ມີຜົນງານທີ່ດີກັບການເຮັດວຽກກັບເວລາ. ນຶ່ງໃນນັ້ນກໍ່ແມ່ນ millis (), ຄຳ ແນະ ນຳ ທີ່ໃຫ້ທ່ານມີເວລາເປັນວິນາທີນັບຕັ້ງແຕ່ກະດານ Arduino ຖືກເປີດໃຊ້. ນີ້ອາດເບິ່ງຄືວ່າໂງ່, ແລະມັນພຽງແຕ່ຊ່ວຍໃຫ້ຮູ້ວ່າເວລາຖືກປິດ, ແຕ່ຄວາມຈິງກໍ່ຄືວ່າມັນມີການ ນຳ ໃຊ້ພາກປະຕິບັດອີກຫຼາຍຢ່າງ.

por ejemplo, ມັນສາມາດຖືກ ນຳ ໃຊ້ເພື່ອ ກຳ ນົດເວລາທີ່ໄດ້ຜ່ານໄປໃນລະຫວ່າງສອງເຫດການຫລືຫຼາຍກວ່າເຫດການ, ຫລີກລ້ຽງການຖົກຖຽງ (ປຸ່ມ) ຂອງປຸ່ມ, ແລະອື່ນໆ. ມັນຍັງສາມາດຮັບໃຊ້ໃນການສະແດງເວລາປະຕິບັດໃນໄລຍະ ສຳ ຄັນຂອງລະຫັດ, ຮັບປະກັນວ່າໂປຣແກຣມເຮັດວຽກໄດ້ໃນເວລາຈິງ.

Millis () ໜ້າ ທີ່

millis function Arduino

ດັ່ງທີ່ຂ້າພະເຈົ້າໄດ້ກ່າວມາແລ້ວ, ຟັງຊັນ Arduino millis ແມ່ນໃຊ້ໃນການວັດເວລາ, ແລະມັນກໍ່ເຮັດເຊັ່ນກັນ milliseconds (ms), ເພາະສະນັ້ນຊື່ຂອງມັນ. ເວົ້າອີກຢ່າງ ໜຶ່ງ, ມູນຄ່າຕົວເລກທີ່ ຕຳ ແໜ່ງ ນີ້ກັບມາເມື່ອທ່ານໃສ່ມັນໃສ່ໃນຮູບແຕ້ມຂອງທ່ານແມ່ນຂໍ້ມູນຊົ່ວຄາວທີ່ສະແດງຢູ່ໃນ ໜ່ວຍ ນັ້ນ.

ທ່ານຄວນຮູ້ວ່າມູນຄ່າສູງສຸດຂອງຕົວແປນີ້ແມ່ນ ບໍ່ໄດ້ລົງນາມຍາວ, ນັ້ນແມ່ນ, ຍາວນານໂດຍບໍ່ມີເຄື່ອງ ໝາຍ. ນີ້ແມ່ນສິ່ງທີ່ ສຳ ຄັນ, ເພາະວ່າຖ້າໃຊ້ໂຕນ້ອຍກວ່າ, ບັນຫາຢ່າງມີເຫດຜົນກໍ່ອາດຈະເກີດຂື້ນ. ນອກຈາກນັ້ນ, ທ່ານຄວນຮູ້ວ່າມັນສາມາດມີໄດ້ເຖິງ 50 ວັນ (4.320.000.000 ms), ເມື່ອມັນຮອດມູນຄ່ານັ້ນມັນກໍ່ຈະເລີ່ມຄືນ ໃໝ່ ແລະເລີ່ມຕົ້ນ ໃໝ່ ຈາກສູນ.

ສິ່ງອື່ນທີ່ທ່ານຕ້ອງຮູ້ແມ່ນວ່າການເຮັດວຽກຂອງ millis ບໍ່ໄດ້ນໍາໃຊ້ຕົວກໍານົດການ.

ໜ້າ ທີ່ອື່ນໆຂອງ Arduino ຊົ່ວຄາວ

Arduino ມີ ໜ້າ ທີ່ອື່ນໆທີ່ກ່ຽວຂ້ອງກັບເວລາເພື່ອໃຫ້ທ່ານໃຊ້ໃນລະຫັດຂອງທ່ານ. ນຶ່ງໃນນັ້ນກໍ່ແມ່ນ ການຊັກຊ້າທີ່ມີຊື່ສຽງ (), ແຕ່ຍັງມີອີກຫຼາຍຢ່າງ:

  • ຊັກຊ້າ (): ມັນແມ່ນສິ່ງທີ່ໃຊ້ແລະເປັນ ທຳ ມະດາຂອງ ໜ້າ ທີ່ທັງ ໝົດ ຂອງ Arduino. ມັນຍັງໃຊ້ milliseconds ເປັນ millis (). ແລະມັນຍັງຈະມີປະເພດທີ່ບໍ່ໄດ້ລົງນາມເປັນເວລາດົນນານ, ເຊັ່ນດຽວກັນກັບບໍ່ມີຄຸນຄ່າກັບຄືນມາອີກ. ມັນຖືກ ນຳ ໃຊ້ເປັນສ່ວນໃຫຍ່ເພື່ອແນະ ນຳ ການຢຸດຊົ່ວຄາວໃນການປະຕິບັດໂປແກຼມ, ເຊິ່ງມີຫລາຍໂປແກມ.
  • delayMicroseconds (): ມັນໃຊ້ ໜ້ອຍ ໃນການແຕ້ມຮູບ, ໃນກໍລະນີນີ້ມັນຍັງບໍ່ໄດ້ລົງນາມຍາວ, ບໍ່ມີມູນຄ່າກັບຄືນ, ແລະໃນກໍລະນີນີ້ມັນໃຊ້ microseconds. ໃນປະຈຸບັນ, ມູນຄ່າສູງສຸດສາມາດບັນລຸໄດ້ດ້ວຍຄວາມແມ່ນຍໍາ 16383, ແລະຕ່ ຳ ສຸດ3μs. ຖ້າທ່ານຕ້ອງຈັດການກັບລໍຖ້າດົນກວ່ານັ້ນ, ແນະ ນຳ ໃຫ້ໃຊ້ຄວາມຊັກຊ້າ ().
  • micros (): ຍັງສົ່ງຄືນມູນຄ່າຕົວເລກໃນ microseconds ()s) ນັບຕັ້ງແຕ່ຄະນະ Arduino ເລີ່ມປະຕິບັດໂຄງການ. ນັ້ນແມ່ນ, ມັນຄ້າຍຄືກັບ millis (), ແຕ່ວ່າມີອີກ ໜ່ວຍ ໜຶ່ງ. ໃນຄວາມເປັນຈິງ, ມັນຍັງໃຊ້ປະເພດຍາວທີ່ບໍ່ໄດ້ລົງນາມແລະບໍ່ໃຊ້ຕົວ ກຳ ນົດເຊັ່ນກັນ. ແຕ່ມັນມີຄວາມແຕກຕ່າງເພີ່ມເຕີມ, ເຊັ່ນວ່າມັນຕັ້ງແລະເລີ່ມຈາກສູນເມື່ອມັນຮອດ 70 ນາທີ. ກ່ຽວກັບການແກ້ໄຂບັນຫາ 4 μsຂອງມັນ, ຫຼືເວົ້າອີກຢ່າງ ໜຶ່ງ, ມູນຄ່າທີ່ມັນຈະກັບມາຈະມີຫລາຍໆຢ່າງຂອງສີ່ (4, 8, 12, 16, …). ຈົ່ງຈື່ໄວ້ວ່າ 1000 μsເທົ່າກັບ 1 ms ແລະ 1.000.000 ເທົ່າກັບ 1 s.

ຕົວຢ່າງ Millis () ໃນ Arduino IDE

ພາບ ໜ້າ ຈໍຂອງ Arduino IDE

ນີ້ແມ່ນ ຄຳ ເວົ້າທັງ ໝົດ, ແລະທັດສະນະທີ່ດີທີ່ສຸດຂອງການເຮັດວຽກຂອງ millis () ແມ່ນໂດຍການສະແດງບາງຕົວຢ່າງຂອງການແຕ້ມແບບງ່າຍໆໃນ Arduino IDE ເພື່ອໃຫ້ທ່ານສາມາດເຫັນບາງ ຄຳ ຮ້ອງສະ ໝັກ ແລະໃຊ້ກໍລະນີຕ່າງໆ. ດັ່ງນັ້ນນີ້ແມ່ນບາງຢ່າງ ຕົວຢ່າງພາກປະຕິບັດ...

ສາມາດໃຊ້ກັບ ກະດານ Arduino ທັງ ໝົດ

1- ຕົວຢ່າງ ສຳ ລັບ ອະທິບາຍການ ນຳ ໃຊ້ ຈາກ 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
}

ວັດແທກເວລາລະຫວ່າງສອງຂໍ້ຄວາມ:

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 ກະພິບໄຟ LED with 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
    }
}

ສ້າງກ sequencer ງ່າຍດາຍ ເພື່ອສົ່ງຂໍ້ຄວາມຜ່ານຈໍຕິດຕາມກວດກາໃນຊ່ວງເວລາທີ່ແຕກຕ່າງກັນໂດຍໃຊ້ 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 - ");
}

ທ່ານຮູ້ແລ້ວວ່າ ສຳ ລັບ ຂໍ້ມູນເພີ່ມເຕີມ ທ່ານສາມາດດາວໂຫລດໄດ້ ຫລັກສູດການຂຽນໂປຼແກຼມ Arduino ຟຣີໃນ PDF.


ເນື້ອໃນຂອງບົດຂຽນຍຶດ ໝັ້ນ ຫລັກການຂອງພວກເຮົາ ຈັນຍາບັນຂອງບັນນາທິການ. ເພື່ອລາຍງານການກົດຜິດພາດ ທີ່ນີ້.

ເປັນຄົນທໍາອິດທີ່ຈະໃຫ້ຄໍາເຫັນ

ອອກ ຄຳ ເຫັນຂອງທ່ານ

ທີ່ຢູ່ອີເມວຂອງທ່ານຈະບໍ່ໄດ້ຮັບການຈັດພີມມາ. ທົ່ງນາທີ່ກໍານົດໄວ້ແມ່ນຫມາຍດ້ວຍ *

*

*

  1. ຮັບຜິດຊອບຕໍ່ຂໍ້ມູນ: Miguel ÁngelGatón
  2. ຈຸດປະສົງຂອງຂໍ້ມູນ: ຄວບຄຸມ SPAM, ການຈັດການ ຄຳ ເຫັນ.
  3. ກົດ ໝາຍ: ການຍິນຍອມຂອງທ່ານ
  4. ການສື່ສານຂໍ້ມູນ: ຂໍ້ມູນຈະບໍ່ຖືກສື່ສານກັບພາກສ່ວນທີສາມຍົກເວັ້ນໂດຍພັນທະທາງກົດ ໝາຍ.
  5. ການເກັບຂໍ້ມູນ: ຖານຂໍ້ມູນທີ່ຈັດໂດຍ Occentus Networks (EU)
  6. ສິດ: ໃນທຸກເວລາທີ່ທ່ານສາມາດ ຈຳ ກັດ, ກູ້ຄືນແລະລຶບຂໍ້ມູນຂອງທ່ານ.