Utilisation de l'I2C.

Bonjour,

Je suis sur un projet de gestion d'aquarium. Avec un écran tactile. Malheureusement l’écran tactile utilise pratiquement toutes les IO et une partie des PWM.

Je me suis fait une carte de sortie 16 relais piloter en I2C. Cela fonctionne bien, et il me semble que l'on peu utiliser les entrées analogique pour des entrée IO. Mais malgré cela il va me manquer des sorties PWM.

Au départ je pensais utiliser un 2eme arduino pour cette gestion. aillant un arduino nano en stock. Puis j'ai eue une autre idée. C'est d'utiliser un autre arduino MEGA. L'un pouvant être déporté avec l'afficheur sur la rampe d'éclairage pour la gestion des LED en PWM, des ventilateurs de refroidissement et c'est tout. Ensuite le 2eme s'occupe de la gestion de tout le reste, oscillateurs, PH, REDOX, Osmolation etc.

La communication entre les 2 se faisant par I2C que je ne maîtrise pas encore très bien. J'arrive donc à communiquer sans souci avec l’horloge et mes sorties relais. Mais je voudrais savoir s'il y a des contraintes:
Par exemple, il n'y a qu'un maître et plusieurs esclaves il me semble?
Est-ce qu'un esclave peux envoyer de son propre chef des données aux Maître?
Est-ce que le maître et l'esclave peuvent interroger l'horloge?
Est-ce que l'esclave peux commander les 16 relais en I2C (même si du coup je devrais pas en avoir besoin puisque j'attaquerais directement la commande des relais avec les IO)
Si la précédente est pas possible est-ce qu'il peux y avoir 2 maîtres.
Si les 2 dernières sont pas possible il faut alors que le maître interroge le 2eme esclave puis en fonction de la réponse il pilote les relais.

Et+ si vous voyez d'autre contrainte (distance, perturbation etc...).

Merci

Le forum bégueille ?
Il me semble que c'est un 2eme envoi du même message.

Je vais répondre à un certain nombre de tes questions.
Pas besoin d'être un gourou de l'I2C, toutes les réponses peuvent être obtenues en lisant de la doc sur l'I2C : google "I2C" ça marche super bien.

il n'y a qu'un maître et plusieurs esclaves il me semble?

Faux. Il peut y avoir plusieurs maîtres, mais la cacophonie n'est pas autorisée,1 seul maître à la fois, les autres attendent que le premier ai fini.

Est-ce qu'un esclave peux envoyer de son propre chef des données aux Maître?

Non, seul les maîtres peuvent prendre des initiatives, les esclaves ne parlent que s'ils sont questionnés par un maître.

Est-ce que le maître et l'esclave peuvent interroger l'horloge?

Pas compris la question. C'est le maître qui génère l'horloge : donc on peut penser qu'il sait ce qu'il fait. Les esclaves subissent : normal pour des esclaves.
Quand un maître libère le bus, il devient esclave et subi l'horloge du nouveau maître -> ça c'est ce que j'ai compris, jamais essayé.

Est-ce que l'esclave peux commander les 16 relais en I2C

Ca ne dépend que des capacités de ton esclave.

Si la précédente est pas possible est-ce qu'il peux y avoir 2 maîtres

Déjà répondu : autant qu'on veux dans la limite de la norme.

Une saine lecture : la norme officielle I2C.
http://www.nxp.com/documents/user_manual/UM10204.pdf

Merci pour ces informations, cela m’éclaire un peu en ce jour de grisaille.

En ce qui concerne l'horloge.

J'imaginais un maître qui gère mon écran tactile, des ventilateurs, des Drivers de LED et d'autres bricoles, il peut interroger l’horloge comme je fait actuellement.
Le maître grâce à l'interface graphique puisse envoyer des consignes (la configuration) à un 2eme arduino en tant qu'esclave. Par exemple tel pompe sur tel pin, l'oscilateur 1 sur la pin 13 etc.. la configuration quoi.

Ensuite le 2ene que je voyais en esclave, serait autonome. Il exécute son programme sans forcement attendre des instructions du maître. Il pourrait donc aussi interroger l'horloge et piloter les relais de la carte en I2C, mais vu qu'une carte esclave ne prend pas la décision de parler elle devra donc pas être esclave mais maître elle aussi. Puisque l'on peut, pas de souci. il me reste donc à tester tout sa.

Si j'ai fait un double post, désoler car j'ai cru poster le message et je me suis retrouvé sur la même page avec le bouton Post et Preview. J'ai donc cliquer de nouveau sur Post. Bug du site ou moi qui n'a pas cliquer au bon endroit la 1er fois ...

On ne parlait pas de la même horloge :grin:.
Comme tu demandais des renseignements sur l'I2C je répondais au sujet de l'horloge qui rythme l'envoi des données et je m'aperçois que tu parles de l'horloge de la "tocante" comme une DS1307.
Bien sur que le circuit horloge DS1307 peut être interrogé quand on veut.

Concernant "mon horloge", l'I2C est constituée de 2 fils : le fil pour les données et le fil pour l'horloge qui rythme les données.
Le plus couramment l'horloge est égale à 100 ou 400kHz.
La librairie "Wire" la fixe à 100kHz.

Merci pour l'information. Bonne journée