Bonjour,
Je ne comprends pas la nécessité d'un 74HC595. Ce serait bien d'avoir un schéma de l'ensemble de ton projet, pour pouvoir en discuter plus facilement.
Concernant le PWM, si on utilise un seul module PCA9685, il génère ses PWM à partir de son horloge interne et ne dépend donc pas de l'Arduino pour ça. Arduino doit seulement lui indiquer, via le bus I2C, quelle fréquence et quel rapport cyclique on veut.
Si on a plusieurs modules et qu'on veut qu'ils soient synchrones, il faut relier leurs fils d'horloge ensemble et les connecter à une horloge externe. (Je lis ça dans les spécifications mais que je ne l'ai jamais fait).
Un PWM généré par Arduino doit alors convenir pour servir d'horloge.
Il me reste un PCA9685 dans mes tiroirs. Je vais tester cette histoire de synchronisation dans les jours qui viennent et je te dirai ce qu'il en est.
Dans le cas de ton projet, je pense que tu pourrais utiliser un seul PCA9685 pour générer les PWM de 16 L298. Je suppose qu'il attaquerait les broches En (schéma?).
Les autres fils des L298 (je suppose qu'ils servent à commander le sens de marche?) n'ont pas besoin d'être synchrones avec quoi que ce soit. On peut donc soit les commander depuis d'autres PCA9685 "autonomes", soit simplement depuis l'Arduino lui-même.
Quant aux signaux, bien sûr qu'on peut les commander depuis des PCA9685. C'est une solution que j'envisage pour le réseau dont je t'ai envoyé le lien.
À propos des relais, à titre anecdotique: mon réseau personnel a 32 cantons et peut accepter 7 trains. Chaque train a son alim qui le suit de canton en canton. Pour commuter les alims vers les cantons j'utilise des sélecteurs téléphoniques miniatures. Chaque sélecteur est l'équivalent de 128 relais à quatre contacts. Inutile de dire que je ne recommanderais pas cette solution pour un nouveau réseau. Mais elle m'a permis, en remplaçant une des alims traction par une centrale DCC, de le convertir au digital.