Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Documents - Tips Arduino-Variabls PDF
Documents - Tips Arduino-Variabls PDF
CONTENIDOS
INTRODUCCION A ARDUINO
QUE ES UN ARDUINO
¿QUÉ QUIERE DECIR QUE ARDUINO SEA “SOFTWARE Y HARDWARE LIBRE”?
PLATAFORMAS DE ARDUINO
LENGUAJE ARDUINO
IDE O SKETCH
IDE’S ALTERNATIVOS
TIPOS DE VARIABLES
LIBRERIAS
ESTRUCTURA GENERAL DE UN SKETCH
EJEMPLOS NIVEL BASICOS
EJEMPLOS NIVEL USUARIO
EJEMPLO NIVEL AVANZADO
ROBOTICA UBB - HARDWARE LIBRE: ARDUINO
Declaracion de
variables
Estructura General
Estructura de codigo
Tipos de variables
Comunicacion
Serie a la placa
Gestion de tiempo
Recibir datos
desde el exterior
Selectivos
Bloques
Repetitivos
https://123d.circuits.io/circuits/957588-the-unnamed-circuit#breadboard
Declaración de variables.
2
ROBOTICA UBB - HARDWARE LIBRE: ARDUINO
TIPOS DE VARIABLES
Variables generales
El tipo “boolean”: las variables de este tipo solo pueden tener dos
valores: cierto o falso. Se utilizan para almacenar un estado de entre
esos dos posibles, y así hacer que el skech reaccione según detecte en
ellas uno u otro. Una variable booleana con un valor cualquiera
diferente de 0 ya se interpreta que tiene un valor cierto.
3
ROBOTICA UBB - HARDWARE LIBRE: ARDUINO
El tipo “byte”: el valor que puede tener una variable de este tipo es siempre un número ENTERO entre 0 y 255.
Al igual que las variables de tipo “char”, las de tipo “byte” utilizan un byte (8 bits) para almacenar su valor y, por
tanto, tienen el mismo número de combinaciones numéricas posibles diferentes (256), pero a diferencia de
aquellas, los valores de una variable “byte” no pueden ser negativos.
El tipo “int”: el valor que puede tener una variable de este tipo
es un número entero entre -32768 (-215) y 32767 (215-1),
gracias a que utilizan 2 bytes (16 bits) de memoria para
almacenarse. Esto es así para todas las placas Arduino excepto
para la Due.
Variables de tiempo
Millis(): devuelve el número de milisegundos (ms) desde que la placa Arduino empezó a ejecutar el sketch actual.
Este número se reseteará a cero aproximadamente después de 50 días (cuando su valor supere el máximo
permitido por su tipo, que es “unsigned long”). No tiene parámetros.
Micros(): devuelve el número de microsegundos (μs) desde que la placa Arduino empezó a ejecutar el sketch
actual. Este número –de tipo “unsignedlong”– se reseteará a cero aproximadamente después de 70 minutos.
Esta instrucción tiene una resolución de 4 μs (es decir, que el valor retornado es siempre un múltiplo de cuatro).
Recordar que 1000 μs es un milisegundo y por tanto, 1000000 μs es un segundo. No tiene parámetros.
Delay(): pausa el sketch durante la cantidad de milisegundos especificados como parámetro.
DelayMicroseconds(): pausa el sketch durante la cantidad de microsegundos especificados como parámetro –de
tipo “unsigned long”– . Actualmente el máximo valor que se puede utilizar con precisión es de 16383. Para
esperas mayores que esta, se recomienda usar la instrucción delay(). El mínimo valor que se puede utilizar con
precisión es de 3 μs. No tiene valor de retorno.
4
ROBOTICA UBB - HARDWARE LIBRE: ARDUINO
Variables Selectivas
If: Un bloque “if” sirve para comprobar si una
condición determinada es cierta (”true”,1) o falsa
(”false”,0). Si la condición es cierta, se ejecutarán
las instrucciones escritas en su interior (es decir,
dentro de las llaves de apertura y cierre). Si no se
cumple, puede no pasar nada, o bien, si existe
tras el bloque “if” un bloque “else” (opcional), se
ejecutarán las instrucciones escritas en el interior
de ese bloque “else”.
Es decir, si solo escribimos el bloque “if”, el
sketch tendrá respuesta solamente para cuando
sí se cumple la condición; pero si además
escribimos un bloque “else”, el sketch tendrá
respuesta para cuando sí se cumple la condición y
para cuando no se cumple también. En general, la
sintaxis del bloque “if/else”.
Es posible anidar bloques “if” uno dentro de otro
sin ningún límite (es decir, se pueden poner más
bloques “if” dentro de otro bloque “if” o “else”, si
así lo necesitamos).
Switch case: Es la opción ideal cuando tenemos que elegir entre un número más o menos elevado de
opciones. De algún modo es como el panel de botones en un ascensor dentro de unos grandes almacenes (si
pulsas 1 vas a la planta deportes, 2 a la de moda, 3 a la de electrodomésticos, etc…).
5
ROBOTICA UBB - HARDWARE LIBRE: ARDUINO
Variables repetitivas
El bloque “while”: El bloque “while” (“mientras”, en inglés) es un
bloque que implementa un bucle; es decir, repite la ejecución de las
instrucciones que están dentro de sus llaves de apertura y cierre.
¿Cuántas veces? No hay un número fijo: se repetirán mientras la
condición especificada entre sus paréntesis sea cierta (“true”,1).
Si se llega por primera vez a una sentencia “while” y la condición resulta
falsa directamente, no se ejecutarán las sentencias interiores ninguna
vez. Este detalle es importante tenerlo en cuenta.
Las sentencias interiores a un bucle “while” pueden ser tantas como se
quieran y de cualquier tipo, incluyendo, por supuesto, nuevos bucles
“while”.
El bloque “for” La
diferencia entre un bucle
“while” (o “do”) y un bucle
“for” está en que en el
primero el número de
iteraciones realizadas
depende del estado de la
condición definida, pero en
un bucle “for” el número de
iteraciones se puede fijar a
un valor exacto. Por tanto,
usaremos el bucle “for” para
ejecutar un conjunto de
instrucciones (escritas
dentro de llaves de apertura
y cierre) un número
concreto de veces. Tiene un inicio y final.
6
ROBOTICA UBB - HARDWARE LIBRE: ARDUINO
COMUNICACION
Serial.begin(): Abre el canal serie para que pueda empezar la comunicación por él. Por ello, su ejecución es
imprescindible antes de realizar la cualquier transmisión, y se suele escribir dentro de la sección “void setup()”.
Su único parámetro especifica la velocidad en bits/s a la que se producirá la transferencia serie de los datos.
Para la comunicación con un computador, se suele utilizar el valor de 9600.
Serial.end(): No tiene ningún argumento ni devuelve nada, y se encarga de cerrar el canal serie; de esta manera,
la comunicación serie se deshabilita y los pines RX y TX vuelven a estar disponibles para la entrada/salida general.
Para reabrir el canal serie otra vez, se debería usar de nuevo serial.begin().
Las siguientes instrucciones serial corresponden a conjuntos de instrucciones que permiten enviar datos desde
el microcontrolador hacia el exterior.
7
ROBOTICA UBB - HARDWARE LIBRE: ARDUINO
Serial.peek(): devuelve el primer byte aún no leído de los que estén almacenados en el buffer de entrada. No
obstante, a diferencia de Serial.read(), ese byte leído no se borra del buffer, con lo que las próximas veces que
se ejecute Serial.peek() se volverá a leer el mismo byte. Si no hay bytes disponibles para leer, Serial.peek()
devolverá -1. Esta instrucción no tiene parámetros.