hello
tu avais raison, je n'adressais pas les bonnes cases das les tableaux
voici le code qui fonctionne comme je l'ai compris ( compilé et testé sur maquette)
ouvres le moniteur à 115200 bauds et appuies sur tes touches.
attention à l'affecttion des pins
//on suppose que les BP actionnés ammenent GND sur leur entrée
// les LEDS sont sur 3, 4, 5, 6
int LED5 = 3;
int LED10 = 4;
int LED20 = 5;
int LED30 = 6;
// les BP sont sur 7, 8, 9, 10
int REED5 = 7;
int REED10 = 8;
int REED20 = 9;
int REED30 = 10;
// les Relais sont sur 11,12
int Relais[] = {0,11, 12};//case 0 non utilisée
int tempo[] {5000, 10000, 20000, 30000};//tableau des temps désirés
void MINUTES(byte relais, int tempo)
{
digitalWrite(Relais[relais], HIGH);
Serial.print("appel relais ");Serial.print(relais); Serial.print(" pendant "); Serial.println(tempo);
delay(tempo);
Serial.print("relachement relais "); Serial.println(Relais[relais]);
digitalWrite(Relais[relais], LOW);
}
void setup() {
Serial.begin(115200);
pinMode(REED5, INPUT_PULLUP);
pinMode(REED10, INPUT_PULLUP);
pinMode(REED20, INPUT_PULLUP);
pinMode(REED30, INPUT_PULLUP);
pinMode(LED5, OUTPUT); digitalWrite(LED5, LOW);
pinMode(LED10, OUTPUT); digitalWrite(LED10, LOW);
pinMode(LED20, OUTPUT); digitalWrite(LED20, LOW);
pinMode(LED30, OUTPUT); digitalWrite(LED30, LOW);
pinMode(Relais[1], OUTPUT); digitalWrite(Relais[1], LOW);//RelaisM1 sur 13
pinMode(Relais[2], OUTPUT); digitalWrite(Relais[2], LOW);//Relaism2 sur 9
//test des leds
for ( byte f = 3; f <= 6; f++)
{ Serial.print("allumage led "); Serial.println(f);
digitalWrite(f , HIGH);//allumes les 4 leds
}
delay(500);
for ( byte f = 3; f <= 6; f++)
{ Serial.print("extintion led "); Serial.println(f);
digitalWrite(f , LOW);//eteinds les 4 leds
}
}
void loop()
{
for ( byte f = 3; f <= 6; f++)
{ Serial.print("extintion led "); Serial.println(f);
digitalWrite(f, LOW); //eteinds les leds
}
for ( byte f = 7; f <= 10; f++)
{ Serial.print("lecture BP "); Serial.println(f);
if (digitalRead(f) == LOW) //lecture des BP chacun à son tour
{
Serial.print("touche "); Serial.print(f); Serial.println(" pressee");
Serial.print("allumage led "); Serial.println(f - 4);
Serial.print("appel tempo de "); Serial.println(tempo[(f - 7)]);
digitalWrite(f , HIGH); MINUTES(1,tempo[(f - 7)]); //et si BP actionné, appel de la tempo correspondante
}
}
}
nota: tu n'as pas précisé si tu avais besoin de coller deux relais en meme temps
si c'est avec des tempos differentes
et das ton code, tu ne commandes pas le relais 2