Pour commander les éléments de l'incubateur (néons, etc) et collecter les données des capteurs (photorésistances par exemple), il faut qu'interface du PC et carte Arduino se comprennent.

En d'autres termes, il faut établir un protocole de communication.
Seulement 3 étapes sont utiles :

A- Demande de connexion
- Le programme Python demande à la carte Arduino si elle est prête à communiquer
- La carte Arduino répond "prête"

B- Envoi de données
- Python envoie des données
- Arduino accuse réception

C- Réception de données
- Python se déclare prêt à recevoir des données
- Arduino envoie les informations

Le code décimal a été choisi pour le codage (voir la table ASCII : American Standard Code for Information Interchange).
Par exemple :
- Python envoie "49" (= caractère "1") à Arduino pour initier le dialogue
- Quand Arduino reçoit ce "49" (décimal), il répond par un "50", qui est interprété comme "prêt" par Python

Ca semble simple comme ça, mais il y a eu quelques difficultés.
Comme le besoin pour Python de trouver en permanence des "retours chariots" sur la liaison série sous peine de blocage de l'IHM.
Ou bien la vitesse de rafraîchissement entrée-sortie : 200 ms côté Arduino, 100 ms côté Python.
Et autres détails de ce genre !!

Ci-dessous une petite illustration.
Petite remarque : les données envoyées par Python apparaissent en tant que caractère et non en tant que donnée décimale dans l'IHM.