Salut à tous,
J'ai un petit soucis avec mes temporisations.
Voici ce qu'il en est, j'aimerais que lorsque j'appuie sur un bp il y ai deux actions qui s'effectuent en parallèle:
- un premier relais doit s'activer 4 secondes après
- le deuxième quant à lui doit s'activer au même moment que l'on active le bouton mais
retourner dans son état initial 5 secondes après avoir appuyé une seconde fois sur le bouton
J'ai donc essayé plusieurs choses; en premier temps j'ai essayé de le faire en utilisant qu'une seule loop, ensuite j'ai essayé avec deux loop mais je n'y arrive toujours pas.
Une âme charitable pour m'aider ?
Voici mon code:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
int bouton1 = 30;
int etatAllumage1;
int etatAllumage2;
int relais1 = 52;
int relais2 = 50;
//int loop1();
//int loop2();
int bouton1v;
LiquidCrystal_I2C lcd(0x27,16,2);
void setup()
{
lcd.init();
lcd.backlight();
pinMode(bouton1,INPUT_PULLUP);
pinMode(relais1,OUTPUT);
pinMode(relais2,OUTPUT);
bouton1v = digitalRead(bouton1);
loop1();
loop2();
}
void loop(void)
{
bouton1v = digitalRead(bouton1);
loop1();
loop2();
if(etatAllumage1)
{
digitalWrite(relais1, LOW);
}
else
{
digitalWrite(relais1, HIGH);
}
if(etatAllumage2)
{
digitalWrite(relais2, LOW);
}
else
{
digitalWrite(relais2, HIGH);
}
}
void loop1(void){
if(etatAllumage1)
{
digitalWrite(relais1, LOW);
}
else
{
digitalWrite(relais1, HIGH);
}
if (bouton1v == HIGH )
{
etatAllumage1;
//etatAllumage2 ;
}
if(etatAllumage1)
{
etatAllumage1=0;
delay(450);
lcd.clear();
}
else
{
delay(4000);
etatAllumage1=1 ;
lcd.print("1");
}
}
void loop2 (void){
if(etatAllumage2)
{
digitalWrite(relais2, LOW);
}
else
{
digitalWrite(relais2, HIGH);
}
if (bouton1v == HIGH )
{
// etatAllumage1;
etatAllumage2 ;
}
if(etatAllumage2)
{
delay(450);
etatAllumage2=0;
lcd.clear();
}
else
{
delay(5000);
etatAllumage2=1 ;
lcd.print("2");
}
if(bouton1v==LOW)
{
}
}