Bonjour a tous , je suis nouveau et je lis assidûment les cours de Eskimon mais j'ai des questions sur un projet que j’essaye de faire entièrement moi même car on m'a dit " c'est en pratiquant qu'on apprend " donc j’évite de prendre des codes tout fait , donc j'essai de créer un petit projet simple :
un buzzer , 2 boutons et 2 led :
J'appuis sur le premier bouton , la led 1 s'allume et le buzzer sonne par intermittence .
Sans relâcher le bouton 1 j'appuis sur le bouton 2 , la led 1 reste allumer , la led 2 s'allume et le buzzer bip par intervalle plus cour , c'est la que ça déraille , les consignes du bouton 1 reste active alors que les consignes résultant de pour l'appuis des deux boutons s'active également donc le buzzer n'as pas la régularité souhaité puisqu'il travail sur deux intervalles différents .
J'ai essayé de travailler avec le "switch" mais ça na pas fonctionné , je vais peut être trop vite par rapport a mon niveau
Quelle serait la solution pour stopper les consignes du bouton1 au moment ou le bouton2 entre en jeu ?
Voici mon code ( j'essaie qu'il soit propre et agréable a lire )
// Pin des LED
int PIN_LED1 = 1;
int PIN_LED2 = 2;
// pin des entrees recepteur
int PIN_RF1 = 3;
int PIN_RF2 = 4;
//Pin du buzzer
int PIN_BUZZER = 5;
// ----- DECLARATION ENTREES ET SORTIES ------
void setup()
{
//On indique les entrees et les sorties
pinMode(PIN_LED1, OUTPUT);
pinMode(PIN_LED2, OUTPUT);
pinMode(PIN_RF1, INPUT);
pinMode(PIN_RF2, INPUT);
pinMode(PIN_BUZZER, OUTPUT);
//on impose l'etat des leds , du buzzer et des boutons
digitalWrite(PIN_RF1, HIGH);
digitalWrite(PIN_RF2, HIGH),
digitalWrite(PIN_LED1, LOW);
digitalWrite(PIN_LED2, LOW);
noTone(PIN_BUZZER);
}
// ----- ACTIONS A EFFECTUER ------
void loop()
{
{
int etatBouton1;
int etatBouton2;
etatBouton1 = digitalRead(PIN_RF1);
etatBouton2 = digitalRead(PIN_RF2);
if (etatBouton1 == LOW)
{
digitalWrite(PIN_LED1, HIGH);
tone(PIN_BUZZER, 50, 100);
delay(500);
noTone(PIN_BUZZER);
delay(500);
}
if (etatBouton2 == LOW && etatBouton1 == LOW)
{
digitalWrite(PIN_LED1, HIGH);
digitalWrite(PIN_LED2, HIGH);
tone(PIN_BUZZER, 100, 150);
delay(250);
noTone(PIN_BUZZER);
delay(250);
}
else
{
digitalWrite(PIN_LED1, LOW);
digitalWrite(PIN_LED2, LOW);
noTone(PIN_BUZZER);
}
}
}
Si vous avez des remarques a faire sur ma façon de coder je suis également preneur et merci d'avance pour votre aide.