Montaje 1: Baliza de socorro
Requisitos:
- Dos diodos luminosos LED, una resistencia de 220 ohmios.
- Un zumbador piezoeléctrico.
Planteamiento: Estamos perdidos y vamos a pedir socorro mandando un SOS luminoso y sonoro por si nos ven o nos oyen.
Presentación de: Definición y uso de procedimientos.
Este es un ejercicio para introducir los procedimientos.
En el anterior vimos cómo la iteración nos evitaba repetir la escritura del mismo código cuando éste se ejecutaba en repeticiones sucesivas. Ahora vamos a ver cómo ahorrarnos repetir el código cuando éste se usa varias veces que no van seguidas.
Vamos a empaquetar el código correspondiente a cada letra en un procedimiento.
Las definiciones de los procedimientos se hacen siempre antes de que vayan a ser usados.
Si se van a usar en el void setup() de forma que se ejecuten al comienzo una sola vez, deben estar definidos antes. Si se van a usar sólo en el void loop() de forma que se ejecuten repitiéndose dentro del bucle infinito pueden ir detrás del void setup() pero antes que el void loop().
Puede definirse un procedimiento que ejecute otro, en este caso, el que se ejecuta tiene que estar definido antes.
Los procedimientos se definen con void seguido del nombre y dos paréntesis vacíos.
Se ejecutan con el nombre seguido de los paréntesis vacíos.
Hay que empezar a tener cuidado con la cantidad de llaves anidadas que empiezan a aparecer. Es una buena idea mantener un criterio de colocación que facilite la identificación de los intervalos de código que demarcan.
Una posibilidad es colocar la llave que abre en la misma línea y la que cierra en otra aparte a la misma altura que la primera letra del comando, con el contenido un poco desplazado a la derecha. Las que vayan apareciendo dentro se sitúan de la misma forma con lo que los anidamientos se ven con la indentación.
Un poco exagerado sería así:
void S( ){ //definición del procedimiento que envía la letra S
for(n=0;n<3;n++){
digitalWrite(led, HIGH);
digitalWrite(zumb, HIGH);
delay(corto);
digitalWrite(led,LOW);
digitalWrite(zumb,LOW);
delay(corto);
}
}
Una característica muy práctica de la IDE es la que te indica las llaves, corchetes o paréntesis emparejados. Para ello, tienes que colocar el cursor detrás de uno de ellos y su pareja aparece en un recuadro.
Los mensajes de error al compilar también pueden recordarte algún despiste.
Variaciones:
- Define procedimientos para otras letras y envía tus propios mensajes en morse.ç
VIDEO DEL MONTAJE 1
CÓDIGO FUENTE
Copyright (C) 2006 Juan Carlos Alonso de Mena
This program is free software; you can redistribute it and/or modify it under the terms
of the GNU General Public License as published by the Free Software Foundation;
See the GNU General Public License for more details?
int corto=200;
int pausa=400;
int largo=400;
int espera=1000;
int n=0;
int led=13;
int zumb=10;
void setup (){
pinMode(led,OUTPUT);
pinMode(zumb,OUTPUT);
}
void S(){ //definición del procedimiento que envía la letra S
for(n=0;n<3;n++){
digitalWrite(led, HIGH);
digitalWrite(zumb, HIGH);
delay(corto);
digitalWrite(led,LOW);
digitalWrite(zumb,LOW);
delay(corto);
}
}
void O(){ //definición del procedimiento que envía la letra O
for(n=0;n<3;n++){
digitalWrite(led, HIGH);
digitalWrite(zumb, HIGH);
delay(largo);
digitalWrite(led,LOW);
digitalWrite(zumb,LOW);
delay(largo);
}
}
void loop(){
S(); //Ejecución del procedimiento que envía la letra S
delay(pausa);
O(); //Ejecución del procedimiento que envía la letra O
delay(pausa);
S(); //Ejecución del procedimiento que envía la letra S
delay(espera);
}
Volver?
Copyright (c) 2006 Juan Carlos Alonso de Mena
Permission is granted to copy, distribute and/or modify this document under the terms of
the GNU Free Documentation License, Version 1.2 or any later version published by the
Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no
Back-Cover Texts. A copy of the license is included in the section entitled
GNU Free Documentation License?.