Las funciones:

     

    Una función es un bloque de código reutilizable diseñado para realizar una tarea específica. Las funciones permiten a los programadores escribir código modular, lo que significa que pueden dividir el código en partes más pequeñas y manejables. Cada función puede recibir entradas, realizar algún procesamiento y luego devolver un resultado.

    Las funciones pueden devolver varios tipos de resultados diferentes dependiendo del propósito de la misma. A continuación se desglosan los principales tipos de retorno que existen.

     Tipo

    Descripción 

     Void

    No retorna ningún valor pero puede ejecutar acciones como poner en alta un pin 

    int 

    Devuelve un valor de tipo entero de 2 bytes

    float Devuelve un valor de tipo decimal
    double Devuelve un valor de tipo decimal pero con más precisión que "float"
    long Devuelve un entero de 4 bytes
    unsigned int Devuelve un entero sin signo de 2 bytes
    unsigned long Devuelve un entero sin signo de 4 bytes
    byte Devuelve un byte
    bool  Devuelve un valor lógico, 0 o 1
    char Devuelve un carácter

    Además de los tipos vistos en la tabla de antes hay más tipos de funciones que pueden retornar otros tipos de variables o de datos de forma diferente.

    A la hora de crear una función, también se puede indicar que dicha función necesita recibir parámetros o valores de entrada para poder ejecutar la función. También se debe indicar de que tipo son estos parámetros. A continuación se muestran unos ejemplos de funciones:
    A continuación se muestra una función de tipo Void. como se vio anteriormente este tipo de
    función no devuelve ningún valor

    void parpadear_pin(){
      digitalWrite(PIN,HIGH);
      delay(300);
      digitalWrite(PIN,LOW);
    }

    Aunque sea una función que no devuelve ningún valor, sí que puede recibirlos, en el siguiente
    se ejecuta la misma función que en código de arriba pero seleccionando el pin.

    void parpadear_pin(int PIN){
      digitalWrite(PIN,HIGH);
      delay(300);
      digitalWrite(PIN,LOW);
    }
    A continuación se muestra una función de tipo int. Esta función devuelve un valor de tipo entero
    En este caso además va a recibir dos valores más, los cuales debe sumar.

    int sumar(int valor_a, int valor_b){
      int resultado;
      resultado = a + b;
      return resultado;
    }
    A continuación se pueden ver dos funciones, al igual que en el caso anterior, una función
    que se encarga de hacer una suma y otra que se encarga de hacer un producto. La idea es obtener
    el resultado de la suma del cuadrado de carada número.

    int product(int product_a, int product_b){
      int resultado;
      resultado = product_a * product_b;
      return resultado;
    }

    int sumar(int valor_a, int valor_b){
      int resultado;
      int a = product(valor_a, valor_a);
      int b = product(valor_b, valor_b);
      resultado = a + b;
      return resultado;
    }

    Como se puede ver, se puede llamar a una función desde dentro de otra

     

     

    El uso apropiado de funciones puede simplificar enormemente la programación y depuración de un código. También proporciona mejoras en el espacio requerido para almacenar un determinado código. Por estas razones siempre es recomendable trabajar con funciones en la medida de lo posible.

    La primera actividad para el uso de funciones consistirá en hacer parpadear un led cuando se pulse uno de los pulsadores. Cuando se vuelva a pulsar este pulsador el LED deberá apagarse. El otro LED también deberá seguir el mismo funcionamiento lógico que el primero pero ser controlador por el segundo pulsador.

    #define LED_1 4
    #define LED_2 7
    #define Pulsador_1 12
    #define Pulsador_2 13

    uint64_t tiempo_parpadeo = millis();
    bool Estado_1 = 0;
    bool Estado_2 = 0;

    void parpadear_LEDs(bool LED1, bool LED2,uint64_t t_parpadeo){
      if((millis()-t_parpadeo) < 500){
        if(LED1){
          digitalWrite(LED_1,HIGH);
        }
        if(LED2){
          digitalWrite(LED_2,HIGH);
        }
      }
      else if((millis()-t_parpadeo) > 500){
        if(LED1){
          digitalWrite(LED_1,LOW);
        }
        if(LED2){
          digitalWrite(LED_2,LOW);
        }
      }
    }

    void setup() {
      pinMode(LED_1,OUTPUT);
      pinMode(LED_2, OUTPUT);
      pinMode(Pulsador_1, INPUT);
      pinMode(Pulsador_2, INPUT);
    }

    void loop() {
      if((millis()-tiempo_parpadeo)>1000){
        tiempo_parpadeo = millis();
      }
      if(digitalRead(Pulsador_1)==HIGH){
        Estado_1 = 1;
      }
      if(digitalRead(Pulsador_2)==HIGH){
        Estado_2 = 1;
      }
      parpadear_LEDs(Estado_1, Estado_2, tiempo_parpadeo);
    }

     

     

    La segunda actividad planteada consistirá en solicitar dos valores por monitor serial, dichos valores deben ser multiplicados. El resultado se devolverá por monitor serial.

    int valor_a = 0;
    int valor_b = 0;
    int resultado = 0;

    int multiplicar(int a, int b){
      int resu;
      resu = a * b;
      return resu;
    }

    void setup() {
      Serial.begin(9600);
      Serial.setTimeout(50);
    }

    void loop() {
      Serial.println("Introduce el primer valor");
      while(true){
        if(Serial.available()){
          valor_a = (int)Serial.parseInt();
          break;
        }
      }
      Serial.println("Introduce el segundo valor");
      while(true){
        if(Serial.available()){
          valor_b = (int)Serial.parseInt();
          break;
        }
      }
      resultado = multiplicar(valor_a, valor_b);
      Serial.print("El resultado de la multiplicación es: ");
      Serial.println((int)resultado);
      delay(5000);
    }
    Vistas
    1 Número de vistas
    1 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.