Até agora, temos escrito nosso código dentro das funções de configuração e loop. Isso está perfeitamente bem. Mas e se seu programa tivesse muita lógica complexa? Como você organizaria seu código?
Há uma arte para programar e ela começa com saber onde colocar seu código.
A codificação pode ficar complicada às vezes. Se você já leu algum código de código aberto, você pode encontrar algum código que:
Programas em qualquer idioma podem ser escritos e organizados, no entanto, o programador vê adequado. Isso é bom se você for o único lendo seu código. No entanto, se você estiver trabalhando em uma equipe, é importante fornecer algumas diretrizes que todos seguem. Um dia, o código que você escreve precisará ser atualizado e lido por outras pessoas. Escrever um código organizado e praticar práticas comuns de codificação ajudará você e seu colega engenheiro a escrever um código bonito.
Para obter dicas sobre como melhorar seu estilo de codificação, confira o guia de estilo de codificação C++ do Google.
Há dois tipos de funções:
Consulte mais na seção Tipos de Dados na página de referência arduino.
Tipos de função
Type void:
void sayHello(){
Serial.println("Hello!");
}
Type integer:
int theAnswerToTheUltimateQuestionOfLifeTheUniverseAndEverything(){
return 42;
}
We can assign the value of functions that return something to variables:
int myAnswer = theAnswerToTheUltimateQuestionOfLifeTheUniverseAndEverything();
Digamos que queríamos tornar uma função um pouco mais útil. Podemos usar parâmetros de função para passar dados exclusivos que afetarão o resultado da função. Por exemplo:
int add(int x, int y){
return x + y;
}
Chamamos essa função, passando parâmetros personalizados assim:
int numbersAdded = add(2, 2); // The variable numbersAdded is equal to 4
Há uma variedade de maneiras que você pode escrever uma função. Tudo depende do que você quer que ele faça. Um bom lugar para começar a escrever uma função personalizada é definir a assinatura da função.
Assinatura da função
Antes de escrever o código de uma função, é melhor determinar o que você está tentando realizar.
Vamos fingir que você está escrevendo um programa que fornece uma mensagem personalizada para o monitor serial. Esta mensagem comentará sobre o tempo (que pode ser baseado em um sensor de temperatura, por exemplo).
Você ainda não sabe como é o código dentro da função, mas sabe o que quer que ele faça:
Nossa assinatura pode parecer algo assim:
void myMessage (String msg1, String msg2, double deg){}
Chamar a função seria algo como:
Os graus aqui seriam uma variável predefinida com base em uma leitura do sensor de temperatura.
myMessage("É", graus, "fora");
Desafio
Como você escreveria o código para concluir a tarefa desta função?