enfaîte a la basse j'avais fait se code (avec un peu d'aide)
//***********************************************************************************************************************************************************************inter const
int cInters[] = {0, 1};// broches pour les colonnes
int cIntersNo = 2;// Nombre de broches de la colonne
int lInters[] = {4, 5, 6, 7, 8};// broches pour les lignes
int lIntersNo = 5;// Nombre de broches de ligne
int colEtat2[2][5] = {0};// derniers états de commutation [cIntersNo] [lIntersNo]
uint8_t InterCodes[2][5] { //tableau des caractère
{'q','b', 'c', 'd', 'e'},
{'j','k','l',';'}
};
//**********************************************************************************************************************************************************************bouton const
int cBoutons[] = {2, 3};// broches pour les colonnes
int cBoutonsNo = 2;// Nombre de broches de la colonne
int lBoutons[] = {4, 5, 6, 7, 8};// broches pour les lignes
int lBoutonsNo = 5;// Nombre de broches de ligne
int colEtat1[2][5] = {0};// derniers états de commutation [cBoutonsNo] [rBoutonsNo]
uint8_t buttonCodes[2][5] = { //tableau des caractère
{'c','f','g','h','i'},
{'l','u','v','z'}
};
void setup()
{
//********************************************************************************************************************************************************************inter setup
Serial.begin(9600); // Lancer de série
Serial.println("Multiplexed inter Test");
Serial.println("Setting Column Pins..."); // Définissez la colonne mode Pin
for(int cInter = 0; cInter < cIntersNo; cInter++)
{
pinMode(cInters[cInter], OUTPUT);
digitalWrite(cInters[cInter], HIGH);
}
Serial.println("Setting Row Pins...");// Régler le mode Pin Row
for(int lInter = 0; lInter < lIntersNo; lInter++)
{
pinMode(lInters[lInter], INPUT);
digitalWrite(lInters[lInter], HIGH);
}
Serial.println("Ready!");
//********************************************************************************************************************************************************************bouton setup
Serial.begin(9600); // Lancer de série
Serial.println("Multiplexed Buttons Test");
Serial.println("Setting Column Pins..."); // Définir la colonne mode Pin
for(int cBouton = 0; cBouton < cBoutonsNo; cBouton++)
{
pinMode(cBoutons[cBouton], OUTPUT);
digitalWrite(cBoutons[cBouton], HIGH);
}
Serial.println("Setting Row Pins..."); // Régler le mode Pin Row
for(int lBouton = 0; lBouton < lBoutonsNo; lBouton++)
{
pinMode(lBoutons[lBouton], INPUT);
digitalWrite(lBoutons[lBouton], HIGH);
}
Serial.println("Ready!");
}
void loop()
{
//************************************************************************************************************************************************************************Inter loop
for(int cInter = 0; cInter < cIntersNo; cInter++) // Boucle à travers les colonnes
{
digitalWrite(cInters[cInter], LOW);
for(int lInter = 0; lInter < lIntersNo; lInter++) // Boucle à travers les lignes
{
if(digitalRead(lInters[lInter]) == LOW) // Vérifiez si chaque interrupteur est enfoncé
{
if(colEtat2[cInter][lInter] == 0) // Vérifiez si l'état a changé depuis la dernière fois
{
Serial.print(cInters[cInter]);
Serial.print(", ");
Serial.print(lInters[lInter]);
Serial.println(" ON");
Keyboard.press(InterCodes[cInter][lInter]);
delay(10);
Keyboard.release(InterCodes[cInter][lInter]);
colEtat2[cInter][lInter] = 1;// Mise à jour dernier état connu de ce commutateur
}
}
else {
if(colEtat2[cInter][lInter] == 1) // Vérifiez si l'état a changé depuis la dernière fois
{
Serial.print(cInters[cInter]);
Serial.print(", ");
Serial.print(lInters[lInter]);
Serial.println(" OFF");
Keyboard.press(InterCodes[cInter][lInter]);
delay(10);
Keyboard.release(InterCodes[cInter][lInter]);
colEtat2[cInter][lInter] = 0;// Mise à jour dernier état connu de ce commutateur
}
}
}
digitalWrite(cInters[cInter], HIGH);
}
// ***************************************************************************************************************************************************************************bouton loop
for(int cBouton = 0; cBouton < cBoutonsNo; cBouton++) // Boucle à travers les colonnes
{
digitalWrite(cBoutons[cBouton], LOW);
for(int lBouton = 0; lBouton < lBoutonsNo; lBouton++) // Boucle à travers les ligne
{
if(digitalRead(lBoutons[lBouton]) == LOW)// Vérifiez si chaque interrupteur est enfoncé
{
if(colEtat1[cBouton][lBouton] == 0)// Vérifiez si l'état a changé depuis la dernière fois
{
Serial.print(cBoutons[cBouton]);
Serial.print(", ");
Serial.print(lBoutons[lBouton]);
Serial.println(" ON");
Keyboard.press(buttonCodes[cBouton][lBouton]);
delay(10);
Keyboard.release(buttonCodes[cBouton][lBouton]);
colEtat1[cBouton][lBouton] = 1;// Mise à jour dernier état connu de ce commutateur
}
}
else {
if(colEtat1[cBouton][lBouton] == 1) // Vérifiez si l'état a changé depuis la dernière fois
{
Serial.print(cBoutons[cBouton]);
Serial.print(", ");
Serial.print(lBoutons[lBouton]);
Serial.println(" OFF");
colEtat1[cBouton][lBouton] = 0;// Mise à jour dernier état connu de ce commutateur
}
}
}
digitalWrite(cBoutons[cBouton], HIGH);
}
}
Suite a mes première minute de test j'ai remarquer que si un de mes interrupteurs était activer le code affichait 2 valeur lorsque que je fessait une pression sur un BP.
Mis a part cela le code fonctionnait parfaitement, je voudrait donc l'utiliser a présent pour l'utiliser sur un BP poussoir qui celui si aurait une entre pin 8 et l'autre pin sur GND.
Enfaîte j'ai essayer de convertir mon code pour qu'il fonctionne sans les tableaux