arduino variabls

8
INTRODUCCION A ARDUINO QUE ES UN ARDUINO ¿QUÉ QUIERE DECIR QUE ARDUINO SEA “SOFTWARE Y HARDWARE LIBRE”? PLATAFORMAS DE ARDUINO HARDWARE DE ARDUINO UNO CARACTERÍSTICAS DE LA MICRO PLACA MODELO DEL MICROCONTROLADOR FUNCIONAMIENTO DE PINES SHIELD ARDUINOS HARDWARE ANEXO (MODULOS, SENSORES Y ACTUADORES) SOFTWARE ARDUINO UNO INTALACION DE SOFTWARE (Cualquier Sistema Linux, Window , Mac OS x) FUNCIONES DEL SOFTWARE 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 CONTENIDOS CONTENIDOS HARDWARE LIBRE

Upload: carolina-ojeda

Post on 12-Dec-2015

217 views

Category:

Documents


3 download

DESCRIPTION

Variables de arduino

TRANSCRIPT

Page 1: Arduino Variabls

INTRODUCCION A ARDUINO

QUE ES UN ARDUINO

¿QUÉ QUIERE DECIR QUE ARDUINO SEA “SOFTWARE Y HARDWARE LIBRE”?

PLATAFORMAS DE ARDUINO

HARDWARE DE ARDUINO UNO

CARACTERÍSTICAS DE LA MICRO PLACA

MODELO DEL MICROCONTROLADOR

FUNCIONAMIENTO DE PINES

SHIELD ARDUINOS

HARDWARE ANEXO (MODULOS, SENSORES Y ACTUADORES)

SOFTWARE ARDUINO UNO

INTALACION DE SOFTWARE (Cualquier Sistema Linux, Window , Mac OS x)

FUNCIONES DEL SOFTWARE 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

CONTENIDOS

CO

NT

EN

IDO

S H

AR

DW

AR

E L

IBR

E

Page 2: Arduino Variabls

- HARDWARE LIBRE: ARDUINO

2

ROBOTICA UBB

Contenidos en Lenguaje Arduino

https://123d.circuits.io/circuits/957588-the-unnamed-circuit#breadboard

ESCRITURA GENERAL DE UN SKETCH

Declaración de variables.

Lenguaje

Estructura General

Declaracion de variables

Estructura de codigo

Tipos de variables

Comunicacion

Comunicacion Serie a la placa

Enviar datos desde la placa

Recibir datos desde el exterior

Gestion de tiempo

Bloques

Selectivos

Repetitivos

Page 3: Arduino Variabls

- HARDWARE LIBRE: ARDUINO

3

ROBOTICA UBB

Declaración global se ha de declarar al principio de nuestro sketch; es decir, antes (y fuera) de las secciones “void setup()” y “void loop()”. Declaración local se ha de declarar en el interior de alguna de las secciones de nuestro sketch (es decir, dentro de “void setup()” o de

“void loop()” o de otras que puedan existir).

Para declarar: tipovariable nombrevariable;

Para inicializar una VAR: tipoVar nombreVar=555;

Void Setup: Pre configuraciones, ejecuta una instrucción Void loop: Se realiza la ejecución continua y repetida infinitas veces hasta que se apague la placa

Estructura y sintaxis del Código - Empezar con mayúsculas cada instruccion

- No es necesario tabular

- Acabar con ;

