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...).

La communication se fait seulement de maître a esclave, et c'est le maître qui demande les infos a l'esclave avec Wire.requestFrom( addresse, nbits);

C'est un peut overkill d'utilisé une autre carte pour cela, il a des AVR style ATtiny 85, 2313 qui gère très bien l'i2c.

Bonjour,

Un circuit PWM dans ce genre ne sera pas plus simple à mettre en œuvre ?

Utiliser une 2ème carte arduino pour faire de la PWM en I2C c'est un peu bourrin comme solution ...

Il y a deux sujets dans le topic :

  1. le choix d'une deuxième carte à micro-controleur pour avoir des sorties PWM est-il le plus astucieux.
    Des éléments de réponse sont d'ores et déjà donnés.

  2. Un sujet beaucoup plus vaste qui est la gestion de l'I2C avec plusieurs maîtres sur le bus et donc la gestion de l'arbitrage puisque l'I2C ne supporte qu'un seul maître à la fois.
    Je pense que des éclaircissement de ceux qui ont déjà fait l'expérience de plusieurs maîtres sur le même bus seraient les bienvenus.
    Il me semble avoir compris que la classe TwoWire gère l'arbitrage mais une confirmation serait la bienvenue.

Merci pour ces infos, je vais regarder le lien, et désoler car j'ai fait un double post par erreur ou bug.

skywodd:
Bonjour,

Un circuit PWM dans ce genre ne sera pas plus simple à mettre en œuvre ?
Adafruit 16-Channel 12-bit PWM/Servo Driver - I2C interface [PCA9685] : ID 815 : $14.95 : Adafruit Industries, Unique & fun DIY electronics and kits

Utiliser une 2ème carte arduino pour faire de la PWM en I2C c'est un peu bourrin comme solution ...

C'est exactement ce que je cherchais, donc plus besoin de 2eme arduino. Merci