Início
/
Software
/
Dicas de Software
/
Como criar e utilizar Funções para organizar seu código em Arduino
Como criar e utilizar Funções para organizar seu código em Arduino
Angelo Luis Ferreira | 29/11/2023
Acessos: 1.407
Declarando e usando Funções em Arduino
Objetivo
Vamos mostrar neste artigo o conceito de funções na programação com Arduino. A utilização de funções no Arduino é uma prática comum para modular e organizar o código. As funções permitem que você divida o código em partes menores e reutilizáveis, tornando-o mais legível e fácil de manter.
Sintaxe (declarando uma função):
tipo_retorno nome_da_funcao(parametros) {
// Corpo da função
// Código a ser executado
return valor_retorno; // Opcional, apenas se a função tiver um tipo de retorno
}
Onde:
tipo_retorno: se a função tiver retorno, utilize o tipo de dado que será retornado, como: int, boolean, float, etc. (leia Tipos de dados usados pelo Arduino)
tipo_retorno: se afunção não tiver retorno, utilize a palavra chave void (que signinifca vazio). Ela indica que a função não retornará nenhum dado para a qual foi chamada. Apenas executa um bloco de códigos sem retornar nada.
parâmetros: servem para fornecer dados que a função precisa para executar suas operações. Esses parâmetros podem ser usados dentro do bloco de código de uma função, por meio de variáveis locais, permitindo que a função seja alterada a cada chamada.
retrun: A palavra-chave return em uma função do Arduino (assim como em outras linguagens de programação) é usada para retornar um valor específico para o ponto onde a função foi chamada. Quando a palavra-chave return é encontrada em uma função, ela interrompe a execução da função atual e retorna o valor especificado na declaração da função como resultado da função.
valor_retorno: é o valor que a função produz ou calcula e que deve ser retornado para onde a função foi chamada. Esse valor é opcional e deverá ser utilizado apenas em funções com retorno. Atenção: tipo de dado do valor_retorno será o mesmo que o tipo_retorno definido na sintaxe da função.
No Arduino, as funções podem ser definidas em qualquer lugar dentro do código de programação, mas é comum organizá-las de maneira lógica e estruturada para facilitar a leitura e manutenção do programa, ou seja, antes ou depois das funções principais setup() e loop(). Isso permite separar partes específicas do código em funções para tornar o programa mais legível e fácil de manter.
1. Utilizando funções SEM retorno
1.1. Em Arduino, uma função sem retorno é uma função que não retorna nenhum valor após executar suas instruções. Ela é definida utilizando o tipo void no lugar de um tipo de dado específico que indicaria o valor retornado pela função.
1.1.1. Em programação, void é um tipo de dado especial que indica ausência de valor. Quando usado em uma função, void indica que a função não retorna nenhum valor. Isso significa que a função executa certas instruções, mas não produz ou retorna nenhum dado específico para onde foi chamada.
1.2. Exemplo da utilização de uma função sem retorno e sem parâmetros:
// Função sem retorno e sem parâmetros para acender um LED por um segundo e apagá-lo por um segundo
void piscarLED() {
digitalWrite(LED_BUILTIN, HIGH); // Liga o LED embutido
delay(1000); // Aguarda 1 segundo
digitalWrite(LED_BUILTIN, LOW); // Desliga o LED embutido
delay(1000); // Aguarda 1 segundo
}
void setup() {
pinMode(LED_BUILTIN, OUTPUT); // Configura o LED embutido como saída
}
void loop() {
piscarLED(); // Chama a função piscarLED para acender e apagar o LED
}
1.2.1. Neste exemplo, a função piscarLED() não possui parâmetros entre os parênteses, indicando que ela não recebe nenhum dado específico quando é chamada. Além disso, ela é do tipo void, o que significa que não retorna nenhum valor.
1.2.2. No loop(), a função piscarLED() é chamada repetidamente para acender e apagar o LED embutido na placa Arduino a cada segundo. Esta função executa uma ação específica, mas não retorna nenhum valor após completar sua tarefa.
1.2.2.1. O LED embutido (ou LED interno) está configurado no pino 13 do Arduino Uno .
1.3. Exemplo da utilização de uma função sem retorno e com parâmetros:
// Função sem retorno, mas com parâmetros para piscar um LED
void piscarLed(int pinoLED, int intervalo) {
digitalWrite(pinoLED, HIGH); // Liga o LED
delay(intervalo); // Aguarda um tempo
digitalWrite(pinoLED, LOW); // Desliga o LED
delay(intervalo); // Aguarda outro tempo
}
void setup() {
pinMode(13, OUTPUT); // Define o pino 13 como saída
}
void loop() {
piscarLed(13, 1000); // Chama a função para piscar o LED no pino 13 a cada 1 segundo (1000ms)
}
1.3.1. Em Arduino, uma função sem retorno e com parâmetros é uma função que não retorna nenhum valor após a execução, mas recebe dados ou informações específicas através de parâmetros.
1.3.2. Nesse exemplo, a função piscarLed() não possui um tipo de retorno especificado (void indica que não retorna nenhum valor). No entanto, ela possui dois parâmetros: pinoLed e intervalo.
1.3.3. Quando a função é chamada no loop(), são passados os valores 13
e 1000
como argumentos para pinoLed e intervalo, respectivamente.
1.3.4. Dentro da função, esses parâmetros são utilizados para determinar qual LED será piscado (no pino 13) e qual será o intervalo de piscamento (1000ms).
2. Utilizando funções COM retorno
2.1. Em Arduino, uma função com retorno é uma função que executa determinadas instruções e retorna um valor específico após a conclusão de suas operações. Ela é definida com um tipo de dado específico para indicar o tipo de valor que será retornado quando a função for chamada.
2.2. Exemplo da utilização de uma função com retorno e sem parâmetros:
// Função com retorno, mas sem parâmetros para retornar um valor fixo
int obterNumero() {
int numero = 42; // Valor fixo a ser retornado
return numero; // Retorna o número 42
}
void setup() {
// Código de inicialização, se necessário
}
void loop() {
int valorRetornado = obterNumero(); // Chama a função e armazena o valor retornado
// Usar o valor retornado, por exemplo, imprimir no monitor serial
Serial.begin(9600);
Serial.print("O número retornado é: ");
Serial.println(valorRetornado);
// Aguarda um tempo antes de repetir o loop
delay(1000);
}
2.2.1. Nesse exemplo, int é o tipo de retorno da função obterNumero(), indicando que a função retorna um número inteiro.
2.2.2. A função obterNumero() não possui parâmetros entre os parênteses, indicando que ela não requer nenhuma informação para ser executada. No entanto, ela retorna um número inteiro fixo, que neste caso é 42.
2.2.3. No loop principal loop(), a função obterNumero() é chamada e seu valor retornado é armazenado na variável valorRetornado. Em seguida, esse valor é impresso no monitor serial para demonstrar o número retornado pela função.
2.3. Exemplo da utilização de uma função com retorno e com parâmetros:
// Declara variável global x
int x = 0;
// Função com retorno e com parâmetros para retornar um valor inteiro
int somar(int a, int b) {
int resultado = a + b;
return resultado;
}
void setup() {
// Código de inicialização, se necessário
}
void loop() {
int valorRetornado = somar(x, x*3); // Chama a função somar e armazena o valor retornado
// Usar o valor retornado, por exemplo, imprimir no monitor serial
Serial.begin(9600);
Serial.print("O número retornado é: ");
Serial.println(valorRetornado);
// Acrescenta +1 em x
x++;
// Aguarda um tempo antes de repetir o loop
delay(1000);
}
2.3.1. Uma função com retorno e com parâmetros em Arduino é uma função que aceita informações específicas, conhecidas como parâmetros, e retorna um valor após realizar operações com base nesses parâmetros.
2.3.2. Neste exemplo, int é o tipo de dado de retorno da função somar(), indicando que a função retorna um valor inteiro. Ela aceita dois parâmetros (a e b) do tipo int.
2.3.3. Quando a função é chamada, os valores de a e b são passados como argumentos, cujo o resultado é a soma de a + b.
2.3.4. No loop principal loop(), a função somar() é chamada e seu valor retornado é armazenado na variável valorRetornado. Em seguida, esse valor é impresso no monitor serial para demonstrar o número retornado pela função.
2.3.5. Como definimos os valores de a e b em função da variável x, os valores retornados são variáveis:
3. Documentação oficial
Using Functions in a Sketch - Usando funções em um Sketch
4. Conclusão
Funções são blocos de código reutilizáveis que permitem organizar e modular seu programa.
No Arduino, elas podem receber parâmetros, executar operações específicas e retornar valores, facilitando a escrita de código mais limpo, legível e eficiente.
Ao usar funções, você simplifica a lógica do programa, promove a reutilização de código e torna mais fácil o desenvolvimento de projetos complexos.
É uma boa prática colocar as definições de funções adicionais no início do código, antes das funções setup() e loop(), para que elas sejam reconhecidas quando o programa principal for executado. Isso ajuda a evitar problemas de referência ou declarações de função ausentes durante a execução do programa.
O anúncio abaixo ajuda a manter o Squids Arduino funcionando
Comentários