GLOSARIO TÉRMINOS

A continuación resumo todos los términos relevantes que vamos a utilizar durante todo el curso y que necesitas conocer para llevar a cabo el aprendizaje.

Código fuente

Es el conjunto de líneas de texto que forman un programa. Las líneas de texto indican cómo se debe ejecutar dicho programa y lo que tiene que hacer. El código fuente se escribe en un lenguaje específico de programación que tiene que ser traducido al lenguaje que entiende el ordenador.

Sentencia

Una sentencia es cada una de las líneas del código fuente.

Lenguaje de programación

Lenguaje formal utilizado por los ingenieros de software para escribir programas. Mediante el lenguaje de programación se indican todas las sentencias que debe de ejecutar el programa.

Compilar

Proceso de traducir el código fuente al lenguaje que entiende el ordenador.

Lenguaje máquina

Lenguaje que entiende el ordenador y al que es compilado el código fuente.

Bucle

Sentencia específica que se repite durante un tiempo. El número de repeticiones puede ir en función de diversos factores, pero están indicados en la propia sentencia en la que se define el bucle.

Constante

Una constante es un valor que no cambia en toda la ejecución del programa. Para crear constantes en el código fuente se utilizan sentencias específicas.

Variable

Una variable es un valor que cambia durante la ejecución del programa. Para crear variables en el código fuente se utilizan sentencias específicas.

Librería

Conjunto de funcionalidades que se incluyen en los programas y que no son desarrolladas en él ya que pertenecen a otras aplicaciones.

Interfaz

Elemento software que sirve para comunicar dos elementos entre sí mediante el conjunto de operaciones que define.

Pin

Cada una de las entradas o salidas que tiene la placa de Arduino. Un pin puede configurarse como entrada o como salida y es donde conectaremos los componentes para interactuar con ellos. La placa de Arduino tiene diferentes tipos de pines: digitales, analógicos, etc.

Salida

Proceso de enviar datos desde la placa de Arduino a los componentes del circuito electrónico.

Entrada

Proceso de recibir datos desde los componentes del circuito electrónico a la placa de Arduino.

Prototipo

Es el resultado de realizar un proceso de prototipado. El proceso consiste en la construcción rápida del objetivo a conseguir sin tener un conocimiento profundo de todas las fases del proceso gracias a la utilización de técnicas y herramientas que lo permiten.

Hardware

Conjunto de elementos físicos o materiales que constituyen un ordenador o un sistema informático.

Software

Conjunto de programas y procesos que permiten al ordenador la realización de determinadas tareas.

CPU

Conjunto de elementos hardware de un ordenador que interpretan las instrucciones de un programa informático mediante la realización de las operaciones básicas aritméticas, lógicas y de entrada/ salida del sistema.

Procesador

Elemento de la CPU que interpreta las instrucciones y procesa los datos de los programas.

Circuito

Conjunto de componentes que forman una red eléctrica cerrada.

Circuito Integrado

Estructura de pequeñas dimensiones sobre la que se fabrican circuitos electrónicos y que contiene todos los elementos que componen el circuito.

Microprocesador

Procesador de muy pequeñas dimensiones en el que todos los elementos de la CPU están agrupados en un solo circuito integrado.

¿QUÉ ES LA ROBÓTICA?

La Robótica se entiende como la ciencia y la técnica que estudia el diseño y la construcción de robots. Además, se centra en la utilización de los mismos para desempeñar tareas de manera automática o realizar trabajos difíciles o imposibles para los seres humanos. Un robot es una máquina programable capaz de interactuar con el entorno que le rodea, moverse, mostrar comportamiento inteligente, sentir el entorno, etc. Uno de los aspectos más importantes de la Robótica es que aúna en una misma ciencia a diferentes ciencias, como son la informática, la electrónica, la ingeniería y la mecánica.

La Robótica es una de las ciencias con mayor auge y que más está avanzando, por ejemplo, se está empezando a utilizar en campos como la medicina para realizar operaciones de dificultad alta, la industria del automóvil, etc.

¿Qué es Arduino?

Arduino es una plataforma de código abierto de prototipos electrónicos que se basa en hardware y software flexibles y fáciles de usar que ponen al alcance de cualquier persona la construcción de circuitos electrónicos/ robots. En lo referente a hardware, se basa en placas que se pueden ensamblar a mano o que se pueden comprar directamente preensambladas. Cada una de las placas lleva un microcontrolador en el que se carga el programa software que es necesario desarrollar para “darle vida” a la placa. En la siguiente imagen puedes ver la Placa Arduino Uno R3 con sus partes más importantes señaladas que serán descritas en el apartado siguiente:

Componentes placa de Arduino

Pines digitales

Los pines digitales son las conexiones digitales de los dispositivos conectados en la placa. La placa de Arduino cuenta con 14 pines digitales, que van del 0 al 13.

Una señal digital solo puede tener dos estados:

Por lo tanto, cuando ponemos un pin digital a valor HIGH, la placa suministra 5V de tensión por la salida que hayamos indicado, y si ponemos el valor a LOW suministrará 0V de tensión.

 (Ojo: Hay que tener en cuenta que los 5V no siempre son 5 ni los 0 siempre son 0)

Los pines digitales de Arduino pueden ser usados tanto de entrada como de salida.

Pines analógicos

Los pines analógicos pueden medir un rango de valores de voltaje, a diferencia de los digitales que solo entienden dos valores: 0-1, o lo que es lo mismo, 0V o 5V.

Con los pines analógicos vamos a poder leer valores intermedios entre 0V y 5V, representados con un valor entero comprendido entre 0 y 1023, ya que la información se representa en números de 10 bits, y también vamos a poder escribir en los pines valores comprendidos entre 0 y 255, ya que la información se representa en números de 8 bits.

En el punto anterior hemos hablado sobre pines digitales, si te fijas en ellos verás que aparecen algunos con el símbolo “~” en la placa, este símbolo indica que pueden ser utilizados también como pines analógicos.

Pines alimentación sensores

Además de los pines de entrada y salida descritos anteriormente, Arduino dispone de pines que nos permiten alimentar componentes externos, concretamente uno con 5V y otro con 3,3V.

También dispone de pines de tierra (GND).

Microcontrolador de comunicaciones

El microcontrolador de comunicaciones se encarga de gestionar las comunicaciones con todo lo que se conecta a la placa.

Microcontrolador de programación

Este componente de la placa es el cerebro de la misma, es donde la placa almacena el programa que tiene que ejecutar y el que lo ejecuta. El microcontrolador de la placa se programa utilizando el IDE (Entorno de Desarrollo Integrado) de programación gratuito de Arduino. En los apartados siguientes explicamos cómo instalarlo y como ponerlo a funcionar.

Botón reset

 El botón Reset permite reiniciar el programa que se ha cargado en el microcontrolador interrumpiendo la ejecución actual. Ten en cuenta que no borra el programa que se ha cargado, únicamente lo reinicia.

Puerto USB

El puerto USB es el puerto mediante el cual nos comunicaremos con la placa de Arduino. Sus funciones principales son:

Conector de Alimentación

Arduino dispone de un puerto de alimentación externo que nos permitirá hacer funcionar la placa sin utilizar un ordenador. Tienes que tener en cuenta el no alimentar la placa con mas voltaje del que soporta, ya que podrías dañarla. Lo recomendado es alimentarla entre 7V y 12V.

