Bonjour
j'ai réalisé ce montage très simple, qui me permet lors d'une pression sur BP, l'allumage d'une led, une seconde pression sur le poussoir, le clignotement d'une autre led, et ainsi de suite...
Je souhaiterais ne garder que la partie clignotement de la led mais en ayant la possibilité par le bais d'un potentiometre, de régler le Delay de clignotement.
Je suis débutant dans la programmation et je n'y arrive pas malgré mes multiples recherches. je vous joins le code de base qui fonctionne.
merci d'avance.
[code]
#include <OneButton.h>
const byte buttonPin = 3; // notre bouton est sur la pin 3
OneButton button(buttonPin, true); // true pour le mettre en INPUT_PULLUP
unsigned long temps;
// les pins utilisées pour les LEDs
const byte pinLedBlanche = 4;
const byte pinLedRose = 0;
/
enum {REPOS, ETAT_BLANC, ETAT_ROSE_ON, ETAT_ROSE_OFF} etatCourant;
// ------------------------------------------------------
// Cette fonction installe l'état initial
// ------------------------------------------------------
void mettreAuRepos()
{
digitalWrite(pinLedBlanche, LOW);
digitalWrite(pinLedRose, LOW);
etatCourant = REPOS;
}
// ------------------------------------------------------
// La fonction de call back, appellée automatiquement quand on clique
// ------------------------------------------------------
void simpleclick()
{
switch (etatCourant) {
case REPOS: // on était au repos et on a un appui, on allume la blanche
digitalWrite(pinLedBlanche, HIGH); // LED blanche alimentée
etatCourant = ETAT_BLANC; // on note le nouvel état de notre système
break;
case ETAT_BLANC:// blanc allumée, on a un appui,ETEINTE
digitalWrite(pinLedBlanche, LOW); // LED blanche ETEINTE
digitalWrite(pinLedRose, HIGH);
temps = millis(); // on stocke la nouvelle heure
etatCourant = ETAT_ROSE_ON; // on note le nouvel état de notre système
break;
case ETAT_ROSE_ON: // Led rose allumée
case ETAT_ROSE_OFF:
digitalWrite(pinLedBlanche, HIGH); // LED blanche alimentée
digitalWrite(pinLedRose, LOW);
etatCourant = ETAT_BLANC; // on note le nouvel état de notre système
break;
}
}
void verifierTemps()
{
if (millis() - temps >= 500) // délai de 500ms expiré
{
temps = millis();
switch (etatCourant)
{
case ETAT_ROSE_ON:
digitalWrite(pinLedRose, LOW);
etatCourant = ETAT_ROSE_OFF;
break;
case ETAT_ROSE_OFF:
digitalWrite(pinLedRose, HIGH);
etatCourant = ETAT_ROSE_ON;
break;
}
}
}
// ------------------------------------------------------
// On initialise notre système dans le setup
// ------------------------------------------------------
void setup() {
pinMode (pinLedBlanche, OUTPUT);
pinMode(pinLedRose, OUTPUT);
//conditions Initiales
mettreAuRepos();
// On attache la fonction simpleClick() comme callBack
button.attachClick(simpleclick);
}
void loop() {
// On vérifie l'appui bouton
button.tick();
// on vérifie l'événement temps qui passe
verifierTemps();
}
[/code]