loop void seguido por outras “ void ” expressões

I espero que seja uma simples solicitação de um novato ao Arduino e à programação. Eu entendi que uma vez que um programa entra em uma seção de loop vazio, ele executa um loop indefinidamente. No entanto, recentemente vi exemplos de sketches onde outra seção void $$$$$ segue o fechamento (por}) do loop void. Enquanto escrevo isto, estou olhando para um exemplo relativo a um display de 7 segmentos onde “void Num_Write (int)” segue o fechamento do loop void. Se a seção “loop” faz exatamente isso, como fui levado a crer, como uma seção seguinte é acessada?

Obrigado, Rob

Comentários

Resposta

O void loop() seção é uma função, o mesmo que void setup() é uma função. Ao iniciar o programa Arduino de outra função, que você não consegue ver no IDE, chame setup() e depois chame loop() repetidamente.

Estas outras funções que você viu, ou seja, void Num_Write(int n) podem ser chamadas de setup() ou loop() e eles irão executar suas instruções antes de retornar à função que os chamou. Também é possível que Num_Write() possa chamar outras funções antes de retornar o controlador para a função que chamou .

O tipo void é usado para representar nada (na verdade é mais complexo do que isso, mas para este nível de explicação nada servirá). Outras funções podem retornar outros tipos int, char, bool por exemplo. Portanto, se tivéssemos uma função assim:

int theMeaningOfLife(void) { return 42; } 

Esta é uma função que retorna um int (um umber), então você a chamaria assim:

void setup() { int number = theMeaningOfLife(); } 

Há um problema, a função deve ser declarada ANTES de ser usada, isso permite que o compilador sabe a que você está se referindo. A maneira mais simples de fazer isso é escrever a função acima da função que a está chamando. A segunda maneira é apenas escrever a assinatura da função acima da função usando-a, ou seja:

int theMeaningOfLife(void); void setup() { int number = theMeaningOfLife(); } 

A melhor maneira (mas nem sempre prática em um Arduino ) é ter todas as declarações de função em um arquivo de cabeçalho (.h) e o código em um arquivo .cpp. (Dê uma olhada na biblioteca para ver o que quero dizer).

Resumo

Há apenas uma função que é chamada repetidamente e é a loop função. Só porque uma função retorna void não significa que vai repetir repetidamente.

Comentários

  • Você escreveu: “ a função deve ser declarada ANTES de ser usada ”. Na verdade, o IDE do Arduino executa seu código por meio de uma etapa de pré-processamento que faz isso para você, o que significa que você não precisa fazer isso sozinho. Eu ainda consideraria uma boa prática seguir essa regra, apenas porque ela torna o código compilável fora do IDE, por exemplo, com um Makefile .
  • @EdgarBonet – Obrigado, nunca soube disso. Acho que devo esquecer, caso contrário, ' começarei a tentar no trabalho e acabarei arrancando meus cabelos tentando descobrir por que [ele] ganhou ' t compilar. 🙂

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *