Cómo Declarar Funciones y Métodos en Arduino: Guía Definitiva con Ejemplos Infaliblespost-template-default single single-post postid-46 single-format-standard et_pb_button_helper_class et_fixed_nav et_show_nav et_secondary_nav_enabled et_primary_nav_dropdown_animation_fade et_secondary_nav_dropdown_animation_fade et_header_style_left et_pb_footer_columns4 et_cover_background et_pb_gutter et_pb_gutters3 et_right_sidebar et_divi_theme et-db
771 715 4434

La programación de Arduino es la programación de un microcontrolador. Arduino proporciona un entorno de programación sencillo y potente para programar, además de incluir las herramientas necesarias para compilar y cargar el programa en la memoria flash del microcontrolador. El propio IDE nos ofrece un sistema de gestión de librerías y placas muy práctico.

Un programa de Arduino se denomina sketch o proyecto y tiene la extensión .ino. El lenguaje de programación de Arduino es C++. Aunque se hable de que hay un lenguaje propio de programación de Arduino, no es cierto, la programación se hace en C++ pero Arduino ofrece una API o core que facilitan la programación de los pines de entrada y salida y de los puertos de comunicación, así como otras librerías para operaciones específicas. El propio IDE ya incluye estas librerías de forma automática y no es necesario declararlas expresamente.

La estructura básica de un sketch de Arduino es bastante simple y se compone de al menos dos partes: setup() y loop(). La función setup() es donde se configura el microcontrolador y solo se ejecuta una vez, cuando la placa es alimentada por una fuente de voltaje o cuando ejecutamos un reset. Esta función es muy similar al BIOS (Basic Input Output Setup) de los computadores personales. La función loop(), como su nombre lo indica, es un bucle que se repite indefinidamente y es donde se escribe el programa principal. El contenido de void loop() se ejecuta desde la primera instrucción hasta la última, luego se vuelve a la primera instrucción, y así sucesivamente una y otra vez.

Funciones Definidas por el Usuario en Arduino

En Arduino, además de las funciones setup() y loop(), un sketch puede tener funciones definidas por el usuario. Una función es un conjunto de instrucciones que realizan una tarea específica. Además, puede ser diseñada e implementada de forma independiente al resto del código. Las funciones sirven principalmente para ordenar tu código y hacer que unas partes del programa sean independientes de otras. Esto te facilita mucho el trabajo cuando tienes que buscar y solucionar errores.

Las funciones son un trozo de código que puede ser usado/llamado desde cualquier parte del sketch. A una función se le puede llamar directamente o también se le puede pasar parámetros.

Lea también: IVA 21% Excel

Sintaxis de una Función

Al crear una función, lo primero que tienes que escribir es el tipo de dato que te va a devolver. Si, por ejemplo, quieres crear una función que mida la distancia, podrías utilizar tanto float como double, para que te devuelva la distancia medida con decimales. En caso de que los decimales no te interesen, podrías utilizar int. Si no necesitas que la función te devuelva algún dato, simplemente escribe void.

Lo siguiente es el nombre. Puede ser el que tú quieras. Sin embargo, es muy recomendable que utilices un nombre que describa rápidamente lo que hace la función. Dentro de los paréntesis van los parámetros. Éstos son opcionales. Básicamente son variables que le pasas a la función para que las utilice.

Prototipos de Funciones

Antes de implementar las funciones, tienes que escribir sus prototipos. El prototipo de una función está formado por el tipo de dato que te va a devolver, el nombre y los parámetros. Al final también debes poner un punto y coma.

Implementación de Funciones

El lugar donde tienes que implementar las funciones es justo debajo de la función void loop(). En este caso, también tienes que escribir el tipo de dato, el nombre y los parámetros de la función. Sin embargo, en vez de terminar con un punto y coma, tienes que abrir unos corchetes `{}`.

Si la función no es de tipo void, significa que devuelve algún dato. Para devolverlo simplemente tienes que utilizar la palabra return al final de la implementación de la función y al lado escribir el nombre de la variable que guarda el dato que quieres devolver. En caso de que sea una función que devuelve un dato, tienes que igualarla a una variable del mismo tipo para que almacene el dato devuelto.

Lea también: Guía IVA reducido

Funciones Integradas de Arduino

