jueves, 15 de marzo de 2018

Los primeros pasos con Arduino: encender y apagar un LED

Escribo este artículo no para mí sino para aquellos que quieran iniciarse en la electrónica y  en Arduino. El primer circuito que un novato suele montar en una placa protoboard conectada a Arduino, es un circuito que enciende y apaga un LED. La explicación es muy extensa y detallada para evitar cualquier tipo de duda.

Instrucciones

Vamos a montar un circuito con Arduino para iluminar un LED de 5 mm

Componentes necesarios:

- Una placa de Arduino REV UNO
- Un LED de 5 mm
- Una resistencia de 220 Ohmios( yo usé una resistencia de 330 Ohmios porque era lo que tenía a mano)
- Cables protoboard macho
- Una placa prototipo protoboad.
- Un microcontrolador Arduino Rev UNO

Montaje fisico del circuito:

Entendamos la placa Arduino como una fuente de alimentación, “una pila” que nos suministrara la energía eléctrica necesaria para el funcionamiento del circuito. Arduino tiene un polo positivo que puede ser el pin de 5V, el pin de 3,3V o en este caso concreto, el pin 13. Del pin 13 de nuestra pila sale un cable rojo que suministra energía eléctrica cuando el código lo pide a un circuito en serie formado por una resistencia de 330 Ohmios (la resistencia no tiene polaridad por lo tanto no importa el orden en el que conectes las patas de la resistencia) y un LED de 5 mm con 2 patas o terminales metálicos. La pata larga representa el polo positivo (ánodo) del LED y la pata corta representa el polo negativo (cátodo) del LED. El polo negativo o cátodo del LED a su vez se conectara al polo negativo representado por el PIN GND (Ground o Tierra) cerrando el circuito. Por convención, la corriente circula del polo positivo al polo negativo como se puede ver en la imagen que adjunto.


¿Por qué colocamos una resistencia de 330 Ohmios? En este caso en concreto, no haría falta una resistencia de 330 Ohmios porque el pin 13 tiene una resistencia interna pero he decidido utilizarla y la razón es la siguiente.

Arduino suministra un voltaje de 5 V y el LED de 5 mm solo soporta un voltaje de 2 V. Arduino suministra un voltaje excesivo a determinados componentes del circuito que trabajan con un voltaje menor y podrían dañarse, quemarse y quedar inutilizables si no usamos resistencias con un valor en Ohmios adecuado. Esto son los datos

Voltaje de Arduino = 5 V
Voltaje del LED amarillo = 2,1 V
Intensidad de corriente del LED = 0,015 A

Hay que calcular el valor de la resistencia en Ohmios. Según la Ley de Ohm:

Voltaje = Intensidad X Resistencia

Voltaje de Arduino – Voltaje del LED = Intensidad de corriente del LED x Resistencia

La resistencia será igual al valor de la resta del voltaje de Arduino – Voltaje del LED dividido por el
valor de la intensidad de corriente del LED 0,015 A

Resistencia = ( 5 – 2,1 ) / 0,015 = 193 Ohmios.

Si las resistencias que tenemos no tienen un valor idéntico, tenemos que elegir la que tenga un valor similar pero siempre superior. En este caso puedes elegir una resistencia 220 Ohmios sin ningún problema, yo escogí una 330 Ohmios porque no tenía a de 220 Ohmios a mano. Ojo, si la resistencia tiene un valor muy elevado, el LED se iluminará poco o nada. Puedes hacer la prueba con resistencias de 470 Ohmios, 1000 Ohmios, 100.000 Ohmios, etc.

Código

/*  Esto que estás leyendo es un comentario de varias lineas
 *  Los comentarios no afectan a la compilación y ejecución del código
 *  Los comentarios sirven para explicar el funcionamiento del código
 *
 *  Para escribir un comentario de varias lineas
 *  se pulsan seguidas las teclas '/' y '*'y a continuación se escribe la primera línea comentario
 *  Si hay varias líneas del comentario empezarán por '*' y se dejará un espacio en blanco
 *  La última linea del comentario debe acabar con los símbolos '*' y '/' como en este ejemplo.
 */
/*  Esto que estás leyendo es un programa o código para ejecutarse en una placa de Arduino y se llama "sketch"
 *  El sketch está formado por 3 secciones:
 *
 *  Una sección de declaración de variables globales que se colocará al principio del código
 *  Una sección llamada void setup() delimitada por llaves de apertura y cierre
 *  Una sección llamada void loop() delimitada por llaves de apertura y cierre
 */
