extern

De ArduWiki
Revisión del 17:28 24 oct 2019 de Kike GL (Discusión | contribuciones) (Advertencias)

Saltar a: navegación, buscar

Descripción

Palabra clave conocida como calificadora. Se usa antes del tipo de datos de una variable, para modificar la manera en que el compilador y el boceto deben tratar dicha variable.

La declaración de una variable extern es una directiva del compilador. El compilador es un software que traduce el código Arduino en el código de máquina, que son las instrucciones reales para el chip ATmel en el Arduino.

Nota: Una variable debe ser declarada extern cada vez que no es definida en el mismo boceto a fin de que el compiladr no arrroje el error variable no encontrada.


Sintaxis

extern tipo variable [= valor];
extern variable [= Pvalor];

Parámetros

tipo
define el tipo de variable. char, byte, int, long, float, etc
Subfijos
Tipo Subfijo Ejemplo
int ninguno 123
unsigned int U 123U
long L 123L
unsigned long UL 123UL
float F 1.23F
variable
nombre de la variable.
valor
valor a almacenar en el rango del tipo de dato.
Pvalor
valor a almacenar en el rango del tipo de dato con prefijo de formateo.
Prefijos
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

  • Cuando declaras una variable en un archivo .cpp para que esta sea accesible desde el archivo .ino
#include archivo.h
void setup(){
   Serial.begin(9600);
   Serial.print(variable);
}
void loop(){
   //Nada
}

Ejemplo 1

extern n = 123      //int
extern n = 123U     //unsigned int
extern n = 123L     //long
extern n = 123UL    //unsigned long
extern n = 1.23F    //float
extern byte n = 123;
extern byte n = B1110011;
extern byte n = 0173;
extern byte n = 0x7B;

Ejemplo 2

Conmuta el LED a bordo cuando se pulsa botón. Conectar pulsador entre pin 7 y GND.

volatile bool estado = LOW;

void setup(){
   pinMode(LED_BUILTIN, OUTPUT);
   pinMode(7, INPUT_PULLUP);
   attachInterrupt(0, cambia, CHANGE);
}
void cambia(){
   estado = !estado;
}
void loop(){
   digitalWrite(LED_BUILTIN, estado);
}

Vea también

Referencias externas