Bonjour tout le monde,
Je reviens vers vous de nouveau avec un code que j'ai précédemment présenté. Il fonctionne très bien mais j'ai l'impression qu'il fonctionne sur un bug. Je m'explique.
Bien qu'ayant une dizaine de LED reliée à mon ULN2308 et à mon I2C, je cherche dans un premier temps à interagir avec seulement 3 d'entre elles.
- La 1ère clignote pendant que les deux autres sont éteintes. Je presse un bouton poussoir qui fait cesser ses clignotements, la rend fixe (lumineuse en continu) et engendre le clignotement de la seconde qui était éteinte.
- Je presse un bouton poussoir qui est dédiée à la seconde et qui la rend à son tour lumineuse en continu. Enfin, cet appui engendre le clignotement de la 3eme.
Ca fonctionne très bien ! Mais... Si les clignotements s'enchainent à l'issu de mes appuis ce n'est pas sans condition car je veux sauvegarder mes appuis pour ne pas à avoir le doigt appuyé en continu sur le BP. Les voici:
Et voici le code complet qui permet les clignotements:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 etat == LOW; if(etat==HIGH) { compteur++; } etat1 == LOW; if(etat1== HIGH) { compteur1++; }
Pour moi, cette condition me parait erronée car si je demande à ma LED de clignoter quand compteur est uniquement = à 1 (ligne 34) plus rien ne fonctionne. J'ai l'impression qu'il génère une incrémentation à l'infini car seul le signe >=1 rend le tout fonctionnel... Est-ce normal ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 etat == LOW; if(etat==HIGH) { compteur++; } etat1 == LOW; if(etat1== HIGH) { compteur1++; } if (clignotement) { Millisactuel = millis(); if ((unsigned long)(Millisactuel - Millisprecedent) >= Intervaldeclignotement) { mcp.digitalWrite(9, !mcp.digitalRead(9)); Millisprecedent = Millisactuel; } } else { mcp.digitalWrite(9, HIGH); } int lecturebouton = mcp1.digitalRead(7); delay(50); if (lecturebouton==LOW){ clignotement=false; compteur++; } if (clignotement1) { Millisactuel1 = millis(); if (((unsigned long)(Millisactuel1 - Millisprecedent1) >= Intervaldeclignotement1) && (compteur>=1)) { mcp.digitalWrite(10, !mcp.digitalRead(10)); Millisprecedent1 = Millisactuel1; } } else { mcp.digitalWrite(10, HIGH); } int lecturebouton1 = mcp1.digitalRead(8); delay(50); if ((lecturebouton1==LOW) && (compteur>=1)){ clignotement1=false; compteur1++; }
Merci.
Partager