Bonjour,
Je souhaiterais vous parler d’un Shield que j’ai utilisé dans ma sculpture OvoMetrix: Le Shield Adafruit 16-Channel 12-bit PWM / Servo Driver – I2C interface – PCA9685
Lors de la conception de ma sculpture, j’ai décidé de l’agrémenter de 13 leds dans le but de pouvoir créer des paterns lumineux.
De plus, j’ai trouvé intéressant de réutiliser les vu-mètres d’origines des deux multimètres. Par ailleurs, j’ai souhaité avoir la possibilité de contrôler la luminosité des leds et la valeur des vu-mètres. Pour cela, je me suis naturellement dirigé vers l’utilisation des sorties PWM de l’arduino Uno.
Les sorties PWM, pour Pulse Witdh Modulation permettent de synthétiser un signal analogique grâce à la modulation de largeur d’impulsions (source).
Cependant, l’arduino Uno ne délivre que 6 sorties PWM. Dans mon cas, il me fallait 15 sorties PWM (13 pour les leds et 2 pour les vu-mètres).
J’ai choisi la solution de la société Adafruit (qui fait d’excellents produits et de superbes tutoriaux): Le Shield Adafruit 16-Channel 12-bit PWM / Servo Driver – I2C interface – PCA9685
Ce petit Shield qui coûte une quinzaine d’Euros, permet, en quelques sorte, d’ajouter 16 sorties PWM à votre arduino. Il s’interface très facilement à l’arduino via le bus I2C. Il suffit de le brancher de la manière suivante:
– la pin GND du Shield à la pin GND de l’arduino
– la pin VCC du Shield à la pin +5V de l’arduino
– la pin SCL du Shield à la pin A5 de l’arduino
– la pin SDA du Shield à la pin A4 de l’arduino
NB: Il est possible de lier plusieurs de ces Shields entre eux (jusqu’à 62!), grâce aux pins que l’on retrouvent de manière identique de chaque côtés du Shield.
NB2: Il est possible de modifier l’adresse I2C du Shield grâce à un système de jumper soudable.
Ensuite, il ne reste plus qu’a brancher les éléments sur chaque canaux.
Côté code, tout est simplifié grâce à la librairie fournie par Adafruit. On utilise principalement la commande suivante:
pwm.setPWM(canal, 0, value);
On fourni le canal sur lequel on souhaite lancer la modulation, et la valeur désirée entre 0 (led éteinte) et 4095 (led allumée au max).
Ainsi, il est possible de contrôler la variation lumineuse des 13 leds et la variation des deux vu-mètres.
Un exemple de code: http://pastebin.com/aJyWFbuN
Les photos du Shield et la petite vidéo: