Mensaje SOS con un LED en Arduino

Mensaje SOS con un LED en Arduino

En esta ocasión, vamos a realizar una conexión de un LED en Arduino y además, le añadiremos el código necesario para que haga un mensaje de SOS en código morse.

Lo que aprenderás aquí te servirá también para controlar cuando se enciende y cuando se apaga un LED.

Los componentes que necesitas, son los siguientes:

CantidadComponente
1Arduino UNO
1330 Ω Resistencia
1LED Rojo
1Placa de pruebas mini
2Cables de conexión

Lo primero que vamos a hacer, antes de nada, es analizar las regiones de conexión de Arduino, para saber donde conectas las cosas y porque.

En la parte superior, tenemos los pines digitales.

En la parte inferior, a la izquierda, tenemos los pines de alimentación y a la derecha los de entrada analógica.

Los pines digitales (del 0 al 13) pueden ser utilizados tanto de entrada como de salida. Cada uno lleva un voltaje de 5v.

Los pines 0 y 1 (RX y TX), de momento los vamos a dejar apartados hasta que los utilicemos.

Los pines con el símbolo ~ PWM (Pulse Width Modulation, Modulación de Ancho de Pulso) son los destinados a la generación de señales de pulso, nos permitirán modificar el comportamiento de los componentes electrónicos.

Las salidas digitales pueden estar en dos estados. LOW o HIGH. LOW significa 0v o apagado y HIGH, 5v o encendido.

Pues por eso, el voltaje lo tenemos que tener en este caso en un pin digital, para poder controlarlo.

Evidentemente, este no es un curso de código morse, solo necesitas saber que S en código morse, equivale a tres pulsos cortos y que O, son tres largos. De modo, que lo que tenemos que programar, son primero tres pulsos cortos (S), tres largos (O) y tres cortos (S).

Por si quieres que tus componentes aprendan a hablar en morse, aquí tienes unas tablas. Los pulsos cortos equivalen a un punto (.). Los largos al guion (-). Por lo tanto, SOS equivale a ...---...

Letras, números y símbolos en código morse

A.-B-...C-.-.D-..E.F..-.
G- -.H....I..J.- - -K-.-L.-..
M- -N-.Ñ- -.- -O- - -P.- -.Q- -.-
R.-.S...T-U..-V...-W.- -
X-..-Y-.- -Z- -..
0- - - - -1.- - - -2..- - -3...- -4....-5.....
6-....7- -...8- - -..9- - - -.
+.-.-.--....-_..- -.-".-..-.$...-..-@.- -.-.
..-.-.-,- -..- -?..- -..'.- - - -.!-.-.- -/-..-.
(-.- -.)-.- -.-&.-...:- - -...;-.-.-.=-...-
¿..-.-¡- -...-

Descargar IDE de Arduino

Si no lo tienes, descárgate el IDE de Arduino. Aunque tengas una placa compatible como las que se venden en AliExpress, te sirve. Instala los drivers de tu Arduino si todavía no lo has hecho. Si necesitas ayuda con esto, déjame un comentario.

Conexión física

La conexión es exactamente igual que la del capítulo anterior. Vamos a conectar el cable positivo al pin 7, lo pasas con la resistencia al positivo del led y el negativo puede ser de la tira de pines digitales.

Esquema de conexión led Arduino

Código para SOS en código morse

El programa que voy a escribir a continuación, es poco óptimo y se puede mejorar muchísimo con un bucle. No obstante, para quién empieza, le será más fácil de ver cada uno de los pasos del programa de la forma que lo voy a escribir. En el próximo capítulo, haremos el código mejorado.

En el código tenemos dos secciones diferenciadas. La primera es void setup() y la segunda, void loop().

void setup() es la zona donde vamos a poner los datos del programa y void loop es donde vamos a escribir la lógica que se va a repetir en bucle, de ahí la palabra loop. La parte del setup se ejecuta una sola vez. Se lee lo primero y se utilizan sus datos en el bucle de loop.

Arduino IDE

En el setup() vamos a elegir el pin digital y el modo. Gracias a pinMode() vamos a poder seleccionar de forma individual la entrada o salida de los pines. Puesto que queremos emitir una señal desde Arduino al exterior (luz del LED), vamos a poner OUTPUT (salida). El número 7 se corresponde al pin digital número 7 de la placa Arduino.