Lo recomendado es alimentarla entre 7V y 12V.

¿Arduino y Robótica?

 Arduino es considerado una de las bases sobre las que empezar a trabajar en temas relacionados con robótica, ya que, por su simplicidad, permite adquirir conocimientos básicos para dar el paso posteriormente a tecnologías más complejas y completas.

Ventajas

Existen multitud de microcontroladores y plataformas en el mercado, pero ninguna de ellas ha conseguido tener tanto éxito como ha tenido Arduino, y eso es debido a que presenta una notable cantidad de ventajas respecto a sus competidores:

ENTORNO DE DESARROLLO

Arduino tiene un entorno de desarrollo propio que te permite cargar en la placa los programas que escribes. Existen dos formas diferentes de utilizar el entorno de desarrollo, el primero es utilizarlo en un navegador web y el segundo es instalártelo en el ordenador. Para instalarlo entra en https:// www.arduino.cc, y después entra en el menú Software:

También puedes entrar directamente en https:// www.arduino.cc/ en/ Main/ Software. En esta página web podrás acceder a cualquiera de las dos formas disponibles del entorno de desarrollo.

A continuación, te explicaré como puedes acceder a cada uno de ellos. Dejo a tu elección el entorno a usar, ya que ambos tipos ofrecen las mismas posibilidades.

Entorno web

Para utilizar el entorno de desarrollo web tienes que registrarte previamente, por lo que, ése es el primer paso. Para ello tienes que entrar en “Try it now” y posteriormente en “Sign Up”, rellena toda la información que te piden y como último paso tienes que activar la cuenta mediante el email que te enviará al finalizar el proceso.

Arduino Web Una vez has acabado el proceso de registro tienes que entrar utilizando el login y la contraseña que has introducido durante el proceso de registro. Al entrar la primera vez tienes que aceptar las condiciones de uso.

Una vez aceptas las condiciones tienes que permitir que Arduino instale el plugin necesario para el sistema operativo que tienes.

Elige el sistema operativo que tienes y sigue las instrucciones de instalación, tendrás que aceptar las condiciones y proceder con la instalación. Una vez tengas el plugin instalado, podrás acceder a Arduino Create.

DESCARGA EL ENTORNO DE DESARROLLO PARA EL SISTEMA OPERATIVO

Selecciona la versión que quieres descargar y te llevará a la página de descarga, desde la que podrás hacer algún donativo para Arduino o directamente descargarlo:

Instalación de Arduino en Windows Para instalar la versión de Windows ejecuta el instalador descargado y acepta las condiciones que te muestra la primera pantalla del instalador:

Una vez aceptadas las condiciones tienes que indicarle qué componentes quieres instalar:

Tras seleccionar los componentes a instalar tienes que indicar la ruta donde quieres instalar el entorno de desarrollo:

El proceso de instalación empezará una vez selecciones la ruta, una vez acabe cierra el in  stalador y ya tendrás el entorno listo para empezar:

Una vez haya acabado, únicamente tienes que ejecutar la aplicación desde el acceso directo que se ha creado.

PANTALLA PRINCIPAL DEL ENTORNO DE DESARROLLO

La pantalla principal está compuesta por:

Menú principal

MENÚ ARCHIVO

Contiene todas las funciones típicas de este menú. Desde aquí puedes crear un proyecto nuevo, abrir proyectos existentes, acceder a los ejemplos predefinidos, guardar el proyecto actual, acceder al menú de configuración del ID para configurar elementos no relacionados con el desarrollo, compilado y ejecución de los programas de Arduino.

MENÚ PROGRAMA

Contiene operaciones y funcionalidades que se pueden llevar a cabo con el proyecto cargado en el ID: compilado y carga del programa a la placa, añadir librerías al entorno de programación…

MENÚ HERRAMIENTAS

Permite el acceso y configuración de elementos ajenos al entorno de desarrollo.

Los elementos más usados de este menú son:

Barra de acceso rápido

VERIFICAR

Mediante esta operación comprobamos si el código fuente escrito en el entorno de desarrollo no tiene fallos, es decir, comprueba si compila.

El resultado de la verificación del código se muestra en la consola de mensajes inferior.

SUBIR

Cargamos el código fuente compilado a la placa de Arduino. Una vez subido se ejecutará en la placa

NUEVO

Abre un proyecto nuevo

ABRIR

Con esta operación buscamos un proyecto Arduino en nuestro ordenador y lo abrimos en el entorno de desarrollo.

SALVAR

Guardamos el proyecto en la ruta que le indiquemos.

MONITOR SERIE

La operación “Monitor serie” abrirá la consola de intercambio de mensajes entre la placa y el ordenador a través del puerto de comunicaciones. Se utiliza para mostrar información en la pantalla del ordenador.

ESTRUCTURA BÁSICA DEL PROGRAMA

El programa Arduino está compuesto básicamente por dos secciones diferentes y obligatorias en las que se codifican  los diferentes componentes del programa.

void setup() {

}

void loop() {

}

COMPONENTES COMUNES EN TODOS LOS MONTAJES

PLACA ARDUINO

Pines de alimentation (Power Pins)

Bien alimentemos al arduino mediante la conexión USB o mediante una fuente externa (recomendada de 7-12V), vamos a tener unas salidas de tensión continua debido a unos reguladores de tensión y condensadores de estabilización. Estos pines son:

Digital Inputs/Outputs

Cada uno de los 14 pines digitales se puede utilizar como una entrada o salida. Cada pin puede proporcionar o recibir un máximo de 40 mA y tiene una resistencia de pull-up (desconectado por defecto) de 20 a 50 kOhm. Además, algunos pines tienen funciones especializadas como:

Analog Inputs

El Arduino posee 6 entradas analógicas, etiquetadas desde la A0 a A5, cada una de las cuales ofrecen 10 bits de resolución (es decir, 1024 estados). Por defecto, tenemos una tensión de 5V, pero podemos cambiar este rango utilizando el pin de AREF y utilizando la función analogReference(), donde le introducimos una señal externa de continua que la utilizara como referencia.

PROTOBOARD

El protoboard o breadbord: Es una especie de tablero con orificios, en la cual se pueden insertar componentes electrónicos y cables para armar circuitos. Como su nombre lo indica, esta tableta sirve para experimentar con circuitos electrónicos, con lo que se asegura el buen funcionamiento del mismo.

Se conocen en castellano como "placas de prototipos" y son esencialmente unas placas agujereadas con conexiones internas dispuestas en hileras, de modo que forman una matriz de taladros a los que podemos directamente "pinchar" componentes y formar el circuito deseado. Como el nombre indica, se trata de montar prototipos, de forma eventual, nunca permanente, por lo que probamos y volvemos a desmontar los componentes, quedando la protoboard lista para el próximo experimento.

ESTRUCTURA DEL PROTOBOARD

Básicamente un protoboard se divide en tres regiones:

protoboard

A) Canal central: Es la región localizada en el medio del protoboard, se utiliza para colocar los circuitos integrados.

B) Buses: Los buses se localizan en ambos extremos del protoboard, se representan por las líneas rojas (buses positivos o de voltaje) y azules (buses negativos o de tierra) y conducen de acuerdo a estas, no existe conexión física entre ellas. La fuente de poder se conecta aquí.

