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:

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
)
/*
    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_1Escornabot.zumbador500500);
    }

    // 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_2Escornabot.zumbador1000500);
    }

    // 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_3Escornabot.zumbador2000500);
    }

    // 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_4Escornabot.zumbador3000500);
    }

    // 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_1Escornabot.zumbador500500);
        notifica_pulsador (Escornabot.LED_2Escornabot.zumbador1000500);
        notifica_pulsador (Escornabot.LED_3Escornabot.zumbador2000500);
        notifica_pulsador (Escornabot.LED_4Escornabot.zumbador3000500);
    }

}
Vistas
28 Número de vistas
28 Vistas de miembros
0 Vistas públicas
Acciones
0 Gustos
0 No me gusta
0 Comentarios
Compartir en redes sociales
Compartir enlace
Compartir por correo

Por favor iniciar sesión para compartir esto webpage por correo.