Bonjour,
je cherche désespérément un code qui pourrait faire un genre de télérupteur avec un bouton poussoir.
j’appuis une foie sur le bouton (une simple impulsion) et ma variable de sauvegarde passa à 1 et quand je r appuis dessus elle repasse a 0 et ainsi de suite.
j’ai réussi à trouver le code qui fait ça mais grâce à un delay(300) à la fin du code qui permet de bloquer le temps de relâcher la pression de bouton. car si je supprime ce delay, pendant que je reste appuyé sur le bouton, la variable de sauvegarde passe de 0 a 1 très rapidement. Et donc le résultat est aléatoire entre 0 et 1 quand je relâche le bouton.
Je sent qu’il faudrait une autre variable qui sauvegarderait l’ancien état de la variable de sauvegarde. Mais je n’arrive pas à le trouver. Et je ne trouve rien sur internet.
Car mon but final serait d’avoir une quarantaine de boutons et que l’on puisse appuyer dessus simultanément. Donc je doit éviter le delay() qui serait bloquant si un autre bouton est appuyé.
le code qui concerne le bouton est dans la fonction “void TestBp()”
Merci
//Maitre
#include <Wire.h>
int Bp1;
int EtatBp1;
int Stokage_Bp1;
void setup()
{
Wire.begin(); // Rejoindre le bus I2C (Pas besoin d adresse pour le maitre)
Bp1 = 22;
EtatBp1 = 0 ;
Stokage_Bp1 = 0;
pinMode(Bp1, INPUT);
Serial.begin(9600);
}
void loop()
{
//contenu du programme
TestBp();
Serial.print("VariableStokageBp1 = ");
Serial.println(Stokage_Bp1,DEC);
Serial.print("EtatBP1 = ");
Serial.println(EtatBp1,DEC);
Wire.beginTransmission(4); // Envoyer vers device #4
Wire.write(Stokage_Bp1);
Wire.endTransmission(); // Arreter la transmission
delay(100); // Attendre 1s
}
void TestBp() {
EtatBp1 = digitalRead(Bp1);
//essayer un tantque
if ((EtatBp1)== 0 && Stokage_Bp1 == 0){
Stokage_Bp1++ ;
delay(300);
}
else if ((EtatBp1)==0 && Stokage_Bp1 == 1){
Stokage_Bp1 = 0 ;
delay(300);
}
}