martes, 1 de mayo de 2018

LABORATORIO 10

MICROCONTROLADORES 

PROGRAMACIÓN CON ARDUINO

1. COMPETENCIA ESPECIFICA DE LA SESIÓN

  • Conocer el entorno ARDUINO
  • Instalar y configurar IDE ARDUINO
  • Familiarizarse con la programación


2. MARCO TEÓRICO

DIAGRAMA DE LA TARJETA ARDUINO UNO





Funciones de lectura y escritura digital en Arduino


Arduino está formado basicamente por pines de entrada, un microcontrolador en el medio y pines de salida.  Los pines de entrada sirven para escuchar y capturar información del exterior, ejem: pulsadores, sensores, lectoras, etc.; el microcontrolador sirve para procesar el programa cargado y finalmente los pines de salida sirven para enviar información desde la tarjeta Arduino hacia el exterior.

Al hablar de Entradas o Salidas digitales se entiende que tanto la información que escuchan como las respuestas pueden tener solamente dos estados: +5voltios o O voltios. OJO: Esto es solamente cuando se habla de señales digitales.  En la lógica Arduino las señales digitales pueden manejar los siguientes valores o estados:
TODO programa en Arduino debe tener dos funciones básicas: setup() y loop().  La sintaxis (forma de escribir) es la siguiente:

 void setup(){ }
void loop(){ }

La función setup() sirve para definir el comportamiento inicial de mi placa Arduino, es decir cuando la a una fuente de alimentación (pila, batería).  Algunos ejemplos de uso de la función setup() son: Que pines voy a utilizar, cuáles serán entradas y cuáles salidas, iniciar alguna variable, etc

La función loop() sirve para definir todas las tareas que Arduino ejecutará repetidamente mientras esté conectada.  Por ejemplo: Leer el valor de las entradas, escribir en los pines de salida, enviar alertas, emitir sonidos, enviar mensajes por el puerto serial, etc.

Estructura de un programa en Arduino 


La estructura básica de programación de Arduino es bastante simple y divide la ejecución en dos partes: setup y loop. Setup() constituye la preparación del programa y loop() es la ejecución. En la función Setup() se incluye la declaración de variables y se trata de la primera función que se ejecuta en el programa. Esta función se ejecuta una única vez y es empleada para configurar el pinMode (p. ej. si un determinado pin digital es de entrada o salida) e inicializar la comunicación serie. La función loop() incluye el código a ser ejecutado continuamente (leyendo las entradas de la placa, salidas, etc.).


Como se observa en este bloque de código cada instrucción acaba con ; y los comentarios se indican con //. Al igual que en C se pueden introducir bloques de comentarios con /* ... */.

La función bucle (loop) siguiente contiene el código que se ejecutara continuamente (lectura de entradas, activación de salidas, etc) Esta función es el núcleo de todos los programas de Arduino y la que realiza la mayor parte del trabajo.

setup()
La función setup() se invoca una sola vez cuando el programa empieza. Se utiliza para inicializar los modos de trabajo de los pins, o el puerto serie. Debe ser incluido en un programa aunque no haya declaración que ejecutar. Así mismo se puede utilizar para establecer el estado inicial de las salidas de la placa.
void setup(){
  pinMode(pin, OUTPUT); // configura el 'pin' como salida
  digitalWrite(pin, HIGH);  // pone el ‘pin’ en estado HIGH
}

loop()
Después de llamar a setup(), la función loop() hace precisamente lo que sugiere su nombre, se ejecuta de forma cíclica, lo que posibilita que el programa esté respondiendo continuamente ante los eventos que se produzcan en la placa.
void loop()
{
digitalWrite(pin, HIGH); // pone en uno (on, 5v) el 'pin'
delay(1000);                // espera un segundo (1000 ms)
digitalWrite(pin, LOW); // pone en cero (off, 0v.) el 'pin'
delay(1000);           
}

funciones
Una función es un bloque de código que tiene un nombre y un conjunto de instrucciones que son ejecutadas cuando se llama a la función. Son funciones setup() y loop() de las que ya se ha hablado. Las funciones de usuario pueden ser escritas para realizar tareas repetitivas y para reducir el tamaño de un programa. Las funciones se declaran asociadas a un tipo de valor “type”. Este valor será el que devolverá la función, por ejemplo 'int' se utilizará cuando la función devuelve un dato numérico de tipo entero. Si la función no devuelve ningún valor entonces se colocará delante la palabra “void”, que significa “función vacía”. Después de declarar el tipo de dato que devuelve la función se debe escribir el nombre de la función y entre paréntesis se escribirán, si es necesario, los parámetros que se deben pasar a la función para que se ejecute.
type nombreFunción(parámetros)
{
instrucción;
}

La función siguiente devuelve un número entero, delayVal() se utiliza para poner un valor de retraso en un programa que lee una variable analógica de un potenciómetro conectado a una entrada de Arduino. Al principio se declara como una variable local, 'v' recoge el valor leído del potenciómetro que estará comprendido entre 0 y 1023, luego se divide el valor por 4 para ajustarlo a un margen comprendido entre 0 y 255, finalmente se devuelve el valor 'v' y se retornaría al programa principal. Esta función cuando se ejecuta devuelve el valor de tipo entero 'v'.
int delayVal()
{
int v;                      // crea una variable temporal 'v'
v= analogRead(pot);      // lee el valor del potenciómetro
v /= 4;                // convierte 0-1023 a 0-255
return v;                // devuelve el valor final
}

{} entre llaves
Las llaves sirven para definir el principio y el final de un bloque de instrucciones. Se utilizan para los bloques de programación setup(), loop(), if.., etc.
type funcion()
{
instrucciones;
}

