Je ne te cacherais pas que je me suis perdu en lisant ton code.
La quantité de variables MxShxx me semble un peu too much.
Admettons que les 4 LDR sont disposées en croix avec un masque lui-même composé d'une croix pour les isoler l'une de l'autre.
On a 2 LDR pour l'axe X et 2 pour l'axe Y
Au final, qu'est-ce qu'il faut faire?
- pour chaque axe, si l'une des 2 LDR reçoit plus de lumière que l'autre il faut se déplacer dans la direction de celle qui est le plus illuminée jusqu'à ce que l'on ait sensiblement la même luminosité sur les 2.
- on fait la même chose pour le second axe.
Autre chose, tu fais des comparaisons avec un seuil fixe pour déterminer si une LDR reçoit de la lumière ou pas. Ce seuil fixe va fonctionner un jour pour une condition d'éclairement donné mais ne fonctionnera pas le lendemain (voir même une heure plus tard) si les conditions sont différentes.
Il vaut mieux travailler en calculant la différence des valeurs retournées par les 2 capteurs d'un axe.
- si la valeur absolue de la différence est faible (seuil à déterminer empiriquement) on peut considérer que l'on est bien aligné et on ne fait rien
- si la différence est importante et positive on tourne dans un sens
- si la différence est importante et négative on tourne dans l'autre sens
Il faudra aussi peut-être considérer des cas particuliers comme le niveau moyen de la luminosité retourné par les 4 capteurs. Si cette moyenne est faible (peut-être qu'il fait nuit, que le soleil est masqué ou que l'on tourne le dos au soleil)