Diferencia entre revisiones de «millis()»
De ArduWiki
(→Advertencias) |
|||
Línea 14: | Línea 14: | ||
== Advertencias == | == Advertencias == | ||
− | Tenga en cuenta el tipo de valor que retorno millis() es [[unsigned long]] y pueden producirse errores lógicos si hacer operaciones aritméticas con otros tipos de datos más pequeños como: [[byte]] o [[int]], incluso los [[long]] con signo pueden producir errores de calculo. | + | * Tenga en cuenta el tipo de valor que retorno '''millis()''' es [[unsigned long]] y pueden producirse errores lógicos si hacer operaciones aritméticas con otros tipos de datos más pequeños como: [[byte]] o [[int]], incluso los [[long]] con signo pueden producir errores de calculo. |
− | millis() funciona mediante una interrupción (la misma de [[micros()]]); por lo tanto, su valor dejará de incrementar durante una rutina de servicio de interrupción (ej.: posterior a [[attachInterrupt()]]), o mientras no se llame a [[interrupts()]] después de llamar a [[noInterrupts()]]. | + | * '''millis()''' funciona mediante una interrupción (la misma de [[micros()]]); por lo tanto, su valor dejará de incrementar durante una rutina de servicio de interrupción (ej.: posterior a [[attachInterrupt()]]), o mientras no se llame a [[interrupts()]] después de llamar a [[noInterrupts()]]. |
== Ejemplo == | == Ejemplo == |
Revisión del 15:07 23 jun 2018
Contenido
Descripción
Devuelve el número de milisegundos desde que la placa Arduino empezó a ejecutar el programa actual. Este número se desbordará (volverá a cero), después de aproximadamente 50 días.
Sintaxis
millis();
Parámetros
Nada.
Retornos
Número de milisegundos desde que el programa se inició. Numero tipo unsigned long.
Advertencias
- Tenga en cuenta el tipo de valor que retorno millis() es unsigned long y pueden producirse errores lógicos si hacer operaciones aritméticas con otros tipos de datos más pequeños como: byte o int, incluso los long con signo pueden producir errores de calculo.
- millis() funciona mediante una interrupción (la misma de micros()); por lo tanto, su valor dejará de incrementar durante una rutina de servicio de interrupción (ej.: posterior a attachInterrupt()), o mientras no se llame a interrupts() después de llamar a noInterrupts().
Ejemplo
unsigned long hora=0; //Es muy importante respetar el tipo de dato void setup() { pinMode(13, OUTPUT); } void loop() { if (milis() - hora >= 500){ hora = millis(); //Guarda a hora de cada cambio digitalWrite(13, !digitalRead(13)); //Invierte valor del pin } }