lunes, 24 de febrero de 2014

Parpadeo Led con Delay

          Vamos a ver como hacer parpadear un led haciendo uso de la función delay. Esta función hace a Arduino esperar un número especificado de milisegundos antes de continuar ejecutando la siguiente línea de código. Sabiendo que hay 1000 milisegundos en un segundo, el código 'delay(1000);' crea un retraso de un segundo.

          El circuito que montaremos es sencillo, simplemente tendremos un led con una resitencia que lo conecta a tierra y el otro pin lo conectamos al pin 12 de Arduino. Aquí podéis ver el prototipo:


          Realmente podríamos hacer uso del pin 13 de Arduino para no usar la breadboard ya que en la mayoría de las placas Arduino tienen una resistencia de un KOhm en ese pin permitiendo conectar un Led directamente. Pero para ir haciendo uso de componentes lo conectamos a otro pin (cómo el 12 en nuestro caso) añadiéndole la resistencia. Los LEDs tiene polaridad, es decir, sólo se encenderán si los orientamos correctamente. Lo usual es que la patilla más larga sea el positivo y el que tengamos que conectar al pin debido, siendo la patilla corta la que debe de ir a tierra (GND).

          A continuación el código que hace nuestro propósito, que como veis es muy sencillo:

//Definimos el pin para el led
#define led   12
// Función 'Setup'
void setup() {              
  // Inicializamos el pin 'led' como salida
  pinMode(led, OUTPUT);    
}
// Función 'Loop'
void loop() {
  // encendemos el LED (Ponemos el voltaje a 'HIGH')
  digitalWrite(led, HIGH);
  // esperamos medio segundo
  delay(500);        
  // apagamos el LED (Ponemos el voltaje a 'LOW')
  digitalWrite(led, LOW);
  // esperamos medio segundo 
  delay(500);              
}

          Para entender un poco más como funcionan los Sketch, voy a hablar de otras dos funciones básicas usadas para programar Arduino. pinMode como podéis imaginar configura un pin de Arduino como entrada o salida. Para usarla, pasamos como argumento el número del pin que vamos a configurar y la constante INPUT o OUTPUT. Como input podemos manejar estados de sensores, como un botón , y como salida podemos manejar entre otras cosas Leds, como vimos en el Simple Boton Led. Por otra parte, la función digitalWrite envía un valor a un pin. Como podemos ver, si escribimos 'digitalWrite(led, HIGH)' modificamos el pin 12 como HIGH o 5 voltios.

          Y esto es todo por esta vez, os dejo que veáis como funciona:



         

sábado, 22 de febrero de 2014

Simple Boton Led

          Comenzamos con los Mini-Proyectos que irán formando parte del TFG, con los cuáles iremos avanzando en el estudio de Arduino y Android para la realización exitosa del proyecto. Comenzaré siempre haciendo una breve descripción de lo que quiero hacer, continuando con imágenes de los prototipos usados, Sketches con su explicación, vídeos demostrativos, etc... dependiendo del Mini-Proyecto que esté afrontando. Comenzamos.

         Vamos a hacer que un led se encienda cuando pulsemos un botón y se apague cuando no lo hagamos. Así vamos a ver el funcionamiento básico de la placa Arduino, cómo diseñar un prototipo en Fritzing y cómo programar y cargar un Sketch.

          En primer lugar vamos a hacer el diseño del prototipo con Fritzing. Es tan simple como abrir el programa, guardar el proyecto con un nombre y a continuación ir añadiendo a la ventana principal todos los componentes que vamos a utilizar para el prototipo. En nuestro caso: placa Arduino, breadboard, led, botón y resistencia.


          Colocamos y conectamos los componentes de la forma que aparece en la imagen. Simplemente pinchamos en un "agujero", arrastramos y soltamos en otro "agujero" para realizar una conexión. La resistencia la usamos para no fundir el led, disminuyendo la intensidad de corriente que pasa por él. Conectamos el botón al PIN de Arduino 2 y el led en el PIN de Arduino 12. Posteriormente lo montamos.

          La programación de un Sketch es relativamente sencilla: Tiene dos métodos principales que son setup y loop. En setup realizamos la configuración de los pines y de los componentes y variables que vamos a utilizar. Loop es el bucle principal que se repite continuamente y es donde tendremos que realizar las acciones. A continuación os muestro el Sketch explicado utilizado para hacer que Arduino capture la pulsación del botón y así encender o no el led:

