unsigned long

De Arduino
Saltar a: navegación, buscar

Descripción

Es como el tipo de dato long para almacenar 4 byte (32 bits), pero sin signo es decir no almacena números negativos, teniendo un rango desde 0 a 4,294,967,295 (2^32-1). Alternativamente puede verse declarado como tipo uint32_t, sin embargo funciona exactamente igual.

Nota: Tenga cuidado al hacer operaciones con numeros enteros ya que si no lo especificas explisitamente, Arduino asume que quieres trabajar con int. Ver Ejemplo 1.


Sintaxis

unsigned long variable [= valor];
uit32_t variable [= valor];
variable = valorUL;

Parámetros

variable
El nombre de variable a definir.
valor
Valor que asignamos a la variable en el rango entre 0~4,294,967,295. Parámetro opcional.
valorUL
Forzar con subfijo UL. Puedes omitir la palabra unsigned long antes del nombre de la variable.
uit32_t
sinonimo de unsigned long.
Posibles formateadores
Base Subfijo Ejemplo
unsigned int U n = 123U
long L n = 123L
unsigned long UL n = 123UL
float F n =12.3F


Posibles formateadores
Base Prefijo Comentario Ejemplo
DEC ninguno Dígitos 0~9 123
HEX 0x dígitos 0~9 + Caracteres A~F 0x7B
OCT 0 digitos 0~7 0173
BIN B 0 o 1 B1110011

Advertencias

  • Si sumas 1 al valor maximo que de 4,294,967,295 pasa a 0.
  • Si restas 1 al valor minimo que de 0 pasa a 4,294,967,295.

Ejemplo 1

Los números 60 y 24 son interpretados como int por Arduino que soporta maximo de 32,767 de modo que 86,400 no entra.

unsigned long segundos = 60 * 60 * 24;  //Error
unsigned long segundos = 60UL * 60 * 24;   //Ok

Ejemplo 2

Hacer parpadear el LED a bordo sin usar delay().

unsigned long hora=0;
void setup(){
   pinMode(LED_BUITIN, OUTPUT);
}
void loop(){
   if (millis() - hora > 500){
      hora = millis();
      digitalWrite(LED_BUITIN, !digitalRead(LED_BUITIN));
   }
}

Vea también

Referencias