Lo Último en IP@P
- Stellar Data Recovery revoluciona la recuperación de archivos perdidos en discos duros externos
- Goblin Mine: La Estrategia Económica Detrás del Juego de Minería que está Fascinando a Todos
- Estos son los nuevos Cargadores UGREEN: potencia y portabilidad en dos versiones que no te puedes perder
- UGREEN Nexode Pro: El Cargador Ultradelgado que revoluciona la carga de dispositivos móviles
- La computación en la nube está transformando los juegos Online y estas son sus grandes ventajas
Las funciones de Arduino son las principales herramientas que debes usar al programar una placa. Para ello, es útil conocer algunos aspectos para que este grupo de códigos funcione de forma correcta.
Si quieres saber cómo se hace, será necesario que continúes leyendo. Te explicaremos para qué sirven las funciones en la programación de hardware libre y los usos que le puedes dar a las funciones dentro de Arduino.
Pero esto no es todo lo que podrás leer. Te diremos cómo se compone este segmento del código y el paso a paso que debes hacer para usar una función de forma correcta.
¿Qué son las funciones en Arduino y para qué sirven en la programación de hardware libre?
Para que un proyecto de Arduino se complete, es necesario unir todos los componentes o hardware a la placa y luego realizar la programación. Para esto último, se utiliza el entorno IDE Arduino, el cual trabaja con algunos criterios que deben ser tenidos en cuenta para conseguir el éxito en el desarrollo del programa.
Cuando se abre el entorno de desarrollo integrado se ve lo siguiente:
void setup() { // ponga su código de configuración aquí, para que se ejecute una vez: } void loop() { // ponga su código de configuración aquí, para que se ejecute una vez: }
Siendo, void setup() la función en donde se escriben los ajustes principales del programa y void loop() la función que contendrá los comandos necesarios para que se ejecuten en el Arduino cuando la placa esté disponible. De lo anterior se desprende el concepto de qué es una función en Arduino. Podemos decir entonces que es un bloque de códigos que contiene el programa para llevar adelante las instrucciones que debe realizar la placa.
De esta manera es viable incluir tareas repetitivas de forma separada, en las cuales también es posible dividirlas por módulos para obtener una mejor administración y orden dentro del programa. Una función debe ir acompañada de parámetros, los cuales son variables que se utilizan para definir los límites y establecer los criterios que debe considerar la herramienta principal para aplicar la acción que realizará la función.
Por lo tanto, la sintaxis de una función es:
nombreFunción(parámetros);
¿Cuáles son los beneficios y utilidades de utilizar funciones al programar en Arduino?
Cuando utilizas las funciones al programar Arduino en el IDE obtendrás los siguientes beneficios:
- La función puede ser creada una sola vez, por lo que no es necesario programar siempre la misma tarea dentro del software cuando se necesite que Arduino realice una determinada acción.
- Al poder utilizar la misma función para las tareas repetitivas, el programa resulta más pequeño. Esto logra actividad y mejora la eficiencia de la placa teniendo en cuenta el microprocesador.
- De lo anterior se desprende que, con el uso de la función, tendrás una herramienta que te ayudará a administrar mejor la programación de la placa.
- Al permitir una mejor administración del programa, beneficia el entendimiento del desarrollo general por parte del operador del IDE.
- Si por algún motivo necesitas modificar el código de la función, deberás editar solo un grupo de comandos y no todo el programa. Esto disminuye la probabilidad de cometer errores.
- Cuando necesites agregar alguna ramificación o tarea extra a una función lo podrás hacer por medio del módulo. También tendrás como ventaja, que cuando quieras eliminar alguna tarea extra solo deberás mover el grupo de códigos de la función y no todo el programa.
- Al tener funciones repetidas harás el bosquejo del IDE sea más pequeño lo cual generará una lectura mucho más fácil de los códigos de la programación.
- Cuando conoces que los códigos dentro de las funciones están bien desarrollados, los podrás usar en otros proyectos de Arduino con solo copiar y pegar.
- Al ser llamadas por nombres permite encontrar con facilidad los errores y los lugares que se deben editar para mejorar las acciones de la placa.
Anatomía de una Función de Arduino ¿Cuáles son todas las partes de este segmento de código?
Como te dijimos antes, el programa hace correr las funciones void setup() y void loop(), por lo que es posible agregar más funciones. Pero hay que tener en cuenta que estas herramientas deben obedecer a un criterio a seguir, el cual debe cumplir con cada una de las partes de la función.
La anatomía de una función de Arduino es:
- Lo primero que hay que establecer es el tipo de dato que se necesita que regrese el valor. En este caso se puede utilizar void, string, int, double, short y más.
- Luego hay que escribir el nombre de la función. En este punto es importante aclarar que, por lo general, el nombre debe ser escrito en minúsculas y si se necesita incluir dos o más palabras, tienen que estar separadas por un guion bajo. Por ejemplo, internet_pap. Hay que tener presente y las funciones deben estar incluidas dentro del mismo fichero con extensión Arduino (.ino) o en otro, pero en el interior de igual bosquejo o sketch. Tampoco se puede usar palabras que están reservadas para el lenguaje de programación.
- A continuación, tendrás que escribir el parámetro. Esta herramienta sirve para indicar la tarea que debe realizar la función. En caso de no usar ningún parámetro se deja vacío este lugar.
- Una vez aclarado el tipo de tarea y en donde realizarlo es el momento de incorporar el código del programa, lo cual es el espíritu del desarrollo y es el elemento que lo hace distinguir de otros proyectos. Los códigos se escriben entre llaves en cada línea que se termina de desarrollar debe ir separada por un punto y coma.
- Lo último que quedaría de la anatomía de la función es el retorno. Se tiene que escribir “return” para que regrese el valor de la función.
Un ejemplo de lo anterior es:
void setup() { inMode(pin, OUTPUT); // Establece 'pin' como salida } void loop() { // Aquí comienza la función digitalWrite(pin, HIGH); // Activa 'pin' delay(1000); // Pausa un segundo digitalWrite(pin, LOW); // Desactiva 'pin' delay(1000); } // Con esta llave termina la función
Aprende paso a paso cómo utilizar una función al programar hardware libre en Arduino desde cero
Para utilizar una función desde cero en Arduino vas a tener que seguir este paso a paso para no cometer errores:
Determina las acciones que hará el Arduino
Lo primero que tendrás que hacer es decidir qué clase de trabajo realizará la placa en tu proyecto. De esto saldrá el tipo de función que utilizarás, ya que no es lo mismo una herramienta digital (por ejemplo, pinMode y digitalWrite) o una de tiempo (digitalWrite), entre otras. Lo que tomaremos como modelo para ilustrar los pasos del uso de una función, la construcción de un sensor de estacionamiento. Para ello, vas a necesitar un sensor ultrasónico de medición que te ayudará a detectar la distancia que hay con objetos cercanos.
Establece los nombres a los pines de la placa
El siguiente paso es declarar el nombre que tendrá cada entrada que utilizarás del Arduino. Luego de esto tendrás que indicar en el grupo de comandos void setup() los pines de entrada y de salida.
Ingresa la función void loop()
Más en Informática
- Extensión de archivo .ISO ¿Qué son y cómo abrir este tipo de archivos?
- Visión artificial o Computer Vision ¿Qué es, cómo funciona y para qué sirve esta tecnología?
- ¿Cómo programar un Servomotor con Arduino para crear proyectos complejos? Guía paso a paso
- Memoria caché: ¿Qué es, para qué sirve y cómo funciona este elemento del software?
- Primera Generación de Computadoras; origen, historia y evolución
SÍGUENOS EN 👉 YOUTUBE TV
Para el trabajo que estás realizando vas a declarar la función int para llamar al sensor y usarás los valores para establecer los parámetros.
Por lo tanto, el ejemplo quedará de la siguiente manera:
// Modelo de códigos para un sensor de estacionamiento int IPAP = 8; int WEBSITE = 0; void setup() { begin(9600); pinMode (IPAP, INPUT); pinMode (WEBSITE, OUTPUT); } void loop() { } int sensor(int valor) { }
Crea la lectura del sensor
Ahora vas a tener que copiar el código dentro de la función que denominaste sensor. Luego tendrás que asignar una variable que puedes llamar distancia para que el sensor establezca la unidad de medida de longitud que será enviada desde el grupo void loop().
Establece el retorno
Tendrás que incluir la variable return y asignarla como la distancia. Esto servirá para que el sensor devuelva un valor y pueda accionar los resultados de los códigos establecidos. Cuando tengas listo esta parte deberás elegir una variable para dividir la unidad (en este ejemplo se tomará el número 10, pero también se puede incluir cualquier otra métrica). A esto último le pondremos como nombre divisor (div). Por lo que, el divisor (que es igual a 100) se expresará como int dis= sensor (divisor).
Incluye los valores de lectura
Lo que te queda por hacer es armar una función que permita conocer a través de un período los valores que aparecerán en el monitor. Se puede utilizar Serial.println (dis) con un retraso de un segundo delay(1000).
Por lo tanto, el ejemplo del sensor quedará:
// Modelo de códigos para un sensor de estacionamiento int IPAP = 8; int WEBSITE = 0; void setup() { begin(9600); pinMode (IPAP, INPUT); pinMode (WEBSITE, OUTPUT); } void loop() { } int sensor(int valor) { } void loop(){ int divisor= 10; int dis = sensor(divisor); println (dis); delay(1000); } int sensor (int valor) { digitalWrite (IPAP, LOW); delayMicroseconds (2); digitalWrite (IPAP, HIGH); delayMicroseconds (10); digitalWrite (IPAP, LOW); int distancia = pulseIn(IPAP, HIGH); distancia = distancia/valor; return distancia; }
Conoce las funciones más útiles que puedes aplicar al trabajar la programación en Arduino
Entre las funciones más útiles que puedes usar en la programación de tu placa Arduino se encuentran las siguientes:
digitalRead()
Esta función te permitirá leer el valor de un pin digital determinado, su devolución puede ser HIGH (alto) o LOW (bajo). La sintaxis de esta herramienta es digitalRead(pin), en donde pin es el número asignado en la placa de Arduino a la entrada digital.
Por ejemplo, si deseas que el pin 13 sea considerado de salida al igual que el pin de entrada 7, entonces deberás escribir:
int ledPin = 13; // LED conectado al pin digital 13 int inPin = 7; // pulsador conectado al pin digital 7 int val = 0; // variable para almacenar el valor leído configuración vacía () { pinMode (ledPin, SALIDA); // establece el pin digital 13 como salida pinMode (inPin, INPUT); // establece el pin digital 7 como entrada } bucle vacío () { val = digitalRead (inPin); // lee el pin de entrada digitalWrite (ledPin, val); // establece el LED al valor del botón }
delay()
Dentro de las funciones más útiles y usadas se encuentra delay(). Esta herramienta permite pausar el programa por un tiempo que debe establecer el programador, siempre se considera en unidad de medida de milisegundos. Es decir, 1000 milisegundos equivaldrán a un segundo. La estructura de esta función es delay(ms), en la cual ms es la cantidad de milisegundos que se desea retardar el proceso.
Mira este ejemplo en el cual se desea que el pin de salida 13 espere 1 segundo antes de que se produzca la acción:
int ledPin = 13; // LED conectado al pin digital 13 void setup() { pinMode(ledPin, OUTPUT); // Establece el pin digital como salida } void loop() { digitalWrite(ledPin, HIGH); // Enciende el LED correspondiente delay(1000); // Espera un segundo digitalWrite(ledPin, LOW); // Apaga el LED delay(1000); // Espera un segundo }
attachInterrupt()
Esta función es un poco más completa de utilizar, ya que se necesitan de parámetros para qué se interrumpan los pines digitales. De esta manera es posible conectar la placa a un interruptor para qué realice el corte del proceso durante un tiempo determinado. Hay que tener presente que de acuerdo con la versión del Arduino deberás conectar en los distintos pines. Para hacer una rutina de servicio de interruptor de forma correcta, es necesario conocer su sintaxis. Ella es attachInterrupt(digitalPinToInterrupt(pin), ISR, mode).
En donde:
- interrupt es el número de interrupciones que se desea.
- pin es el número de pin asignado en la placa.
- ISR es la rutina del servicio, es el ISR a llamar por parte del programa.
- mode se usa en la sintaxis para definir el momento en que se activará la interrupción del servicio.
Un ejemplo de esta función es:
const byte ledPin = 13; const byte interruptPin = 2; volatile byte state = LOW; void setup() { pinMode(ledPin, OUTPUT); pinMode(interruptPin, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(interruptPin), blink, CHANGE); } void loop() { digitalWrite(ledPin, state); } void blink() { state = !state; }