C) Pistas: La pistas se localizan en la parte central del protoboard, se representan y conducen según las líneas rosas.

Recomendaciones al utilizar el protoboard:

A continuación veremos una serie de consejos útiles pero no esenciales.

  1. Hacer las siguientes conexiones:

Photobucket

A) Esta conexión nos sirve para que ambos pares de buses conduzcan corriente al agregarles una fuente de poder, así es más fácil manipular los circuitos integrados.

B) Algunos protoboards tienen separada la parte media de los buses, es por eso que se realiza esta conexión para darle continuidad a la corriente. 

  1. Coloca los circuitos integrados en una sola dirección, de derecha a izquierda o viceversa.
  2. Evita el cableado aéreo, resulta confuso en circuitos complejos. Un cableado ordenado mejora la comprensión y portabilidad.

MANUAL DE USO DE PROTOBOARD

El protoboard es una tabla que permite interconectar componentes electrónicos sin necesidad de soldarlos. Así, se puede experimentar de manera fácil y ágil a través del rápido armado y desarmado de circuitos eléctricos. La lógica de operación del protoboard es muy sencilla, básicamente, ésta es una tabla con orificios los cuales están conectados entre si en un orden coherente. Un protoboard tiene el siguiente aspecto:

http://www.olfonz.com/wp-content/uploads/2012/11/bb_002.jpg

Si bien la figura muestra su aspecto en la práctica, el protoboard se puede ilustrar de la siguiente manera.

http://luznocturnaautomatica.wikispaces.com/file/view/2.png/342909076/2.png

En la figura se muestra una tabla con múltiples orificios los cuales se pueden ordenar, al igual que una matriz, en filas y columnas. En particular el esquema muestra un protoboard de 28 filas y 16 columnas. Las columnas han sido concentradas en los grupos A, B, C y D.

Cada fila del grupo A representa un nodo, al igual que cada fila del grupo B, es decir, si se conecta el terminal de algún elemento electrónico en el orificio (1,3), éste estará conectado directamente con el terminal de otro elemento electrónico que se conecta en el orificio (1,4). Además, cada columna del grupo C representa un nodo, al igual que cada columna del grupo D. Los largos de las columnas de los grupos C y D están divididos en dos mitades, desde la fila 1 a la 13, y desde la fila 16 a la 28, esto permite tener un mayor número de nodos.

Integrando lo recientemente explicado, los distintos nodos quedan distribuidos dentro del protoboard según muestra la figura:

http://3.bp.blogspot.com/-n0sk-io32JI/T0PioCbAqgI/AAAAAAAABHE/yx40DHzq_Js/s1600/protoboard2.PNG

En la figura se puede apreciar que el grupo A tiene 28 nodos, al igual que el grupo B.

Además, los grupos C y D tienen 4 nodos cada uno. El total de nodos de esta protoboard en particular es de 64 nodos. Por convención y comodidad, los grupos A y B se ocupan para interconexión de componentes en general, mientras que los nodos de los grupos C y D se utilizan para la alimentación de la tabla.

Ejemplos

  1. Divisor de corriente.

Se considera el siguiente divisor de corriente.

http://1.bp.blogspot.com/-zTBtEZmPbGA/T0PjU57ALXI/AAAAAAAABHM/dppX7CuJSb8/s1600/divisor-corriente.PNG

El circuito presenta sólo dos nodos. Esta configuración se puede conectar en la práctica de la siguiente forma.

http://2.bp.blogspot.com/-IVA6JHlsLxo/T0PjhFNvkTI/AAAAAAAABHU/slmOo7yTcao/s1600/divisor-corriente1.PNG

  1. Divisor de voltaje

Se considera el siguiente divisor de voltaje.

http://www.electronica.net63.net/imagenes/divisorvoltaje.JPG

El circuito presenta 3 nodos. Esta configuración se puede conectar en la práctica de la siguiente forma.

http://www.electronica.net63.net/imagenes/divisorvoltajeproto.JPG

CABLE USB

Lo usaremos para pasar el programa desde el ordenador a la placa Arduino.

CABLES

Usaremos cables macho-macho o macho-hembra en función de lo que necesitemos conectar en cada proyecto

Resultado de imagen de cables usados arduino macho machoResultado de imagen de cables usados arduino macho hembra

RESISTENCIAS

Las resistencias son unos dispositivos que se oponen al paso de la corriente eléctrica cuando pasa a través de ellas, por tanto, antes de una resistencia y después de ella habrá una diferencia de carga eléctrica siempre menor a la salida que a la entrada. De esta forma protegeremos a otros dispositivos de ser atravesados por una intensidad mayor a la que soportan y evitar así que sufra una sobrecarga.

Para determinar el valor de la resistencia necesaria para proteger un dispositivo necesitamos conocer la intensidad máxima (I en Amperios) que soporta y la tensión a la que va a estar sometido (V en Voltios).

Con estos valores y aplicando la ley de Ohm calculamos el valor de la resistencia en Ohmios (Ω)

R=V/IComo ejemplo calcularemos el valor de la Resistencia limitadora de la corriente para que un LED no sufra sobrecarga:

I max LED= 17 mA         V= 5V

R=V/I=5/0,017= 294 Ω

Puesto que las resistencias comerciales no tienen todos los valores, elegimos la que más se aproxime: 330Ω.

Para elegir e identificar físicamente las resistencia existe un código de colores de las líneas impresas en ellas:

Resultado de imagen de codigo colores resistencias

LED

LED ( Light Emitting Diode o diodo emisor de luz) es un dispositivo que emite luz cuando se encuentra en polarización directa, es decir, el ánodo (+) conectado al polo positivo de pila (rojo) y el cátodo (-) al negativo (negro).Resultado de imagen de diodo led

Resultado de imagen de diodo led

Los LEDs se utilizan mucho para realizar montajes electrónicos, ya que presentan una serie de ventajas:

Un LED se puede conectar tanto a un pin digital como a uno analógico.

LED RGB

Un LED RGB (red, Green, Blue) es un LED especial que contiene la unión de los tres colores luz primarios en un encapsulado común. En función de la tensión que reciba cada uno de ellos, el RGB emitirá un color u otro.

Podemos encontrar dos tipos de LED RGB:

En mi experiencia con Arduino me he dado cuenta de que suelen ser más habituales los LEDs RGB de ánodo común 

Resultado de imagen de led rgb catodo comun

Para identificar qué pin corresponde a cada color debemos tener en cuenta:

El valor de las variables R, G y B debe ser un entero entre 0 y 255 siendo 255 el valor relativo a la máxima luminosidad de cada color.

Debe tenerse en cuenta que hasta que no se supere el voltaje umbral de cada color este no se presentará en el LED RGB.

Síntesis aditiva de los tres colores luz primarios:

Resultado de imagen de mezcla colores luz

POTENCIÓMETRO

Un potenciómetro es una resistencia variable según modifiquemos su posición gracias a la rotación de un eje que se va desplazando interiormente sobre un material resistivo.

Existen muchos tipos en el mercado. A modo de ejemplo los siguientes: Resultado de imagen de potenciometro arduinoResultado de imagen de potenciometro arduino

Resultado de imagen de potenciometroResultado de imagen de potenciometro