//Definimos los pines para el led y el botón
#define  boton  2
#define  led    12
//Definimos una variable para saber el estado del botón
int estadoBoton = 0;
//Método 'Setup'
void setup(){
  //Inicializamos el pin 'led' como salida
  pinMode(led, OUTPUT);
  digitalWrite(led, HIGH);
  //Inicializamos el pin 'botón' como entrada
  pinMode(boton, INPUT);
  //Modo 'pull up'
  digitalWrite(boton, HIGH);
}
//Método 'Loop'
void loop(){
  //Lee el valor del estado de 'boton'
  estadoBoton = digitalRead(boton);
  //Comprobamos si está pulsado
  if (estadoBoton == LOW){
    //Encendemos el led
    digitalWrite(led ,HIGH);
  }else{
    //Apagamos el led
    digitalWrite(led, LOW);
  }
}

          Para terminar os dejo un vídeo demostrativo de como funciona correctamente. Espero que os haya gustado, esto sólo es el comienzo...



jueves, 20 de febrero de 2014

Fritzing

          Continuando con los entornos que voy a utilizar en el desarrollo de mi trabajo fin de grado (TFG), hoy os voy a hablar de una que me va a ser de mucha ayuda, ya que ando muy pegado en cuando a circuitos electrónicos (lo poco que recuerdo de las clases de tecnología del instituto con el gran Jorge y un tema de física de primero en la facultad, con sus problemas de circuitos y demás, pero poco práctico) y no es otro que Fritzing.


         Fritzing es un programa de código libre para el diseño y desarrollo de circuitos electrónicos cuyo software es usado por investigadores, ingenieros (lo que quiero ser), aficionados (lo que soy de momento) y artistas (sólo cuando me viene la inspiración). Fritzing fue creado bajo los principios de Processing y Arduino, y permite documentar los prototipos o maquetas basados en Arduino en mi caso y crear esquemas de circuitos impresos. Dispone de un conjunto de librerías con elementos electrónicos para poder diseñar circuitos, entre ellos las placas Arduino, leds, resistencias, condensadores, diodos, etc... Además de la librería básica en la que se encuentran casi todos los elementos necesarios para realizar los circuitos, podremos encontrar librerías de otros fabricantes de hardware libre.

También cuenta con un sitio web que ayuda a compartir y discutir diseños de prototipos y costa de una gran comunidad. Desde la propia página nos podemos descargar el programa con el que trabajaremos en los prototipos y que usare tanto para la documentación de los circuitos que implementaré en el proyecto como en los ejemplos que iré mostrando aquí. Os dejo una imagen de ejemplo de qué es lo que podemos hacer con Fritzing y un videotutorial.






martes, 18 de febrero de 2014

Arduino: entornos de programación

          Tal cómo dije en Hola Mundo!, mi PFG estará compuesto por un Arduino, y muchos os preguntaréis, ¿y qué es un Arduino?

          Arduino es una plataforma de hardware libre, basada en una placa con un microcontrolador, diseñada para facilitar el use de la electrónica en proyectos multidisciplinares. El hardware es una placa con un microcontrolador Atmel AVR y puertos de entrada/salida, muy sencillos y de bajo coste que permiten muchos diferentes diseños. El software consiste en un entorno de desarrollo que implementa el lenguaje de programación Processing/Wiring y el cargador de arranque que es ejecutado en la placa. Aparte de la placa, existe muchísimos módulos con los que trabajar (BT, IR, Servo, Leds,...) además de "Shields" que hacen trabajos específicos que frecuentemente vienen con sus propias librerías. Para más información está su web oficial



         Hay muchos tipos de Arduino, dependiendo del microcontrolador, voltajes, frecuencia de reloj, etc... En mi caso en haré uso del Arduino Uno - R3 cuyas características son:
  • Microcontrolador: ATmega328
  • Voltaje entrada/salida: 7-12V / 5V
  • Frecuencia de reloj: 16MHz
  • Digital I/O: 14
  • Entradas Analógicas: 6
  • PWM: 6
  • UART: 1
  • Memoria Flash: 32Kb
  • Cargador: Optiboot
  • Interfaz de Programación: USB via ATMega16U2
