/*
Name: ARDFR_papadetom4microswitches.ino
Created: 28.03.2024 15:56:26
Author: jpbbricole/papadetom
*/
// Déclaration des broches
const byte delPin[] = {10, 11, 12, 13};
const byte bpPin[] = {2, 3, 4, 5};
const byte bpNombre = sizeof(bpPin) / sizeof(bpPin[0]); // Calcul du nombre de boutons
const byte delEtatOn = HIGH; // Etat pour allumer la LED
const byte bpEtatOn = LOW; // Etat de bp quand actif
const unsigned long delOnTempo[] = {2000, 1500, 6000, 3000}; // Durées d'allumage
unsigned long delOnMillis[] = {0, 0, 0, 0}; // Durées d'allumage, chrono
void setup( )
{
Serial.begin(115200);
for (int b = 0; b < bpNombre; b ++) // programmation des broches
{
pinMode(delPin[b], OUTPUT);
digitalWrite(delPin[b], !delEtatOn); // extinction de la LED
pinMode(bpPin[b], INPUT_PULLUP);
}
}
void loop()
{
for (int b = 0; b < bpNombre; b ++) // Lecture des boutons
{
if (digitalRead(bpPin[b]) == bpEtatOn && digitalRead(delPin[b]) != delEtatOn) // poussoir enfoncé et DEL pas allumée
{
digitalWrite(delPin[b], delEtatOn); // Allumer la LED
delOnMillis[b] = millis(); // Démarrage du chrono
Serial.println(String(b) + " Start " + String(delOnTempo[b]) + " millisecondes");
}
}
for (int b = 0; b < bpNombre; b ++) // Lecture des chrono
{
if (digitalRead(delPin[b]) == delEtatOn && millis() - delOnMillis[b] >= delOnTempo[b]) // Si led allumée et chrono à échéance
{
Serial.println(String(b) + " END");
digitalWrite(delPin[b], !delEtatOn); // Etreindre la LED
}
}
}