Para conectar el potenciómetro a la placa Arduino debemos unir 1 a GND, la 3 a los 5 V y la central 2 a una entrada analógica, ya que los valores que vamos a introducir son variables.

ZUMBADOR

Un zumbador es un dispositivo fabricado con material piezoeléctrico, normalmente de cuarzo, que al ser sometido a una tensión eléctrica variable vibran produciendo un sonido.

Resultado de imagen de zumbador

La conexión es sencilla ya que no tienen polaridad, una pata a GND y la otra a una entrada digital o analógica por donde entrará la tensión.

SENSOR DE LUZ (LDR)

Un LDR (Light Dependent Resistor) es una resistencia variable con la cantidad de luz que incida sobre ella, de tal forma que al aumentar la cantidad de luz disminuye el valor de la resistencia y viceversa.

Resultado de imagen de ldr

Es un dispositivo que no tiene polaridad, por lo que las patillas pueden conectarse indistintamente.

SENSOR DE HUMEDAD Y TEMPERATURA (DHT11)

Un DHT11 (Digital Temperatura and Humidity sensor) es un dispositivo que nos va a permitir obtener información simultánea de la temperatura y humedad mediante un procesador interno que realiza dicho proceso de medición.

El sensor que vamos a usar DHT11, no es el mejor de todos, pero para realizar nuestros proyectos es más que suficiente. Si queremos afinar más en nuestras mediciones podríamos comprar un DHT22 más preciso.

Las características técnicas del DHT11 son las siguientes, teniendo en cuenta que el sensor va tomando valores ambientales cada segundo:

Resultado de imagen de DTH11

Para conectar el sensor a la placa Arduino nos fijaremos en la leyenda impresa en el dispositivo, conectamos las patillas exteriores a GND y Vcc y la central a una entrada digital, ya que el procesador DHT11 proporciona mediciones mediante señales digitales.

SENSOR DE PRESENCIA O MOVIMIENTO(PIR HC-SR501)

Es un dispositivo que detecta el movimiento basándose en la radiación electromagnética infrarroja que emiten los seres vivos y objetos debido a la temperatura que se encuentran.

El sensor detecta presencia si el objeto se encuentra dentro de un cono de 110 ° desde su centro y a una distancia máxima de hasta 7 metros.

Resultado de imagen de PIR HC-SR501 Resultado de imagen de PIR HC-SR501 Imagen relacionada

Podemos modificar el comportamiento del sensor modificando con un destornillador los dos potenciómetros y el jumper que incorpora:

Para conectarlo ala placa Arduino: conectamos el pin Vcc del sensor a los % V de la placa, el pin central del sensor a un pin de la placa para transmitir información y el pin GND del sensor al GND de la placa Arduino.

SENSOR DE AGUA

Es un dispositivo que estima la presencia de agua a través de unos filamentos conductores paralelos que serán los que entren en contacto directo con el líquido. Esto provoca una señal analógica que será traducida para indicar si existe agua. Dichos valores analógicos pueden variar desde 0 (seco) hasta 1023 (sensor totalmente empapado).

Resultado de imagen de SENSOR DE AGUA

Ojo: proteger los contactos y partes eléctricas del circuito del agua para evitar un cortocircuito.

PANTALLA LCD

La pantalla LCD (Liquid Crystal Display), es un dispositivo que nos permite visualizar información de forma gráfica mediante texto.

Estas pantallas poseen pines de entrada/salida como los que se muestran en la imagen:

Resultado de imagen de pantalla lcd arduino

Aunque, últimamente, estos displays suelen venir con los pines soldados, todavía hay muchos sitios que cuando compras uno de estos, te lo envían en kit, con los pines aparte para que los sueldes

https://www.prometec.net/wp-content/uploads/2014/10/lcp-MAS-PIN-HEADER.jpg

Lo primero que tienes que saber, es que tienes que soldarlos, y que no vale sujetar los pines de algún modo más o menos extravagante. Los sueldas y punto. Hazte a la idea. Cualquier otra solución acabara funcionando mal, o directoramente con el display quemado.

Estos se caracterizan principalmente por el número de caracteres que son capaces de representar, que viene dado en su datasheet generalmente por unos números del tipo “8×1″, “16×2″, “20×4″, que significan “Número de caracteres x Número de filas“, así pues, un display LCD 16×2, es capaz de representar 2 filas de 16 caracteres.


OBJETIVO 1 – MANEJO LEDS

En el objetivo número 1 explicaremos todo lo necesario para aprender a manejar diferentes tipos de LEDs, interactuando con diferentes pines de salida de la placa de Arduino.

Funciones de programación

En este objetivo vamos a profundizar en las siguientes funciones de programación:

#define

Esta sentencia permite la definición de valores constantes en todo el programa. Por ejemplo, si en el circuito vamos a utilizar la salida número 5 de la placa, lo normal es crear una constante con el valor 5 y utilizarla en el código en lugar de utilizar el valor 5. La utilización de constantes en el código es algo muy común que se utiliza en programación. En el desarrollo de programas para Arduino nos va a permitir, entre otras cosas, que, si por ejemplo cambiamos el número del pin en la que tenemos enchufado el circuito, cambiando el valor de la constante, de forma automática en todas las sentencias en las que estamos usando ese valor se actualicen y todo siga funcionando de forma correcta. Es decir, no tendremos que cambiar por el nuevo valor todas las sentencias donde se utiliza la salida, únicamente cambiaremos el valor de la constante.

En el siguiente ejemplo se define una constante que se llama VERDE y que tiene el valor 3, es decir, el LED verde está conectado al pin número 3:

#define VERDE 3

pinMode

La sentencia es utilizada para configurar el modo de trabajo de cada uno de los pines que tiene la placa Arduino. La sección en la que se utiliza es la sección de configuración, es decir, en setup().

Existen dos modos diferentes de funcionamiento de los pines:

La configuración por defecto de todos los pines de la placa de Arduino es de salida, por tanto, si no indicamos lo contrario estos pines funcionarán en este modo. Te aconsejamos que, independientemente de que sea el valor por defecto el de salida, configures el modo de funcionamiento de todos los pines.

En el siguiente ejemplo se define el pin número 3 como salida:

pinMode( 3, OUTPUT);

En lugar de utilizar el valor 3, en el siguiente ejemplo te mostramos como utilizar la constante que hemos definido previamente:

pinMode( VERDE, OUTPUT);

digitalWrite

Mediante esta sentencia vamos a enviar valores binarios (0 o 1) al pin configurado como salida. En la sentencia hay que indicar el número del pin, que va de 0 a 13 y puede especificarse por valor o por constante, y el valor a enviar. Los posibles valores a enviar son:

En el siguiente ejemplo se envía el valor HIGH al pin número 3, es decir, quiero activar el dispositivo conectado al pin 3, en este caso, encender el led conectado al pin 3:

digitalWrite( 3, HIGH);

En lugar de utilizar el valor 3, en el siguiente ejemplo te mostramos como utilizar la constante que hemos definido previamente:

digitalWrite( VERDE, HIGH);

analogWrite

La sentencia enviará valores entre 0 y 255 al pin configurado como salida.

En la sentencia hay que indicar el pin sobre el que se quiere realizar la escritura y el valor a escribir.

En el siguiente ejemplo se envía el valor 120 al pin número 3:

analogWrite( 3, 120);

En lugar de utilizar el valor 3, en el siguiente ejemplo te mostramos como utilizar la sentencia con la constante que hemos definido previamente:

analogWrite( VERDE, 120);

delay

La función permite detener de forma temporal la ejecución del programa de Arduino. El tiempo de detención se indica en milisegundos.

En el siguiente ejemplo se detiene el programa medio segundo (ten en cuenta que un segundo son 1000 milisegundos):

delay( 500);

for

La sentencia FOR es utilizada para repetir un bloque de sentencias un número determinado de veces, es decir, utilizaremos esta sentencia si queremos repetir una acción o secuencia de acciones, como por ejemplo que se encienda y se apague un led varias veces seguidas.

Para la ejecución se utiliza una condición de terminación, mientras que esta condición no sea cierta, el bloque de sentencia se ejecuta repetitivamente, una vez la condición es cierta deja de ejecutarse el bucle.

En el siguiente ejemplo puedes ver un bucle FOR que se repite 10 veces:

for( int i = 0; i < 10; i + +)

 {

digitalWrite( VERDE, HIGH);

delay( 2000);

digitalWrite( VERDE, LOW);

delay( 2000)

}

El ejemplo enciende el LED, espera dos segundos, apaga el LED y vuelve a esperar dos segundos. La condición de salida del bucle es que la variable i sea mayor o igual que 10, es decir, mientras que sea menor, el bloque de código se ejecutará y por tanto hasta que no se repita 10 veces la sentencia, se estará repitiendo el encendido y apagado del led. Por cada repetición, la variable i va aumentando de 1 en 1 su valor, tal y como se indica con i + +.

Podríamos haber puesto i = i + 1 o i + = 1 en lugar de i + +, ya que el funcionamiento es el mismo.

Variables

Las variables son un elemento de la programación que se utilizan para almacenar valores temporalmente.

La diferencia principal con las constantes es que pueden almacenar diferentes valores que van cambiando durante la ejecución del programa.

Las variables deben de ser declaradas antes de ser utilizadas.

En el siguiente ejemplo puedes ver la declaración de una variable de tipo número entero (int) y la asignación de un valor:

int VariableEjemplo = 0;

VariableEjemplo = 3 + 5;

En la primera sentencia se declara la variable (VariableEjemplo) y se le asigna el valor inicial de 0. Posteriormente, la variable almacenará el resultado de realizar la suma de los valores 3 + 5.

En el aprendizaje utilizaremos los siguientes tipos de variable:

PRÁCTICA 1. ENCENDIDO Y APAGADO DE UN LED

La práctica 1 consiste en el montaje de un circuito electrónico básico basado en el encendido y apagado automático de un LED.

MONTAJE FÍSICO

CÓDIGO FUENTE

#define RED 7 //definimos las constantes principales

void setup()

{

  pinMode(RED, OUTPUT);// Configuramos los pines como salida

  digitalWrite(RED, LOW);

 

}

void loop()

{

  digitalWrite(RED, HIGH); //Encendemos el LED

  delay(1000); // detenemos el programa 1000 millisecond(s)

  digitalWrite(RED, LOW); //apagamos el LED

  delay(1000); // detenemos el programa 1000 millisecond(s)

 

}

PRÁCTICA 2. INTERACTUAR CON VARIOS LEDs

La práctica 2 consiste en el montaje de un circuito electrónico básico basado en el encendido y apagado automático de varios LEDs.

MONTAJE FÍSICO

CÓDIGO FUENTE

#define RED 7 //definimos las constantes principales

#define GREEN 6

#define BLUE 5

void setup()

{

  pinMode(RED, OUTPUT);// Configuramos los pines como salida

  pinMode(GREEN, OUTPUT);

  pinMode(BLUE, OUTPUT);

  digitalWrite(RED, LOW);

  digitalWrite(GREEN, LOW);//Establecemos el valor inicial apagado

  digitalWrite(BLUE, LOW);

}

void loop()

{

  digitalWrite(RED, HIGH); //Encendemos el LED

  delay(1000); // detenemos el programa 1000 millisecond(s)

  digitalWrite(RED, LOW); //apagamos el LED

  delay(1000); // detenemos el programa 1000 millisecond(s)

  digitalWrite(GREEN, HIGH); //Encendemos el LED

  delay(1000); // detenemos el programa 1000 millisecond(s)

  digitalWrite(GREEN, LOW); //apagamos el LED

  delay(1000); // detenemos el programa 1000 millisecond(s)

  digitalWrite(BLUE, HIGH); //Encendemos el LED

  delay(1000); // detenemos el programa 1000 millisecond(s)

  digitalWrite(BLUE, LOW); //apagamos el LED

  delay(1000); // detenemos el programa 1000 millisecond(s)

}

PRÁCTICA 3. INTERACTUAR CON UN LED RGB

La práctica 3 consiste la utilización analógica y digital de un LED RGB. El circuito que vamos a usar para ambos modos de utilización es el mismo, lo único que cambia es el código que cargaremos a la placa Arduino.

MONTAJE FÍSICO

PROGRAMACIÓN DIGITAL

#define RED 9 //definimos las constantes principales

#define GREEN 10

#define BLUE 11

void setup()

{

  pinMode(RED, OUTPUT);// Configuramos los pines como salida

  pinMode(GREEN, OUTPUT);

  pinMode(BLUE, OUTPUT);

  digitalWrite(RED, LOW);

  digitalWrite(GREEN, LOW);//Establecemos el valor inicial apagado

  digitalWrite(BLUE, LOW);

}

void loop()

{

  digitalWrite(RED, HIGH); //Encendemos el LED

  delay(500); // detenemos el programa 1000 millisecond(s)

  digitalWrite(RED, LOW); //apagamos el LED

  delay(500); // detenemos el programa 00 millisecond(s)

  digitalWrite(GREEN, HIGH); //Encendemos el LED

  delay(500); // detenemos el programa 500 millisecond(s)

  digitalWrite(GREEN, LOW); //apagamos el LED

  delay(500); // detenemos el programa 500 millisecond(s)

  digitalWrite(BLUE, HIGH); //Encendemos el LED

  delay(500); // detenemos el programa 500 millisecond(s)

  digitalWrite(BLUE, LOW); //apagamos el LED

  delay(500); // detenemos el programa 500 millisecond(s)

}

PROGRAMACIÓN ANALÓGICA

En este ejercicio utilizaremos las salidas analógicas.

Para ello añadiremos una nueva constante, delay time, que indica el tiempo que transcurre entre cada cambio.

#define RED 9 //definimos las constantes principales

#define GREEN 10

#define BLUE 11

#define delayTime20

void setup()

{

  pinMode(RED, OUTPUT);// Configuramos los pines como salida

  pinMode(GREEN, OUTPUT);

  pinMode(BLUE, OUTPUT);

  digitalWrite(RED, LOW);

  digitalWrite(GREEN, LOW);//Establecemos el valor inicial apagado

  digitalWrite(BLUE, LOW);

}

void loop()