Una llave de apertura “{“ siempre debe ir seguida de una llave de cierre “}”, si no es así el programa dará errores.
El entorno de programación de Arduino incluye una herramienta de gran utilidad para comprobar el total de llaves. Sólo tienes que hacer click en el punto de inserción de una llave abierta e inmediatamente se marca el correspondiente cierre de ese bloque (llave cerrada).

; punto y coma

El punto y coma “;” se utiliza para separar instrucciones en el lenguaje de programación de Arduino. También se utiliza para separar elementos en una instrucción de tipo “bucle for”.
int x = 13;   /* declara la variable 'x' como tipo entero de valor 13 */

Nota: Olvidaos de poner fin a una línea con un punto y coma o se producirá en un error de compilación. El texto de error puede ser obvio, y se referirá a la falta de una coma, o puede que no. Si se produce un error raro y de difícil detección lo primero que debemos hacer es comprobar que los puntos y comas están colocados al final de las instrucciones.
/*… */ bloque de comentarios
Los bloques de comentarios, o comentarios multi-línea son áreas de texto ignorados por el programa que se utilizan para las descripciones del código o comentarios que ayudan a comprender el programa. Comienzan con / * y terminan con * / y pueden abarcar varias líneas.

/* esto es un bloque de comentario no se debe olvidar
cerrar los comentarios estos deben estar equilibrados */

Debido a que los comentarios son ignorados por el compilador y no ocupan espacio en la memoria de Arduino pueden ser utilizados con generosidad. También pueden utilizarse para "comentar" bloques de código con el propósito de anotar informaciones para depuración y hacerlo mas comprensible para cualquiera.
Nota: Dentro de una misma línea de un bloque de comentarios NO se puede escribir otro bloque de comentarios (usando /*..*/).
// línea de comentarios
Una línea de comentario empieza con // y terminan con la siguiente línea de código. Al igual que los comentarios de bloque, los de línea son ignoradas por el programa y no ocupan espacio en la memoria.
// línea de comentarios


Una línea de comentario se utiliza a menudo después de una instrucción, para proporcionar más información acerca de lo que hace ésta o para recordarla más adelante.

Diferencias y similitudes entre PIC y Arduino


PIC es un microcontrolador de Microchip, es un microcontrolador muy popular hasta hace un par de años era el microcontrolador mas vendido en el mundo , sin embargo los nuevos microcontroladores ARM Cortex han ido adquiriendo popularidad.  Si de Arduino hay cientos o miles de aplicaciones de PIC hay millones, y esta diferencia es de esperarse pues los microcontroladores PIC tienen mucho mas tiempo en el mercado que Arduino.

Arduino es una plataforma de código abierto con la cual un entusiasta de la electrónica puede crear proyectos de electrónica digital, domótica, robótica , etc. de forma rápida y sencilla ademas de económica, es decir tiene las tres "B" Bueno Bonito y Barato, y es que los cientos de proyectos que andan circulando por la red son realmente increíbles. Su placa mas popular el Arduino UNO, se basa en el microcontrolador Atmega328 de Atmel.

En mi opinión ambos son dispositivos excelentes, pero en mi opinión el microcontrolador Arduino es utilizado por estudiantes de secundaria, los cuales se encuentran llevando una formación vocacional para el cual es perfecto, debido a que no tiene gran complejidad con los comando y tiene la facilidad de que puede programarse en la plataforma Scrach que es mucho más dinámica.

Por el contrario PIC es una marca más comercial y como tal, tiene una mayor complejidad al momento de programarlo, debido a que puede programarse en C++, o en lenguaje ensamblador el cual a mi parecer son más acondicionados para un nivel universitario, este tipo de controlador a diferencia del arduino es más utilizado a nivel comercial, y si de aprender se trata este microcontrolador le garantizará un dinamismo absoluto en las cataratas de codigo ensamblador que deben montarse para hacer una sencilla aplicación.

3. EVIDENCIA DEL LABORATORIO

VÍDEO

CHALECO DE CICLISTA



MODIFICACIÓN DE CHALECO DE CICLISTA







4. OBSERVACIONES
  • La actividad me ha resultado bastante interesante. Me he quedado con ganas de aprender más sobre este proyecto y de comprarme una placa Arduino. Debería dedicársele más tiempo, ya sea mediante una práctica adicional o incluso una asignatura optativa.
  • Las sesiones dedicadas a este proyecto han sido interesantes y muy divertidas. Además, hay que tener en cuenta el trabajo que conlleva desarrollar cada uno de los prototipos de circuito por los profesores. 
  • Me ha servido mucho el proyecto de el chaleco  porque soy inexperto en la programación. Gracias a la aplicación práctica del lenguaje del arduino al diseño de circuitos con Arduino, me ha costado menos su estudio. Es alentador poder aprender de forma práctica ya desde el primer curso.


5. CONCLUSIONES    


  • Se ha logrado desarrollar un dispositivo utilizando un Sistema programable a través de las grandes ventajas que nos proporciona la Plataforma de Arduino, con la variedad de dispositivos disponibles se pueden crear no solo este tipo de prototipos sino que puede desarrollarse todo una gama de buenos proyectos.
  • Interesante resulta el hecho que no es necesario grandes cantidades de energía eléctrica, ni de grandes costos, con una inversión  bien planificada se puede realizar un diseño similar al que se presenta.
  • El grupo de trabajo agradece la oportunidad de haber conocido y aprendido de las grandes ventajas de Arduino y sus múltiples funcionalidades


6. FOTO GRUPAL


No hay comentarios:

Publicar un comentario