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
}