{

          delay(1000);

        for(int=0;i<255;i+=1)

{

        analogwrite(RED,i);

        delay(delayTime);

}

digitalWrite(RED,LOW);

delay(1000);

        for(int=0;i<255;i+=1)

{

        analogwrite(GREEN,i);

        delay(delayTime);

}

digitalWrite(GREEN,LOW);

delay(1000);

        for(int=0;i<255;i+=1)

{

        analogwrite(BLUE,i);

        delay(delayTime);

}

digitalWrite(BLUE,LOW);

}

OBJETIVO 2. MANEJO DE PULSADORES

En esta práctica vamos a profundizar en las siguientes funciones de programación:

DIGITALREAD

Mediante la sentencia digitalRead podemos leer el valor que tiene un pin almacenado. Para proceder con la lectura hay que indicar el pin a leer, que irá de 0 a 13 y podrá ser indicado mediante valor o constante.

El valor leído será uno de los siguientes:

En el siguiente ejemplo se recibe el valor del pin 3:

                Valor=digitalRead(3)

Si en lugar de utilizar el valor 3 utilizamos una constante previamente definida:

                Valor=digitalRead(VERDE)

IF/ELSE

Mediante la sentencia if podremos comprobar si una condición se cumple o no y ejecutar un bloque de código u otro dependiendo de ello. Es decir, mediante if vamos a poder ejecutar diferentes sentencias dependiendo del resultado de una comparación entre dos elementos.

Las comparaciones que se pueden realizar entre los dos elementos de la comparación son:

<

Primer elemento menor que el segundo

<=

Primer elemento menor o igual que el segundo

>

Primer elemento mayor que el segundo

>=

Primer elemento mayor o igual que el segundo

!=

Primer elemento diferente al segundo

==

Primer elemento igual al segundo

En el siguiente ejemplo se comprueba el valor de la entrada número 5 de la placa, y en caso de sr HIGHT escribe en el pin de salida el valor HIGHT. Traducido a un ejemplo sencillo, sería: si activamos un dispositivo provocamos la activación de otro, en este caso, encendemos el LED verde:

if(digitalRead(5)==HIGHT)

{

                digitalwrite(VERDE)=HIGHT;

        

}

En la sentencia if puede añadirse el bloque de código que se debe de ejecutar en el caso de que la condición no se cumpla, éste bloque es añadido con la sentencia else.

En el siguiente ejemplo se comprueba si el valor del pin 5 es HIGHT y en caso de serlo escribe HIGHT en la salida VERDE, por el contrario, si no se cumple, escribe HIGHT en la salida ROJO.

if(digitalRead(5)==HIGHT)

{

                digitalwrite(VERDE)=HIGHT;

        

}

Else

{

                digitalwrite(RED)=HIGHT;

        

}

En la condición de la sentencia if también se pueden poner diferentes condiciones mediante operadores OR y AND.

En la siguiente sentencia se está comprobando mediante OR que la variable valor sea menor que valorminimo o que sea mayor que valormaximo:

if(valor<valorminimo || valor>valormaximo)

INPUT_PULLUP

Es un tipo de configuración de pin de la placa Arduino, junto con INPUT y OUTPUT. La difencia respecto a INPUT es que si utilizamos INPUT_PULLUP el circuito utilizará las resistencias internas de la placa Arduino, cosa que no ocurre con el modo de funcionamiento INPUT.

PRÁCTICA 1. ENCENDIDO Y APAGADO DE LEDs CON UN PULSADOR

Utilizaremos un pulsador para encender y apagar dos LEDs.

  1. El modo de funcionamiento del pin de entrada INPUT.

#define RED 13

#define GREEN 12

#define BUTTON 7

void setup()

{

pinMode(RED,OUTPUT);

        pinMode(RED,OUTPUT);

pinMode(BUTTON,INPUT);

}

void loop()

{

    if(digitalRead(BUTTON)==LOW)

    {

        digitalWrite(GREEN,LOW);

        digitalWrite(RED,HIGH);

    }

          else

    {

        digitalWrite(GREEN,HIGH);

        digitalWrite(RED,LOW);

    }

   

}

  1. El modo de funcionamiento del pin de entrada INPUT_PULLUP.

#define RED 13

#define GREEN 12

#define BUTTON 7

void setup()

{

pinMode(RED,OUTPUT);

        pinMode(RED,OUTPUT);

pinMode(BUTTON,INPUT_PULLUP);

}

void loop()

{

    if(digitalRead(BUTTON)==LOW)

    {

        digitalWrite(GREEN,LOW);

        digitalWrite(RED,HIGH);

    }

          else

    {

        digitalWrite(GREEN,HIGH);

        digitalWrite(RED,LOW);

    }

   

}

PRÁCTCA 2. CREAR UN SEMÁFORO

Vamos a simular el funcionamiento de un semáforo convencional, la relación entre los componentes electrónicos y los del semáforo es el siguiente:

#define REDCARS 13

#define ORANGECARS 12

#define GREENCARS 11

#define REDPEDESTRIANS 9

#define GREENPEDESTRIANS 10

#define SIGNAL 3

#define BUTTON 6

void setup()

{

          pinMode(REDCARS, OUTPUT);

          pinMode(ORANGECARS, OUTPUT);

          pinMode(GREENCARS, OUTPUT);

          pinMode(REDPEDESTRIANS, OUTPUT);

         pinMode(GREENPEDESTRIANS, OUTPUT);

          pinMode(SIGNAL, OUTPUT);

         pinMode(BUTTON, INPUT_PULLUP);

         digitalWrite(REDCARS, LOW);

          digitalWrite(ORANGECARS, LOW);

          digitalWrite(GREENCARS, HIGH);

          digitalWrite(REDPEDESTRIANS, HIGH);

          digitalWrite(GREENPEDESTRIANS, LOW);

          digitalWrite(SIGNAL, LOW);

}

void loop()

{

          if(digitalRead(BUTTON)==LOW)

          {

                  digitalWrite(SIGNAL, HIGH);

            delay(5000);

            digitalWrite(ORANGECARS,HIGH);

            digitalWrite(GREENCARS,LOW);

            delay(2000);

            digitalWrite(ORANGECARS,LOW);

            digitalWrite(REDCARS,HIGH);

            digitalWrite(SIGNAL,LOW);

            digitalWrite(REDPEDESTRIANS, LOW);

            digitalWrite(GREENPEDESTRIANS, HIGH);

            delay(5000);

           

for(int i=0;i<3;i++)

            {

                      digitalWrite(GREENPEDESTRIANS, LOW);

                      delay(500);

                      digitalWrite(GREENPEDESTRIANS, HIGH);

                      delay(500);

            }

   

           digitalWrite(REDPEDESTRIANS, HIGH);

            digitalWrite(GREENPEDESTRIANS, LOW);

           digitalWrite(GREENCARS, HIGH);

        digitalWrite(REDCARS, LOW);

          }

          

}

OBJETIVO 3. MANEJO DE POTENCIÓMETROS

En esta práctica vamos a profundizar en las siguientes funciones de programación:

ANALOGREAD

Mediante la sentencia analogRead podemos leer las entradas analógicas de nuestra placa Arduino.

Características:

Ejemplo de cómo se leen:

                int Valor=analogRead(3)

                int Valor=analogRead(VERDE)

ANALOGWRITE

Mediante la sentencia analogWrite podemos escribir valores analógicos.

Características:

Ejemplo de cómo se escriben, indicando el número de pin al que se va a enviar el valor y el valor a enviar:

