Bonjour,
C'est mon premier message pour demander de l'aide.
Je vous explique:
Actuellement j'ai un arduino mega avec 50 boutons et ca fonctionne très bien
mais je souhaiterais utiliser des multiplexer 74hc4067 pour pouvoir me servir d'un arduino nano
ca fais 2 semaine que je cherche et j'ai rien trouver, je n'y arrive pas
est ce que quelqu'un peut m'aider a intégrer dans mon code les multiplexer
Voici mon code
un grand merci a ceux qui pourrons m'aider
int Pot;
int Pot2;
int timeLong = 1000;
int timeBreak = 1000;
const byte maxButton = 50; // number of buttons
const byte pinPushButton[maxButton] = {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51}; // the Arduino pins
byte message[] = {0x82};
// ------------------------------------------------------------------------
// --- Setup
// --------------------------------------------------------------------------
void setup() {
Serial.begin(38400);
// --- initialize push button pins as inputs with pull-ups
for (byte i=0; i<maxButton; i++) {
pinMode(pinPushButton[i], INPUT_PULLUP);
}
}
// --------------------------------------------------------------------------
// --- Main loop
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
void loop() {
static unsigned long previousTime = 0;
const byte timeInterval = 0; // pick a short time interval, you don't have to
// check the button with 10kHz
byte a[maxButton] = {}; // array to store the latest readings
// - check all buttons
if ((millis()-previousTime) > timeInterval) {
previousTime = millis();
for (byte i=0; i<maxButton; i++) {
a[i] = checkButtons(i);
}
if (a[0] == 1) {
Serial.print( "\x80\x2b\x01");
}
if (a[0] == 2) {
Serial.print( "\x90\x2b\x7F");
}
if (a[1] == 1) {
Serial.print( "\x80\x2c\x01");
}
if (a[1] == 2) {
Serial.print( "\x90\x2c\x7F");
}
if (a[2] == 1) {
Serial.print( "\x80\x2d\x01");
}
if (a[2] == 2) {
Serial.print( "\x90\x2d\x7F");
}
if (a[3] == 1) {
Serial.print( "\x80\x2e\x01");
}
if (a[3] == 2) {
Serial.print( "\x90\x2e\x7F");
}
if (a[4] == 1) {
Serial.print( "\x80\x2f\x01");
}
if (a[4] == 2) {
Serial.print( "\x90\x2f\x7F");
}
if (a[5] == 1) {
Serial.print( "\x80\x30\x01");
}
if (a[5] == 2) {
Serial.print( "\x90\x30\x7F");
}
if (a[6] == 1) {
Serial.print( "\x80\x31\x01");
}
if (a[6] == 2) {
Serial.print( "\x90\x31\x7F");
}
if (a[7] == 1) {
Serial.print( "\x80\x32\x01");
}
if (a[7] == 2) {
Serial.print( "\x90\x32\x7F");
}
if (a[8] == 1) {
Serial.print( "\x80\x33\x01");
}
if (a[8] == 2) {
Serial.print( "\x90\x33\x7F");
}
if (a[9] == 1) {
Serial.print( "\x80\x34\x01");
}
if (a[9] == 2) {
Serial.print( "\x90\x34\x7F");
}
if (a[10] == 1) {
Serial.print( "\x80\x35\x01");
}
if (a[10] == 2) {
Serial.print( "\x90\x35\x7F");
}
if (a[11] == 1) {
Serial.print( "\x80\x36\x01");
}
if (a[11] == 2) {
Serial.print( "\x90\x36\x7F");
}
if (a[12] == 1) {
Serial.print( "\x80\x37\x01");
}
if (a[12] == 2) {
Serial.print( "\x90\x37\x7F");
}
if (a[13] == 1) {
Serial.print( "\x80\x38\x01");
}
if (a[13] == 2) {
Serial.print( "\x90\x38\x7F");
}
if (a[14] == 1) {
Serial.print( "\x80\x39\x01");
}
if (a[14] == 2) {
Serial.print( "\x90\x39\x7F");
}
if (a[15] == 1) {
Serial.print( "\x80\x3a\x01");
}
if (a[15] == 2) {
Serial.print( "\x90\x3a\x7F");
}
if (a[16] == 1) {
Serial.print( "\x80\x3b\x01");
}
if (a[16] == 2) {
Serial.print( "\x90\x3b\x7F");
}
if (a[17] == 1) {
Serial.print( "\x80\x3c\x01");
}
if (a[17] == 2) {
Serial.print( "\x90\x3c\x7F");
}
if (a[18] == 1) {
Serial.print( "\x80\x3d\x01");
}
if (a[18] == 2) {
Serial.print( "\x90\x3d\x7F");
}
if (a[19] == 1) {
Serial.print( "\x80\x3e\x01");
}
if (a[19] == 2) {
Serial.print( "\x90\x3e\x7F");
}
if (a[20] == 1) {
Serial.print( "\x80\x3f\x01");
}
if (a[20] == 2) {
Serial.print( "\x90\x3f\x7F");
}
if (a[21] == 1) {
Serial.print( "\x80\x40\x01");
}
if (a[21] == 2) {
Serial.print( "\x90\x40\x7F");
}
if (a[22] == 1) {
Serial.print( "\x80\x41\x01");
}
if (a[22] == 2) {
Serial.print( "\x90\x41\x7F");
}
if (a[23] == 1) {
Serial.print( "\x80\x42\x7F");
}
if (a[23] == 2) {
Serial.print( "\x90\x42\x7F");
}
if (a[24] == 1) {
Serial.print( "\x80\x43\x7F");
}
if (a[24] == 2) {
Serial.print( "\x90\x43\x7F");
}
if (a[25] == 1) {
Serial.print( "\x80\x44\x7F");
}
if (a[25] == 2) {
Serial.print( "\x90\x44\x7F");
}
if (a[26] == 1) {
Serial.print( "\x80\x45\x7F");
}
if (a[26] == 2) {
Serial.print( "\x90\x45\x7F");
}
if (a[27] == 1) {
Serial.print( "\x80\x46\x7F");
}
if (a[27] == 2) {
Serial.print( "\x90\x46\x7F");
}
if (a[28] == 1) {
Serial.print( "\x80\x47\x7F");
}
if (a[28] == 2) {
Serial.print( "\x90\x47\x7F");
}
if (a[29] == 1) {
Serial.print( "\x80\x48\x7F");
}
if (a[29] == 2) {
Serial.print( "\x90\x48\x7F");
}
if (a[30] == 1) {
Serial.print( "\x80\x49\x7F");
}
if (a[30] == 2) {
Serial.print( "\x90\x49\x7F");
}
if (a[31] == 1) {
Serial.print( "\x80\x4a\x7F");
}
if (a[31] == 2) {
Serial.print( "\x90\x4a\x7F");
}
if (a[32] == 1) {
Serial.print( "\x80\x4b\x7F");
}
if (a[32] == 2) {
Serial.print( "\x90\x4b\x7F");
}
if (a[33] == 1) {
Serial.print( "\x80\x4c\x7F");
}
if (a[33] == 2) {
Serial.print( "\x90\x4c\x7F");
}
if (a[34] == 1) {
Serial.print( "\x80\x4d\x7F");
}
if (a[34] == 2) {
Serial.print( "\x90\x4d\x7F");
}
if (a[35] == 1) {
Serial.print( "\x80\x4e\x7F");
}
if (a[35] == 2) {
Serial.print( "\x90\x4e\x7F");
}
if (a[36] == 1) {
Serial.print( "\x80\x4f\x7F");
}
if (a[36] == 2) {
Serial.print( "\x90\x4f\x7F");
}
if (a[37] == 1) {
Serial.print( "\x80\x50\x7F");
}
if (a[37] == 2) {
Serial.print( "\x90\x50\x7F");
}
if (a[38] == 1) {
Serial.print( "\x80\x51\x7F");
}
if (a[38] == 2) {
Serial.print( "\x90\x51\x7F");
}
if (a[39] == 1) {
Serial.print( "\x80\x52\x7F");
}
if (a[39] == 2) {
Serial.print( "\x90\x52\x7F");
}
if (a[40] == 1) {
Serial.print( "\x80\x53\x7F");
}
if (a[40] == 2) {
Serial.print( "\x90\x53\x7F");
}
if (a[41] == 1) {
Serial.print( "\x80\x54\x7F");
}
if (a[41] == 2) {
Serial.print( "\x90\x54\x7F");
}
if (a[42] == 1) {
Serial.print( "\x80\x55\x7F");
}
if (a[42] == 2) {
Serial.print( "\x90\x55\x7F");
}
if (a[43] == 1) {
Serial.print( "\x80\x56\x7F");
}
if (a[43] == 2) {
Serial.print( "\x90\x56\x7F");
}
if (a[44] == 1) {
Serial.print( "\x80\x57\x7F");
}
if (a[44] == 2) {
Serial.print( "\x90\x57\x7F");
}
if (a[45] == 1) {
Serial.print( "\x80\x58\x7F");
}
if (a[45] == 2) {
Serial.print( "\x90\x58\x7F");
}
if (a[46] == 1) {
Serial.print( "\x80\x59\x7F");
}
if (a[46] == 2) {
Serial.print( "\x90\x59\x7F");
}
if (a[47] == 1) {
Serial.print( "\x80\x5a\x7F");
}
if (a[47] == 2) {
Serial.print( "\x90\x5a\x7F");
}
if (a[48] == 1) {
Serial.print( "\x80\x5b\x7F");
}
if (a[48] == 2) {
Serial.print( "\x90\x5b\x7F");
}
if (a[49] == 1) {
Serial.print( "\x80\x5c\x7F");
Serial.print( "\xb8\x40\x01");
}
if (a[49] == 2) {
Serial.print( "\x90\x5c\x7F");
Serial.print( "\xb8\x40\x7F");
}
}
}
// -----------------------------------------------------------------
// ---------------------------------------------------------------------------------
// --- check one button for short or long push
// ---------------------------------------------------------------------------------
// returns: 0-none 1-short 2-long
//
byte checkButtons(byte buttonNo) {
// Pot = analogRead(A0);
// Pot2 = analogRead(A1);
// timeBreak = map(Pot, 0, 450, 0, 55);
//timeLong = map(Pot2, 0, 450, 0, 55);
const unsigned long timeDebounce = 0; // time to debounce
// before ready for next press
static byte state[maxButton] = {}; // this initializes all elements to zero
static unsigned long previousTime[maxButton] = {};
byte r = 0;
r = 0; // 0:not 1:short 2:long
if (state[buttonNo] == 0) { // --- no button has been pressed - check if
if (digitalRead(pinPushButton[buttonNo]) == LOW) {
previousTime[buttonNo] = millis();
state[buttonNo] = 1;
}
} else if (state[buttonNo] == 1) { // --- button was pressed - check for how long
if ( (millis()-previousTime[buttonNo]) > timeDebounce) {
if ( (millis()-previousTime[buttonNo]) < timeLong) {
if ( digitalRead(pinPushButton[buttonNo]) == HIGH) { // released -> short press
previousTime[buttonNo] = millis();
state[buttonNo] = 2;
}
} else { // it was a long press
state[buttonNo] = 2;
r = 2;
}
}
} else if (state[buttonNo] == 2) { // --- wait for long button press to end
if (digitalRead(pinPushButton[buttonNo]) == HIGH) {
previousTime[buttonNo] = millis();
state[buttonNo] = 3;
}
} else if (state[buttonNo] == 3) { // --- wait a little while after previous button press
if ( (millis()-previousTime[buttonNo]) > timeBreak) {
state[buttonNo] = 0;
r = 1;
}
else if (digitalRead(pinPushButton[buttonNo]) == LOW) {
previousTime[buttonNo] = millis();
state[buttonNo] = 3;
}
}
return r;
}