[EDITADO] Es muy probable que cambie de placa, puesto que estudiando el proyecto a realizar necesite algunos pines más de los que me ofrece el Arduino Uno - R3, así pues os dejo con las características también del modelo Arduino Mega 2560 R3:
  • Microcontrolador: ATmega2560
  • Voltaje entrada/salida: 7-12V / 5V
  • Frecuencia de reloj: 16MHz
  • Digital I/O: 54
  • Entradas Analógicas: 16
  • PWM: 14
  • UART: 4
  • Memoria Flash: 256Kb
  • Cargador: STK500v2
  • Interfaz de Programación: USB vía ATMega16U2



         Como entorno de programación tenemos el Arduino IDE, de código abierto y fácil de escribir código. Se ejecuta sobre Windows, MacOS y Linux. Está escrito en Java y está basado en Processing y algún que otro software abierto. Opcionalmente podremos usar una extensión para Visual Studio llamada "Visual Micro" con el que podremos escribir y cargar los programas para Arduino desde este IDE.. Podemos ver como es el funcionamiento fundamental de Arduino. Básicamente, escribimos programas o "Sketch" que harán que funcione un determinado circuito electrónico que tengamos implementado. Con el microcontrolador podemos hacer uso de Pines Digitales, Entradas Analógicas, PWM (modulación por ancho de pulso), etc...

         Hemos visto una pequeña introducción de Arduino, qué es y cómo funciona. Existe una gran comunidad detrás de este proyecto de hardware libre y podremos encontrar mucha información con relativa facilidad. 

miércoles, 12 de febrero de 2014

Hola Mundo!

          Hola Mundo! Soy estudiante de último año del Grado de Ingeniería Informática - Tecnologías Informáticas en la Universidad de Sevilla. Tras varios años de idas y venidas, convalidaciones "gracias" al plan Bolonia y demás historias universitarias que no vienen al caso aquí, afronto por fin lo que todo estudiante universitario desea comenzar a hacer, su proyecto.

         Hoy, miércoles 12 de Febrero de 2014 doy comienzo a este blog que será un diario de abordo de mi PFG. En él iré recogiendo con la frecuencia que me permita las horas que le tengo que echar al proyecto todos los pasos que daré a lo largo del mismo.

          No me planteo una fecha límite realmente, aunque si todo va como debería de ir, en poco más de tres meses he de concluir lo que hoy estoy comenzando.

          Realmente la historia comenzó hace una semana, momento en el que busqué que podía hacer entre las alternativas que me planteaban los diferentes departamentos de la facultad en cuanto a proyectos. Con la inestimable ayuda de un compañero me decidí y solicité un proyecto. Ganas infinitas de que me aceptaran puesto que es una cosa que siempre me había hecho ilusión hacer y no hace ni tres años se me ocurrió una idea muy similar. No tuve que esperar mucho, a la mañana siguiente el profesor que lo propuso contactó conmigo y me invitó a que lo visitara a su despacho para hacerme conocer aún más la idea.

          Y eso hice, el pasado lunes, tras una pequeña decepción de mañana, me presenté en su despacho para cerrar el asunto, ser su alumno tutelado y conocer aún más el proyecto. Me dio una clase magistral en poco más de una hora y me dio un plazo para que me lo pensara realmente, cosa que no necesito.

          Bueno y diréis, ¿que es lo que piensas hacer? Pues básicamente un coche haciendo uso de Arduino controlado por un teléfono Android. De momento lo he bautizado como "Motordroid", aunque puede que cambie de idea a lo largo de estos meses.

          Sin más, en la próxima entrada hablaré de los entornos de programación y de la placa Arduino en sí. Hay que ir poniendo las bases de todo.

FJ