Salut à tous,
Je ne suis pas sûr d'être sur la bonne rubrique, donc mea culpa au modos, si je devais faire erreur...
S'il y avait une âme charitable pour me mettre sur la voie... 2 semaines que je tourne en rond
Le sujet :
Sur une trottinette, je souhaite mettre 3 boutons.
- 1 qui allume/éteint les lumières, (1 pression sur le bouton allume, une 2e pression éteint)
- 2 autres pour faire clignoter à gauche/droite les mêmes lumières. (1 pression sur le bouton fait clignoter, la 2 remet l'état allumé/éteint précédent)
Dans le premier cas, c'est simple et réglé C'est dans le second cas que sa pèche.
J'ai essayé de commenter le mieux possible mon code
#include <Arduino.h>
// --- Circuit à réaliser ---
// Connecter sur la broche 6,7 et 8 (configurée en entrée) les 3 Boutons à la masse (0V)
// Connecter sur la broche 3 et 4 (configurée en sortie) les 2 leds
// --- Déclaration des constantes ---
const int APPUI = 0; // constante état des Boutons - appui sur niveau bas
const int PAS_APPUI = 1; // constante état des Boutons - relâché sur niveau haut
// --- constantes des broches ---
const int Bouton1 = 6; //bouton allumage des 2 leds
const int Bouton2 = 7; //bouton clignotte à gauche
const int Bouton3 = 8; //bouton clignotte à droite
const int Led1 = 3; //led gauche
const int Led2 = 4; //led droite
// --- Déclaration des variables globales ---
boolean etatLed = 0; // variable bit reflet d'état de la Led
boolean etat = 0; // variable d'etat de position switch
int etape = 0;
// --- Déclaration des objets utiles pour les fonctionnalités utilisées ---
void setup() {
// --- initialisation console serie ---
Serial.begin(9600);
Serial.println(F("Console initialisee"));
// --- les boutons ---
// --- broches en entrée ---
pinMode(Bouton1, INPUT); //met les broches en entree
pinMode(Bouton2, INPUT);
pinMode(Bouton2, INPUT);
// --- Activation du rappel au + interne des broches en entrée si nécessaire ---
digitalWrite(Bouton1, HIGH); // activation des pullup des broches en entrée
digitalWrite(Bouton2, HIGH);
digitalWrite(Bouton3, HIGH);
// --- Broches en sortie ---
pinMode(Led1, OUTPUT); //met la broche en sortie
pinMode(Led2, OUTPUT);
}
void cligno()
{
while(etape==0)
{
Serial.println("ca clignote");
etatLed = !etatLed;
digitalWrite(Led1, LOW); // la LED 1 s’éteint
digitalWrite(Led2, HIGH); // la LED 2 s'allume
delay(500);
digitalWrite(Led1,HIGH); // la LED 1 s’allume
digitalWrite(Led2,LOW); // la LED 2 s’éteint
delay(500);
/* if(etape == 0)
{
Serial.println("sa doit clignotter");
}*/
}
}
void loop()
{
// --- ici instructions à exécuter par le programme principal ---
if (digitalRead(Bouton1) == APPUI)
{
// --- si appui sur Bouton 1 ---
Serial.println("bouton 1 enfonce");
etatLed = !etatLed; // --- inverse l'état du Relais ---
digitalWrite(Led1, etatLed); // --- met la broche de commande dans l'état voulu ---
digitalWrite(Led2, etatLed);
delay(250);
if (etatLed == LOW)
{
Serial.println("Leds 1 et 2 = Off");
}
else
{
Serial.println("leds 1 et 2 = On");
}
}
//if (digitalRead(Bouton2) == APPUI && etat==0)
if (digitalRead(Bouton2) == APPUI)
{
Serial.println(etat);
Serial.println(etape);
switch(etat)
{
case 1:
etat = etat;
cligno();
Serial.println(etat);
break;
case 0:
etat = !etat;
// cligno();
Serial.println(etat);
break;
}
// cligno();
delay(500);
}
}
Je fais ou parts mal à un endroit et j'arrive pas à mettre la main dessus.
Si qqu'un pouvait m'éguiller...
Merci et salut à tous.
Suzz