unsigned long
De ArduWiki
Contenido
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.
Base | Subfijo | Ejemplo |
---|---|---|
unsigned int | U | n = 123U |
long | L | n = 123L |
unsigned long | UL | n = 123UL |
float | F | n =12.3F |
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 08.
- 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));
}
}