analogWrite(3,200);

analogWrite(VERDE,200);

El valor enviado puede ser especificado mediante una constante en vez de mediante un valor directamente:

analogWrite(VERDE,VALORMAXIMO);

MAP

La función map nos permite relacionar un valor que se encuentra en un rango de valores a otro rango de valores. Por ejemplo, la placa hace una lectura del pin analógico (potenciómetro) comprendida entre 0 y 1023 y tendrá que transformar ese valor en un rango comprendido entre 0 y 255 para escribirlo en una salida (zumbador), para ello usaremos la función map.

Map(valor a transformar, Inicial Menor, Inicial Mayor, Final Menor, Final Mayo);

        int ValorFinal = map(ValorInicial,0,1023,0,255);

PRÁCTICA 1. CONTROL DE SONIDO DE UN ZUMBADOR CON UN POTENCIÓMETRO

Mediante el potenciómetro controlaremos el zumbador de forma totalmente analógica: en función de la corriente que deja pasar el potenciómetro, girándolo más omenos, el zumbador emitirá un sonido más o menos elevado.

MONTAJE FÍSICO

PROGRAMACIÓN. CÓDIGO FUENTE

#define BUZZER 11

#define POTENCIOMETER A0

void setup()

{

        pinMode(BUZZER,OUTPUT);

         pinMode(POTENCIOMETER,INPUT);

}

void loop()

{

        int ValueFromPotenciometer = analogRead(POTENCIOMETER);

            int ValueToBuzzer = map(ValueFromPotenciometer,0,1023,0,255);

         analogWrite(BUZZER,ValueToBuzzer);

}

PRÁCTICA  2. CONTROL DE ENCENDIDO DE LEDs CON UN POTENCIÓMETRO

Mediante el potenciómetro controlaremos el encendido y apagado de LEDs, es decir mediante una entrada analógica( potenciómetro) vamos a controlar un conjunto de salidas digitales (LEDs). Cuanto más giremos el potenciómetro más LEDs encenderemos y si lo giramos al contrario los iremos apagando.

MONTAJE FÍSICO

PROGRAMACIÓN. CÓDIGO FUENTE

#define RED 13

#define YELLOW 12

#define ORANGE 11

#define BLUE 10

#define GREEN 9

#define POTENCIOMETER A1

void setup()

{

        pinMode(RED,OUTPUT);

          pinMode(YELLOW,OUTPUT);

          pinMode(ORANGE,OUTPUT);

          pinMode(BLUE,OUTPUT);

          pinMode(GREEN,OUTPUT);

          pinMode(POTENCIOMETER,INPUT);

}

void loop()

{

        int ValueFromPotenciometer = analogRead(POTENCIOMETER);

          int Value = map(ValueFromPotenciometer,0,1023,0,5);

   

          if(Value==0)

    {

            digitalWrite(RED,LOW);

            digitalWrite(YELLOW,LOW);

              digitalWrite(ORANGE,LOW);

              digitalWrite(BLUE,LOW);

              digitalWrite(GREEN,LOW);

    }

 

          if(Value==1)

    {

                 digitalWrite(RED,HIGH);

            digitalWrite(YELLOW,LOW);

              digitalWrite(ORANGE,LOW);

              digitalWrite(BLUE,LOW);

              digitalWrite(GREEN,LOW);

    }

          else if(Value==2)

    {

            digitalWrite(RED,HIGH);

            digitalWrite(RED,HIGH);

              digitalWrite(RED,LOW);

              digitalWrite(RED,LOW);

              digitalWrite(RED,LOW);

    }

 

          else if(Value==3)

    {

            digitalWrite(RED,HIGH);

            digitalWrite(YELLOW,HIGH);

              digitalWrite(ORANGE,HIGH);

              digitalWrite(BLUE,LOW);

              digitalWrite(GREEN,LOW);

    }

 

          else if(Value==4)

    {

            digitalWrite(RED,HIGH);

            digitalWrite(YELLOW,HIGH);

              digitalWrite(ORANGE,HIGH);

              digitalWrite(BLUE,HIGH);

              digitalWrite(GREEN,LOW);

    }

 

          else if(Value==5)

    {

            digitalWrite(RED,HIGH);

            digitalWrite(YELLOW,HIGH);

              digitalWrite(ORANGE,HIGH);

              digitalWrite(BLUE,HIGH);

              digitalWrite(GREEN,HIGH);

    }

}

OBJETIVO 4. MANEJO DE SENSORES

En esta práctica vamos a profundizar en las siguientes funciones de programación:

LIBRERÍAS

Una librería es un componente de software que contiene operaciones ya implementadas y que ofrece un interface conocido que permite el uso de las mismas.

Funcionalmente hablando, una librería es un fichero que añadimos a nuestro programa y que contiene código fuente ya escrito que podemos utilizamos a través del interface que ofrecen.

Arduino ya incluye librerías en la instalación del IDE del desarrollo, pero, además, en internet podemos encontrar un montón de librerías que podemos incorporar a tus programas.

#INCLUDE

Mediante la sentencia #include podemos incluir para el uso en nuestro programa software librerías ya desarrolladas.

En la siguiente práctica incluiremos las siguientes librerías:

MATERIALES

PRÁCTICA  1. LECTURA DE UN SENSOR LDR

Mediante un sensor LDR obtendremos la intensidad de luz ambiental y la mostraremos en una pantalla LCD.

MONTAJE FÍSICO

PROGRAMACIÓN. CÓDIGO FUENTE

En la sección de definiciones se definen constantes y variables, además de incluir la librería necesaria para interactuar de forma fácil y rápida con la pantalla LCD que hemos conectado en la placa #include<LiquidCrystal>. Las constantes definidas indican que el sensor LDR está conectado al pin 5 mientras que la pantalla LCD está conectada a los pines que van del 7 al 12, ambos inclusive. En esta sección también se definen las variables para la pantalla LCD y un par de variables que se utilizarán en la sección principal.

La sección de configuración inicializa los diferentes pines como entrada o salida según corresponda. Además, de las dos líneas de la LCD en las que se mostrará información, en la fila superior se mostrará una breve descripción de lo que se mostrará en la segunda línea, “Nivel de Luz”.

La sección principal lee el valor del sensor LDR y lo transforma a un valor de  0 a 100, ya que se mostrará el nivel de luz de forma porcentual. Una vez se tiene el valor transformado, este es escrito en la segunda línea del LCD.

#include <LiquidCrystal.h>

#define LDR 5

#define PIN1 7

#define PIN2 8

#define PIN3 9

#define PIN4 10

#define PIN5 11

#define PIN6 12

LiquidCrystal lcd(PIN1,PIN2,PIN3,PIN4,PIN5,PIN6);

int value,normalizedValue;

 

void setup()

{

        pinMode(LDR,INPUT);

          pinMode(PIN1,OUTPUT);

          pinMode(PIN2,OUTPUT);

          pinMode(PIN3,OUTPUT);

          pinMode(PIN4,OUTPUT);

          pinMode(PIN5,OUTPUT);

          pinMode(PIN6,OUTPUT);

          lcd.begin(16,2);

          lcd.print("Nivel de Luz");

}

void loop()

{

        value = analogRead(LDR);

            normalizedValue = map(value,0,1023,0,100);

          lcd.setCursor(0,1);

          lcd.print(normalizedValue);

          lcd.print("%");

     

}