Arduino incluye funciones ya creadas que puedes utilizar en tus programas, además de las funciones de usuario que tú mismo creas. Algunas de las funciones más comunes son:

  • pinMode(número de pin, tipo): Esta función configura el modo de trabajo de un pin digital. El primer parámetro es el número del pin (de 0 hasta 13) y el segundo parámetro si va a ser salida (OUTPUT) o entrada (INPUT). Si no se establece con pinMode el modo de funcionamiento de un pin, este no se puede usar. Las órdenes pinMode normalmente se escriben dentro de setup(), ya que los pines se deben configurar al principio, y por única vez.
  • digitalWrite(pin, valor): Dado un pin definido como salida digital, con esta instrucción se establece su valor, que puede ser a nivel alto HIGH o a nivel bajo LOW (5 voltios o 0 voltios respectivamente).
  • digitalRead(pin): Esta función se usa para leer el pin de entrada digital y el valor se almacena en una variable.
  • delay(milisegundos): Con la instrucción delay() se hacen pausas en Arduino. El micro se queda esperando un tiempo predeterminado, sin hacer otra cosa más que esperar. Este tiempo se tiene que especificar en milisegundos como parámetro de la función.
  • analogWrite(pin, valor): Esta función se utiliza para las salidas analógicas PWM. Recibe dos parámetros: el pin a controlar y la cantidad de tiempo que el pin permanecerá en nivel alto (ON).
  • map(valor, fromLow, fromHigh, toLow, toHigh): Esta función básicamente mapea un número de un rango a otro.
  • millis() y micros(): Estas funciones te devuelven el tiempo que ha pasado desde que la placa empezó a ejecutar el último programa que le has subido. La función millis lo hace en milisegundos, y micros en microsegundos.

Métodos en Programación Orientada a Objetos (POO)

En el contexto de C++ que usa Arduino, la programación orientada a objetos (POO) introduce el concepto de "métodos". Un método es esencialmente una función que pertenece a una clase. Los métodos (comportamiento) y atributos (estado) están estrechamente relacionados por la propiedad de conjunto.

Clases y Objetos

Una clase es un nuevo tipo de dato. Las clases pueden contener funciones. Una clase es una plantilla para la creación de objetos de datos según un modelo predefinido. Las clases se utilizan para representar entidades o conceptos. Cada clase es un modelo que define un conjunto de variables (el estado), y métodos apropiados para operar con dichos datos (el comportamiento). Las clases son un pilar fundamental de la programación orientada a objetos. Permiten abstraer los datos y sus operaciones asociadas al modo de una caja negra.

Una vez definida la clase, crear un objeto es tarea sencilla. Para cada objeto declarado de una clase se mantiene una copia de sus datos, pero todos comparten la misma copia de las funciones de esa clase. Esto ahorra memoria y hace que los programas ejecutables sean más compactos.

Cuando definimos clases, veremos que hay partes que son públicas y otras que son privadas. Debajo de la cláusula private: vienen las variables y funciones ocultas al exterior. Solo pueden ser invocadas desde el interior de la clase, es decir, no se pueden ejecutar por una llamada exterior.

Lea también: ¿Cómo localizar tus XML del SAT?

Encapsulación y Modularidad

La encapsulación es un procedimiento por el cual, los datos y las funciones se encierran en un contenedor llamado objeto, que usamos para aislar ambos elementos de la manipulación exterior y forzar a que esta se haga de un modo controlado y validado por nosotros mismos. La modularidad es la capacidad de dividir el problema en pequeñas partes independientes entre sí.

Herencia

La herencia es la reusabilidad del código. El método es derivar una nueva clase de una que ya existe. Queremos definir una nueva clase que se llame CountDown derivada de Contador y añadirle una función de decremento. Para ello, lo primero es ver cómo derivamos una clase de otra. Al definir una variable como protected, significa que podemos acceder a esta variable desde clases derivadas de ella, pero sigue siendo imposible acceder desde un programa externo.

Polimorfismo y Sobrecarga de Funciones

Se suele definir el polimorfismo como: Un interface único, múltiples métodos. Y es algo que reduce la complejidad de los programas de una forma notable. El function Overloading es un aspecto del Polimorfismo que nos permite manejar diferentes objetos con los mismos métodos o propiedades. No solo se pueden sobrecargar las funciones, sino también los operadores para que hagan cosas diferentes en función del tipo de los operadores.

Constructores y Destructores

Podemos definir una función que se ejecuta siempre que se crea un objeto, y es tan habitual que tiene nombre. Los destructores son funciones miembro especiales que sirven para eliminar un objeto de una determinada clase. Cuando se define un destructor para una clase, este es llamado automáticamente cuando se abandona el ámbito en el que fue definido.

Un ejemplo claro de la llamada a un método de un objeto es cuando usamos Serial.begin(9600). Estamos llamando al método begin del objeto Serial. La clase HardwareSerial (de la cual Serial es una instancia) hereda de la clase base Stream.

Crear tus propias funciones en Arduino no es difícil cuando tienes práctica, pero al principio puede costar. Conocer y practicar con microcontroladores es muy útil para el desarrollo de sistemas electrónicos. La plataforma Arduino nos permite de una manera fácil, introducirnos en el mundo de los microcontroladores y sus aplicaciones.

tags: #como #declarar #metodo #en #arduino #ejemplo