- Comentarios /* o //

- Llamar o leer variables con ()

- Designar ecuaciones con signo =

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.

El tipo “char”: el valor que puede tener una variable de este tipo es siempre un solo carácter (una letra, un dígito, un signo de puntuación...). Los dispositivos electrónicos son incapaces de trabajar con “letras” directamente: las han de “traducir” siempre primero a números para entonces poderlas almacenar y procesar. Para saber a qué número interno corresponde un determinado carácter, y viceversa, la placa Arduino utiliza la llamada tabla ASCII, la cual es una simple lista de equivalencias que asocia cada carácter con un número determinado.

Page 4: Arduino Variabls

- HARDWARE LIBRE: ARDUINO

4

ROBOTICA UBB

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.

El tipo “word”: Se puede tener una variable “word” en todas las placas excepto la Arduino Due es un número entero entre 0 y 65535 (216-1). El tipo “float”: el valor que puede tener una variable de este tipo es un NÚMERO DECIMAL. Los valores “float” posibles pueden ir desde el número -3,4028235·1038 hasta el número 3,4028235·1038. Debido a su grandísimo rango de valores posibles, los números decimales son usados frecuentemente para aproximar valores analógicos continuos. No obstante, solo tienen 6 o 7 dígitos en total de precisión. Es decir, los valores “float” no son exactos, y pueden producir resultados inesperados, como por ejemplo que, 6.0/3.0 no dé exactamente 2.0.

El tipo “array”: Un ‘array’ es una colección indexada (como un diccionario) de variables del mismo tipo. En el caso de un array el índice es simplemente un número (que corresponde al número de orden de la variable concreta dentro del array).

Constantes: Es posible declarar una variable de tal forma que consigamos que su valor (Del tipo que sea) permanezca siempre inalterado. Const int mivariable; o #mivariable;

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.

Page 5: Arduino Variabls

- HARDWARE LIBRE: ARDUINO

5

ROBOTICA UBB

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…).

El “break” al final de cada bloque de instrucciones dentro de cada “case” es opcional. De no ponerlo, tras haber ejecutado ese bloque se seguirían analizando los demás casos hasta el final. Por tanto, es conveniente incluir la instrucción “break” al final de cada bloque si queremos impedir que el sketch se siga ejecutando dentro del “switch” (esto hará nuestro sketch más eficiente).La instrucción “default” es también opcional. Se utiliza cuando queremos que se realicen una serie de acciones concretas en caso de que ninguno de los casos anteriores haya sido activado.

Page 6: Arduino Variabls

- HARDWARE LIBRE: ARDUINO

6

ROBOTICA UBB

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 “do while”: El bucle “do” funciona exactamente igual que el bucle “while”, con la excepción de que la condición es evaluada después de ejecutar las instrucciones escritas dentro de las llaves. Esto hace que las instrucciones siempre sean ejecutadas como mínimo una vez aun cuando la condición sea falsa, porque antes de llegar a comprobar esta, las instrucciones ya han sido leídas (a diferencia del bucle “while”, donde si la condición ya de entrada era falsa las instrucciones no se ejecutaban nunca)

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.

Page 7: Arduino Variabls

- HARDWARE LIBRE: ARDUINO

7

ROBOTICA UBB

COMUNICACION

Comunicación Serie a la placa La placa Arduino se puede conectar a otros dispositivos mediante una conexión serie para poder transferir datos entre sí. Esta conexión se pude hacer de dos formas: usando el cable USB, o mediante los pines digitales 0 (RX) y 1 (TX). Para la conexión al PC usaremos simplemente el cable USB, mientras que los pines TX/RX los guardaremos para usarlos como entrada/salida o para comunicarse con otro dispositivo según se requiera. Dentro de nuestros sketches podemos hacer uso de este receptor/transmisor para enviar datos al microcontrolador (o recibirlos de él) gracias al elemento del lenguaje Arduino llamado “Serial”. Serial es un “objeto”, o en otras palabras, un contenedor de instrucciones con alguna relación entre ellas. A continuación, es explica la sintaxis y funcionamiento de las instrucciones incluidas en el objeto Serial:

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.

Comunicación desde la placa al exterior

Serial.print(): Envía a través del canal serie un dato desde el microcontrolador hacia el exterior. Ese dato puede ser de cualquier tipo: carácter, cadena, número entero, número decimal (por defecto de dos decimales), etc. Si el dato se especifica explícitamente (en vez de a través de una variable), hay que recordar que los caracteres se han de escribir entre comillas simples y las cadenas entre comillas dobles. La transmisión realizada por Serial.print() es asíncrona. Eso significa que el sketch pasará a la siguiente instrucción y seguirá ejecutándose sin esperar a que empiece a realizarse el envío de los datos. Si se desea que la transmisión se complete antes de continuarse ejecutando el sketch, se puede añadir justo después de Serial.print() la instrucción Serial.flush(), que no tiene ningún parámetro ni devuelve ningún valor de retorno.

Serial.println(): Hace exactamente lo mismo que Serial.print(), pero se efectúa un salto de línea al finalizar su ejecución.

Serial.write(): envía un dato desde el microcontrolador al exterior , este solo puede ocupar un byte esdecir la variable ha de ser “char” o “byte”.

Comunicación para recibir datos desde el exterior

Serial.available(): Devuelve el número de bytes –caracteres– disponibles para ser leídos que provienen del exterior a través del canal serie (vía USB o vía pines TX/RX). Estos bytes ya han llegado al microcontrolador y permanecen almacenados temporalmente en una pequeña memoria de 64 llamada “buffer” bytes hasta ser procesados por la instrucción Serial.read().Si no hay bytes para leer, esta instrucción devolverá 0. No tiene parámetros.

Serial.read(): Devuelve el primer byte aún no leído de los que estén almacenados en el buffer de entrada. Al hacerlo, lo elimina de ese buffer. Para devolver (leer) el siguiente byte, se ha de volver a ejecutar Serial.read(). Y hacer así hasta que se hayan leído todos. Cuando no haya más bytes disponibles, Serial.read() devolverá -1. No tiene parámetros.

Page 8: Arduino Variabls

- HARDWARE LIBRE: ARDUINO

8

ROBOTICA UBB

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.