// Para escribir un comentario de una línea solo debes pulsar 2 veces seguidas la tecla '/' y escribir a continuación el comentario
/*  Esta es la sección de declaración de variables globales
 *  En este sketch no es necesario declarar variables globales.
 */

/* Esta es la sección llamada void setup()
 * En esta sección se escribirá la parte del código que se va a ejecutar una sola vez
 * mientras no se apague o no se pulse la tecla Reset en la placa Arduino
 */
void setup(){
  //  Las instrucciones del código terminan con el símbolo ';'al final

  pinMode(13,OUTPUT);     // Ordenamos una sola vez a Arduino que suministre voltaje en la salida del pin 13 cuando sea necesario.
}
/* Esta es la sección llamada void loop()
 * En esta sección se escribirá la parte del código que se va a ejecutar de forma repetitiva
 * mientras no se apaguen o no se pulse la tecla Reset en la placa Arduino
 */
void loop(){
  /*  digitalWrite muestra un estado HIGH o LOW en el pin digital especificado.
   *  HIGH
   *  Si el pin está configurado como OUTPUT, Arduino puede suministrar o no un voltaje de 5V  en el pin 13
   *  Si el pin está configurado como INPUT habilita o deshabilita la resistencia interna de pull up del correspondiente pin 13
   */
  digitalWrite(13,HIGH);  // El LED se enciende porque Arduino suministra voltaje al pin 13
  delay(1000);            // EL LED permanecerá encendido durante 1 segundo = 1000 milisegundos
  digitalWrite(13,LOW);   // El LED se apaga porque Arduino no suministra voltaje al pin 13
  delay(1000);            // El LED permanecerá apagado durante 1 segundo = 1000 milisegundos
  digitalWrite(13,HIGH);  // El LED se enciende porque Arduino suministra voltaje al pin 13
  delay(1000);            // EL LED permanecerá encendido durante 1 segundo = 1000 milisegundos
  digitalWrite(13,LOW);   // El LED se apaga porque Arduino no suministra voltaje al pin 13
  delay(1000);            // El LED permanecerá apagado durante 1 segundo = 1000 milisegundos
  digitalWrite(13,HIGH);  // El LED se enciende porque Arduino suministra voltaje al pin 13
  delay(1000);            // EL LED permanecerá encendido durante 1 segundo = 1000 milisegundos
  digitalWrite(13,LOW);   // El LED se apaga porque Arduino no suministra voltaje al pin 13
  delay(1000);            // El LED permanecerá apagado durante 1 segundo = 1000 milisegundos
  digitalWrite(13,HIGH);  // El LED se enciende porque Arduino suministra voltaje al pin 13
  delay(2000);            // EL LED permanecerá encendido durante 2 segundos = 2000 milisegundos
  digitalWrite(13,LOW);   // El LED se apaga porque Arduino no suministra voltaje al pin 13
  delay(2000);            // El LED permanecerá apagado durante 2 segundos = 2000 milisegundos
  digitalWrite(13,HIGH);  // El LED se enciende porque Arduino suministra voltaje al pin 13
  delay(3000);            // EL LED permanecerá encendido durante 3 segundos = 3000 milisegundos
  digitalWrite(13,LOW);   // El LED se apaga porque Arduino no suministra voltaje al pin 13
  delay(3000);            // El LED permanecerá apagado durante 3 segundos = 3000 milisegundos
  }
Nota sobre el código: Se puede reducir el número de instrucciones con estructuras de bucle como for, while, o do while pero considero que eso es mejor aprenderlo más adelante.


Verificacion, subida y funcionamiento del codigo

  1. Abrimos el programa IDE de Arduino para Windows, Linux o Mac.
  2. Compilamos (verificamos) el código
  3. Seleccionamos la placa Arduino de la lista
  4. Seleccionamos el puerto serial con el que el ordenador se va a conectar con la placa Arduino
  5. Ahora conectamos la placa Arduino al puerto USB del ordenador
  6. Subimos el código a la placa Arduino pulsando el botón "subir" de Arduino

Si el circuito ha sido montado correctamente y el código de Arduino ha sido subido a la placa y Arduino suministra corriente al circuito, el LED deberá encenderse y apagarse en los intervalos de tiempo que hemos definido el código de forma repetitiva mientras Arduino esté encendido o no sea reseteado. No he hecho video y no creo que haga falta.


¡Buena suerte!