- Portada
- Descripción del curso
- Fundamentos de Arduino y electrónica
- Fundamentos de programación Arduino
-
Electrónica del Escornabot I
-
Introducción
-
Lista de materiales
-
Pulsadores de secuencia I
-
Pulsadores Secuencia II
-
Pulsadores Secuencia III
-
LEDs de indicación de secuencia
-
Actividad 9
-
Actividad 10
-
Actividad 11
-
Zumbador I
-
Zumbador II
-
Zumbador III
-
Actividad 12
-
Actividad 13
-
Funciones
-
Actividad 14
-
Clases
-
Actividad 15
-
Arrays en Arduino
-
Actividad 16
-
- Montaje del robot
- Electrónica del Escornabot II
Actividad 14
Actividad 14

Implementando el control del zumbador y LEDs con funciones
Como vemos, el control del zumbador y de los LEDs se realizará de forma reiterada durante nuestro código. Por ello, una forma óptima de programarlo es haciendo uso de una función.
Primero vamos a crearla y le daremos como nombre notifica_pulsador y cada vez que llamemos a esta función será la encargada de encender el led correspondiente y hacer sonar el tono correspondiente.
Por tanto, los argumentos de nuestra función serán const int pinLED, const int pinBuzzer, const int frecuencia e const int tiempo.
Nuestra función debería quedar como se muestra a continuación:
Función
void notifica_pulsador (
const int pinLED, // Pin donde tenemos conectado el LED
const int pinBuzzer, // Pin donde tenemos conectado el Zumbador
const int frecuencia, // Frecuencia del tono a generar
const int tiempo // Duración del tono a generar
)
Solución
/*
Ejemplo para comprobar el funcionamiento de funciones en el Escornabot
*/
// Incluimos la libreria con funciones y variables para Escornabot
#include "Escornabot.h"
/*
Inicializamos la clase en la variable de nombre Escornabot.
Como en este ejemplo no vamos a utilizar los motores, podemos pasar
el argumento para el constructor de la clase Escornabot con cualquier
valor.
*/
Escornabot Escornabot(10);
// Funcion para notificar que se se ha pulsado el boton.
// Emite un sonido y enciende el LED que corresponde
//**************************** DECLARACION DE FUNCIONES **********************
void notifica_pulsador (
const int pinLED, // Pin donde tenemos conectado el LED
const int pinBuzzer, // Pin donde tenemos conectado el Zumbador
const int frecuencia, // Frecuencia del tono a generar
const int tiempo // Duración del tono a generar
) {
digitalWrite(pinLED, HIGH);
tone(pinBuzzer, frecuencia);
delay(tiempo);
digitalWrite(pinLED, LOW);
noTone(pinBuzzer);
}
// ***************************CODIGO PRINCIPAL********************************
// Rutina de Setup
void setup() {
// En el setup no es necesario hacer nada más que inicializar la
// comunicación Serial
Serial.begin(9600);
}
void loop() {
int lectura_pulsador = analogRead(Escornabot.entrada_pulsadores);
// Comprobamos la lectura dentro del rango del boton S1
if (
(Escornabot.S1_valor_minimo < lectura_pulsador) &&
(lectura_pulsador < Escornabot.S1_valor_maximo)
) {
Serial.println("Se ha pulsado el boton S1.");
notifica_pulsador (Escornabot.LED_1, Escornabot.zumbador, 500, 500);
}
// Comprobamos la lectura dentro del rango del boton S2
else if (
(Escornabot.S2_valor_minimo < lectura_pulsador) &&
(lectura_pulsador < Escornabot.S2_valor_maximo)
) {
Serial.println("Se ha pulsado el boton S2.");
notifica_pulsador (Escornabot.LED_2, Escornabot.zumbador, 1000, 500);
}
// Comprobamos la lectura dentro del rango del boton S3
else if (
(Escornabot.S3_valor_minimo < lectura_pulsador) &&
(lectura_pulsador < Escornabot.S3_valor_maximo)
) {
Serial.println("Se ha pulsado el boton S3.");
notifica_pulsador (Escornabot.LED_3, Escornabot.zumbador, 2000, 500);
}
// Comprobamos la lectura dentro del rango del boton S4
else if (
(Escornabot.S4_valor_minimo < lectura_pulsador) &&
(lectura_pulsador < Escornabot.S4_valor_maximo)
) {
Serial.println("Se ha pulsado el boton S4.");
notifica_pulsador (Escornabot.LED_4, Escornabot.zumbador, 3000, 500);
}
// Comprobamos la lectura dentro del rango del boton S5
if (
(Escornabot.S5_valor_minimo < lectura_pulsador) &&
(lectura_pulsador < Escornabot.S5_valor_maximo)
) {
Serial.println("Se ha pulsado el boton S5.");
notifica_pulsador (Escornabot.LED_1, Escornabot.zumbador, 500, 500);
notifica_pulsador (Escornabot.LED_2, Escornabot.zumbador, 1000, 500);
notifica_pulsador (Escornabot.LED_3, Escornabot.zumbador, 2000, 500);
notifica_pulsador (Escornabot.LED_4, Escornabot.zumbador, 3000, 500);
}
}
| Vistas | |
|---|---|
| 28 | Número de vistas |
| 28 | Vistas de miembros |
| 0 | Vistas públicas |
| Acciones | |
|---|---|
| 0 | Gustos |
| 0 | No me gusta |
| 0 | Comentarios |
Compartir por correo
Por favor iniciar sesión para compartir esto webpage por correo.