void setup() {
  // Seleccionamos el Pin digital 7 con salida
  pinMode(7, OUTPUT);
}

En el otro bloque, vamos a escribir la lógica, le tenemos que indicar cuando se tiene que cortar la corriente en ese pin y cuanto tiempo.

Gracias a digitalWrite() podremos controlar el encendido o apagado del voltaje del pin.

void loop() {
  // Mensaje SOS en el pin 7:

  // S en código morse
  digitalWrite(7, HIGH);
  delay(600);
  digitalWrite(7, LOW);
  delay(300);
  digitalWrite(7, HIGH);
  delay(600);
  digitalWrite(7, LOW);
  delay(300);
  digitalWrite(7, HIGH);
  delay(600);
  digitalWrite(7, LOW);
  delay(300);

  // O en código morse
  digitalWrite(7, HIGH);
  delay(1800);
  digitalWrite(7, LOW);
  delay(300);
  digitalWrite(7, HIGH);
  delay(1800);
  digitalWrite(7, LOW);
  delay(300);
  digitalWrite(7, HIGH);
  delay(1800);
  digitalWrite(7, LOW);
  delay(300);

  
  // S en código morse
  digitalWrite(7, HIGH);
  delay(600);
  digitalWrite(7, LOW);
  delay(300);
  digitalWrite(7, HIGH);
  delay(600);
  digitalWrite(7, LOW);
  delay(300);
  digitalWrite(7, HIGH);
  delay(600);
  digitalWrite(7, LOW);
  delay(300);

  // Pausa final más larga para distinguir la vuelta a empezar
  digitalWrite(7, LOW);
  delay(5000);
}

¿Ves lo que he dicho antes? Este programa se ve poco óptimo, ya lo mejoraremos en el siguiente capítulo. Ahora, debes entender como funciona.

En el primer bloque tenemos la representación de la S en código morse. Con digitalWrite() indicamos a qué pin afectar (7) y si lo encendemos o apagamos. Lo primero, es que se encienda con HIGH (ALTO). Con delay(600) le indicamos que esté esperando 600 milisegundos (0,6 segundos). El LED se mantiene ese tiempo encendido. Después, en el siguiente digitalWrite, le indicamos que se apague (LOW, BAJO). ¿Cuánto tiempo permanece apagado? El tiempo que le indicamos en el delay (300) (300 milisegundos o 0,3 segundos). Así sucesivamente hasta realizar los tres pulsos cortos de la S.

En el segundo bloque, los pulsos son más largos (1800 milisegundos o 1,8 segundos).

En el tercer bloque, los pulsos vuelven a ser cortos, ya que estamos representando la última S.

Y En el último bloque, he dejado una pausa de 5 segundos para que se distinga el final del mensaje de la vuelta a empezar.

Enviar el código desde el PC a Arduino

Compilar Arduino

Ahora llega una parte importante. Debes compilar el programa. Si no hay errores, quiere decir que está listo para ser enviado a tu Arduino. Te aparecerá algo como esto en la consola:

El Sketch usa 1240 bytes (3%) del espacio de almacenamiento de programa. El máximo es 32256 bytes.
Las variables Globales usan 9 bytes (0%) de la memoria dinámica, dejando 2039 bytes para las variables locales. El máximo es 2048 bytes.

Guarda el código con el menú "Archivo" > "Guardar como".

Ahora sí, conecta con el cable USB tu Arduino. Selecciona el puerto COM en el menú "Herramientas" > "Puerto". Y el tipo de placa, también en este menú de herramientas.

Seleccionar puerto Arduino

En ocasiones hay cables que te pueden dar algún problema de comunicación con el PC. Si te da un error al transferir el código, lo primero que debes hacer, es comprobar que el driver de Arduino está instalado correctamente, que has seleccionado el modelo correcto y probar con otro cable.

El botón para transferir el código del PC a Arduino es este:

subir programa a Arduino

Espera a que termine. Si no ha fallado, tu Arduino guardará ese código hasta que le cargues otro, por lo que ya no necesita de un PC para estar funcionando.

No te pierdas todo el contenido de Arduino.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Arduino uno Entrada anterior Conectar de un LED 3v a Arduino
Arduino uno Entrada siguiente Mejorar el código de Arduino con bucles