Faire varier l'intensité lumineuse de led

Hello à tous !

Après avoir testé avec brio la solution simple et et redoutable de fdufnews, j'expérimente l'I2C avec des MCP23017. Le fonctionnement étant différent, comment peut-on faire varier l'intensité de chaque/toutes les sorties sur un IC2 ?

D'après mes tests, chacune des 16 entrées/sorties du MPC ne sont pas PWM.
Y a t'il une solution pour faire varier l'intensité comme on peut le faire avec l'Output Enable du 74HC475 ?

Merci pour vos réponses !

Le code testé d'après le tuto wiki.mchobby.be MCP23017

/* Exemple SeveralMCP23017.pde
   Utilise la librairie Adafruit-MCP23017 pour démontrer l'utilisation de plusieurs MCP23017 sur
   un seul bus I2C. 
   
   Code écrit par Meurisse D. pour MCHobby.be [www.mchobby.be], Licence CC-BY-SA
   
   TUTORIEL complémentaire EN FRANCAIS par MCHobby.be sur (voir wiki pour licence tutoriel)
      http://mchobby.be/wiki/index.php?title=MCP23017

   Acheter un MCP23017
      http://shop.mchobby.be/product.php?id_product=218
*/
   
#include <Wire.h>
#include "Adafruit_MCP23017.h"

// Test de base d'ecriture d'état pour trois "MCP23017 I/O expander" partageant un même bus I2C
//
// Raccordements: http://mchobby.be/wiki/index.php?title=MCP23017-Plusieurs
Adafruit_MCP23017 mcp1;
Adafruit_MCP23017 mcp2;
Adafruit_MCP23017 mcp3;

void setup() {
  Serial.begin(9600);      // open the serial port at 9600 bps:   
  
  mcp1.begin(5); // Utilise l'adresse 5 pour IC1
  mcp2.begin(6); // Utilise l'adresse 6 pour IC2
  mcp3.begin(7); // Utilise l'adresse 7 pour IC3


  mcp1.pinMode(0, OUTPUT);   // Définir la sortie #0 (GPA 0, broche 21) sur IC1 comme sortie
  mcp1.pinMode(1, INPUT); // Activer GPA1 comme entrée
  mcp1.pullUp(1, HIGH);   // Activer la résistance Pull-Up interne de 100K


  // Définir la sortie #1 (GPA 1, broche 22) sur IC2 comme sortie
  mcp2.pinMode(1, OUTPUT); 
  // Définir la sortie #6 (GPA 6, broche 27) sur IC3 comme sortie
  mcp3.pinMode(6, OUTPUT); 


  pinMode(13, OUTPUT);  // Utiliser la LED sur la Broche 13 pour faire du débogage.
  Serial.println("Test Start");
}


// Activer/désactiver la sortie #0 du MCP toutes les 100 millisecondes

void loop() {
  Serial.println("Allumage");

  mcp1.digitalWrite(0, HIGH); // Activer sortie sur IC1
  digitalWrite(13, HIGH);
  
  delay(500); // Attendre 1000ms
  
  digitalWrite(13, LOW);
  mcp1.digitalWrite(0, LOW); // Désactiver sortie sur IC1
  Serial.println(mcp1.digitalRead(1));
  
  delay(500); // Attendre 1000ms
}