question sur le code C, quel interet d'avoir plus d'un void ....()

Bonjour et bienvenue

Si tu commence le C tu as du voir que habituellement, dans un programme en C, tu dois écrire la fonction main() qui est appelée le "point d'entrée du programme:

void main()
{
    printf("Hello world!");
}

Dans l'environnement Arduino, afin de prendre en charge certains éléments, la fonction main() est fournie par l'environnement Arduino et on te demande de créer 2 fonctions :
setup() : appellée une fois par l'environnement Arduino et dans laquelle tu dois placer toutes les initialisations qui ne sont à faire qu'une fois.
loop() : appellée en boucle par l'environnement.

En effet, la fonction main() intégrée dans l'environnement est globalement équivalente à :

void main()
{
    setup();

    while( 1 )
        loop();
}

Il y a d'autres choses mais je les évacue pour la simplicité de l'explication.

Le but est de te forcer à faire un programme basé sur une boucle sans fin afin de traiter les évenements.
Généralement ta fonction loop() ressemble à :

void loop()
{
    if (evenement_1)
    {
        // je fais ce qu'il y a faire pour traiter l'evenement 1
        // ....
    }
    if (evenement_2)
    {
        // je fais ce qu'il y a faire pour traiter l'evenement 2
        // ....
    }
    // .... etc 
}

Comme la fonction loop() est appellée en boucle, tu va continuellement tester les evenements.

Si tu as fait un peu de programmation avant, peut être as tu essentiellement fait des programmes de traitements :
Entrée --> Traitement --> Sortie
Il s'agit de programmes linéaires

Avec Arduino, tu va travailler de manière évenementielle.
Un programme deveint alors un ensemble de :

si ( le contexte est xxxx ET l'evenement se produit )
Alors je fais .....

A+