Bonjour,
Pour un projet, j aimerai mesurer l état de 64 interrupteurs. J ai choisi d utiliser 4 SparkFun Analog/Digital MUX Breakout - CD74HC4067 - Link
Donc 4x16, je suis bon. Je peux contrôler les 64 interrupteurs avec 9 pin Arduino.
Les quatre MUX on les PIN SIG, S0, S1, S2, S3 reliés.
const byte MUX_ADDR [4] = {A3, A2, A1, A0};
const byte MUX_ENABLE [4] = {11, 10, A6, A7};
const byte MUX_SIG (12);
const byte MUX_CHANNEL[16][4] = {
{0, 0, 0, 0},
{1, 0, 0, 0},
{0, 1, 0, 0},
{1, 1, 0, 0},
{0, 0, 1, 0},
{1, 0, 1, 0},
{0, 1, 1, 0},
{1, 1, 1, 0},
{0, 0, 0, 1},
{1, 0, 0, 1},
{0, 1, 0, 1},
{1, 1, 0, 1},
{0, 0, 1, 1},
{1, 0, 1, 1},
{0, 1, 1, 1},
{1, 1, 1, 1}
};
void setup() {
Serial.begin(9600);
for (byte i = 0; i < 4; i++) {
pinMode (MUX_ADDR [i], OUTPUT);
digitalWrite(MUX_ADDR [i], LOW);
pinMode (MUX_ENABLE [i], OUTPUT);
}
pinMode (MUX_SIG, INPUT_PULLUP);
digitalWrite(MUX_ENABLE [0], HIGH);
digitalWrite(MUX_ENABLE [1], HIGH);
digitalWrite(MUX_ENABLE [2], HIGH);
digitalWrite(MUX_ENABLE [3], LOW);
}
void loop() {
Serial.println("");
Serial.println("01\t02\t03\t04\t05\t06\t07\t08\t09\t10\t11\t12\t13\t14\t15\t16");
Serial.println("--\t--\t--\t--\t--\t--\t--\t--\t--\t--\t--\t--\t--\t--\t--\t--");
for (int i = 0; i < 16; i++) {
digitalWrite(MUX_ADDR [0], MUX_CHANNEL [i][0]);
digitalWrite(MUX_ADDR [1], MUX_CHANNEL [i][1]);
digitalWrite(MUX_ADDR [2], MUX_CHANNEL [i][2]);
digitalWrite(MUX_ADDR [3], MUX_CHANNEL [i][3]);
Serial.print(digitalRead(MUX_SIG));
Serial.print("\t");
}
delay(3000);
}
J active les MUX les uns après les autres en activant et de-activant les pin enable. Une partie des pin sont connecté a des port digitaux et l autre partie a des ports analogique.
Avec les ports digitaux aucun problème, Mais avec les port analogique je n arrive pas a désactiver les MUX.
HIGH pour de-activer et LOW pour activer.
J ai essayé avec analogWrite, mais ça ne change rien.
Je pensais pas avoir ce problème et j ai déjà soudé tous mes composants, galère de changer les connexions de plus j aimerai bien comprendre pourquoi ça réagi comme ça.
Auriez une idee ?
Merci