PRÁCTICA  2. SEGURIDAD CON UN SENSOR DE PRESENCIA

Mediante un sensor de presencia y movimiento activaremos una pequeña alarma que dispara un zumbador y LEDs.

MONTAJE FÍSICO

PROGRAMACIÓN. CÓDIGO FUENTE

En la sección de declaración de constantes definimos cinco constantes para cada uno de los pines que vamos a utilizar.

En la sección de configuración se define el modo de funcionamiento de cada uno de los pines, todos ellos son de salida excepto el sensor de presencia que es de entrada.

En el programa principal se comprobará el estado del sensor.

#define PIRSENSOR 12

#define BUZZER 8

#define LED1 6

#define LED2 4

#define LED3 3

void setup()

{

        pinMode(BUZZER, OUTPUT);

         pinMode(LED1, OUTPUT);

         pinMode(LED2, OUTPUT);

         pinMode(LED3, OUTPUT);

         pinMode(PIRSENSOR, INPUT);

}

void loop()

{

        if(digitalRead(PIRSENSOR)==HIGH)

    {

            digitalWrite(BUZZER,HIGH);

              digitalWrite(LED1,HIGH);

              digitalWrite(LED2,HIGH);

              digitalWrite(LED3,HIGH);

              delay(3000); //tiempo de espera antes de volver a comprobar estado

    }

          

          else

    {

            digitalWrite(BUZZER,LOW);

              digitalWrite(LED1,LOW);

              digitalWrite(LED2,LOW);

              digitalWrite(LED3,LOW);

    }

}

PRÁCTICA  2. LECTURA DE UN SENSOR DE TEMPERATURA Y HUMEDAD

La parte de aprendizaje de esta práctica es la utilización de la consola serial de Arduino.

MONTAJE FÍSICO

PROGRAMACIÓN. CÓDIGO FUENTE

La sección de configuración tiene tres sentencias diferentes que realizan operaciones diferentes:

La sección de configuración establece el pin del sensor como entrada pinMode(SENSOR, INPUT) e inicializa la salida Serial Serial.begin(9600), además se indica por pantalla mediante el Serial que ha sido inicializado el sensor.

Al igual que al configurar los pines de entrada y salida, al iniciar el Monitor Serie, debemos configurar la velocidad de comunicación entre la placa y el ordenador, que en este caso lo hemos configurado a 9600bps que es el valor típico de comunicación del puerto serie.

El programa principal lee los datos del sensor y los muestra por la salida del monitor Serie. El proceso se repite cada minuto.

La función Serial.println(“texto”) manda la información (lectura del sensor) al puerto serie y mostrará dicha información en el monitor serie.

Para mostrar los datos simplemente abrir el puerto serie con vuestra placa conectada y empezareis a ver los datos del sensor.

Resultado de imagen de arranque monitor serie arduino

#include <SimpleDHT.h>

#define SENSOR 7     // Pin al que conectamos el sensor DHT

#SimpleDHT11 sensor;

void setup()

{

          pinMode(SENSOR,INPUT);

          Serial.begin(9600);

          Serial.println("SENSOR STARTED");

}

 

void loop()

{

 

          Serial.println("Reading the sensor...");

          byte temperature = 0;

          byte humidity = 0;

          byte data[40]={0};

 

          if(sensor.read(SENSOR,&temperature,&humidity,data));

          {

                  Serial.print("There was an error reading!");

          }

   

  // Muestra en el monitor serie las lecturas

          Serial.print("...Sensor readed");

         Serial.print("Temperature:");

          Serial.print((int)temperature);

          Serial.print(""*C,");

          Serial.print("");

          Serial.print("CHumidity:  ");

          Serial.print((int)humidity);

          Serial.print("%");

            Serial.print("########");

            delay(60000);

}

PROYECTO FINAL. CONTROLA TU CASA

Con este proyecto vamos a construir un circuito complejo que nos permitirá:

Para cada uno de los sensores de medición estableceremos unos umbrales que nos permitirán establecer valores mínimos y máximos para cada uno de las mediciones incluidas en el proyecto.

Además incorporaremos un simulador de alarma compuesto por un zumbador y un conjunto de LEDs rojos. La alarma se activará si detecta valores fuera de los umbrales establecidos para cada uno de los sensores de medición.

El circuito incorpora también un display LCD que muestra los valores de las mediciones que está leyendo y en caso de producirse una alarma indica el sensor que la ha originado.

MONTAJE FÍSICO

CÓDIGO FUENTE

// Incluimos las librerías que vamos a utilizar

 #include < LiquidCrystal.h >

#include < SimpleDHT.h >

// Definimos las constantes de los pines de la placa, donde van conectados los diferentes sensores en la placa. Ejemplo, en el pin 1 va conectado el sensor de agua, en el 2 el sensor DHT…

#define WATER 1

#define DHT 2

#define LDR 3

#define PIRSENSOR 4

#define LED1 5

#define LED2 6

#define BUZZER 7

#define PIN1 8

#define PIN2 9

#define PIN3 10

#define PIN4 11

#define PIN5 12

#define PIN6 13

// Definimos los umbrales para cada uno de los sensores. Ejemplo, el rango que consideremos para la Tª está entre 10ºC como mínimo y 30ºC como máximo.

#define minTemperature 10

#define maxTemperature 30

#define minHumidity 5

 #define maxHumidity 80

#define minLight 15

 #define maxLight 95

 #define maxWater 10

// Definimos las variables que utilizará el programa durante su ejecución

// Variable para interactuar con el display LCD

LiquidCrystal lcd( PIN1, PIN2, PIN3, PIN4, PIN5, PIN6);

 // Variable de control para saber si existe alguna alarma

bool ExistAlarm;

 // Variables para realizar cálculos

int value, normalizedValue;

// Variable para interactuar con el sensor DHT

SimpleDHT11 sensor;

// Variables de control de alarma de los diferentes sensores

bool AlarmFromTemperature;

bool AlarmFromHumidity;

bool AlarmFromLight;

bool AlarmFromPresence;

bool AlarmFromWater;

// Inicialización del programa

void setup()

{

 pinMode( PIN1, OUTPUT);

pinMode( PIN2, OUTPUT);

pinMode( PIN3, OUTPUT);

pinMode( PIN4, OUTPUT);

pinMode( PIN5, OUTPUT);

pinMode( PIN6, OUTPUT);

pinMode( BUZZER, OUTPUT);

pinMode( LED1, OUTPUT);

pinMode( LED2, OUTPUT);

pinMode( PIRSENSOR, INPUT);

pinMode( LDR, INPUT);

pinMode( DHT, INPUT);

pinMode( WATER, INPUT);

// Inicialización de la variable de la pantalla LCD

lcd.begin( 16, 2);

}

 // Ejecución del programa

void loop()

{

         // Las variables se igualan todas a False para volver a comprobar los sensores

ExistAlarm = false;

AlarmFromTemperature = false;

AlarmFromHumidity = false;

AlarmFromLight = false;

AlarmFromPresence = false;

AlarmFromWater = false;

//comprobación sensor LDR

Value=analogRead(LDR);

normalizedValue=map(value,0,1023,0,100);

if(normalizedValue< minLight ||