switch fin de course

comment inverser le sens avec un seul relais? Je n'ai pas trouvé

Il faut effectivement un relais spécial, mais avec deux relais seulement, on fait les deux sens et l'arrêt:

Avec le montage ci-dessus:
Relais 1 au repos (= comme dessiné) et relais 2 au repos(= comme dessiné) : moteur arrêté
Relais 1 au repos et relais 2 alimenté : moteur tourne dans un sens
Relais 1 alimenté et relais 2 au repos : moteur tourne dans l'autre sens
Relais 1 alimenté et relais 2 alimenté : moteur arrêté, mais ne sert à rien dans notre cas (on n'en a pas besoin).
Il n'y a pas besoin du troisième relais.

Si tu prend un relais avec double contacts inverseur tu constitues un pont en H.

Le schéma ci-dessus est un pont en H. Pas besoin d'avoir un double contact qui nécessiterait d'avoir un deuxième relais pour arrêter le moteur. Avec un pont en H à transistors et à 4 commandes, on peut en plus déconnecter le moteur, ce qui permet la roue libre. Avec les contacts commandés 2 par 2, on n'a pas la roue libre on a un freinage.

Par rapport au .ino ou il y a 3 relais A, B et C, deux suffisent. Du coup on n'a pas besoin du delay(50) pour éviter un démarrage invrersé.

Dans ce type de problème, je conseille d'écrire (de réécrire) la commande pour la position 0°, puis pour la position 30°, et quand elle est au point, on rajoute la position 15°. Pour les deux positions extrêmes, le sens du moteur est toujours le même, c'est plus facile. Pour la position centrale le sens du moteur rajoute une difficulté, donc à voir après.