Programando Arduino UNO
3. Señales digitales
3.4. Propuesta 3
Programar un led que produzca todo el tiempo la señal de SOS en código Morse.
Vamos a avanzar un poco más en nuestros conocimientos de programación. En este programa aprenderemos a crear nuestras propias funciones (o subrutinas) para ser usadas varias veces en él sin tener que volver a escribirlas una y otra vez. Con ello se consigue un código más fácil de depurar o corregir y de entender.
En código Morse, la letra S son tres puntos, mientras que la O son tres líneas: SOS = …---...
Seguiremos los siguientes pasos:
1.- Conecta un led de tu kit al pin 11 de tu Arduino. Para el punto haremos que el led brille 0,3 segundos y para la raya, 0,9 segundos. Entre cada punto o raya dejaremos el led apagado durante 0,3 segundos también.
Si no dispones de kit, usa una protoboard y construye el siguiente circuito:
Obtenida de: Arduino - Home
2.- Abre el IDE de Arduino y comienza un programa nuevo. El IDE te abre la estructura básica de cualquier programa o sketch:
void setup() { // put your setup code here, to run once: } void loop() { // put your main code here, to run repeatedly: } 3.- Define dentro de void setup() el pin 11 como pin de salida: void setup() { pinMode(11,OUTPUT); }
4.- Vamos a programar la subrutina que emitirá la letra S en Morse. Así, cada vez que la uses en tu programa, este la ejecutará. En nuestro ejemplo, el pin 11 se enciende y apaga tres veces cada 0,3 segundos. Para programar una subrutina se usa void nombre () Las subrutinas se incorporan delante de void setup():
void S() { for (int i=0; i<3; i++) { digitalWrite(11,HIGH); delay(300); digitalWrite(11,LOW); delay(300); } }
5.- Repite todo el proceso para crear el bloque O,
que solo se diferencia en la duración del led encendido, que pasa a
ser de 0,9 segundos.
void O() { for (int i=0; i<3; i++) { digitalWrite(11,HIGH); delay(900); digitalWrite(11,LOW); delay(300); } }
6.- Una vez que disponemos de nuestros nuevos bloques, programamos el programa principal que se repetirá una y otra vez. Entre cada señal de SOS dejaremos un segundo de descanso:
void S() { for (int i=0; i<3; i++) { digitalWrite(11,HIGH); delay(300); digitalWrite(11,LOW); delay(300); } } void O() { for (int i=0; i<3; i++) { digitalWrite(11,HIGH); delay(900); digitalWrite(11,LOW); delay(300); } } void setup() { pinMode(11,OUTPUT); } void loop() { S(); O(); S(); delay(1000); }
INTEF (2021). SOS en placa [vídeo] YouTube