Bonjour à tous,
J'ai un problème avec une LED et 4 boutons poussoir. Ils sont tous reliés à un MCP23017.
Je souhaite interrompre le clignotement de la LED et la rendre fixe lorsque j'appuie 3x sur l'un des quatre boutons. Ca peut-être sur le 1er, le 2nd, le 3eme ou le 4eme, qu'importe.
Pour cela j'ai écrit un code qui compte le nombre d'appuis. Problème: il prend en compte le bouton 1 mais pas les trois autres ! J'ai beau appuyer dessus, ils sont comme transparents. Pourquoi ? Où se trouve mon erreur ?
Merci d'avance...
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
50
51
52
53
54
55
56
57
58
59
60
61
62
[color=#339933]#include[/color][color=#ff0000] <Wire.h>[/color]
[color=#339933]#include[/color][color=#ff0000] "Adafruit_MCP23017.h"[/color]
[color=#0000ff]int[/color] buttonCounter1 = [color=#cc66cc]0[/color];[color=#808080]// variable pour le comptage du nombre d'appuis sur le bouton poussoir[/color]
[color=#0000ff]int[/color] buttonCounter= [color=#cc66cc]0[/color];[color=#808080]//Variable pour l'état actuel du bouton poussoir[/color]
[color=#0000ff]int[/color] lastButtonCounter = [color=#cc66cc]0[/color];[color=#808080]// Variable pour l'état précédent du bouton poussoir[/color]
[color=#0000ff]bool[/color] clignotement1 = [color=#0080ff]true[/color];
[color=#0000ff]const[/color] [color=#0000ff]unsigned[/color] [color=#0000ff]long[/color] Intervaldeclignotement = [color=#cc66cc]250[/color];
[color=#0000ff]unsigned[/color] [color=#0000ff]long[/color] Millisactuel;
[color=#0000ff]unsigned[/color] [color=#0000ff]long[/color] Millisprecedent;
[color=#0000ff]void[/color] setup[color=black]([/color][color=black])[/color] [color=black]{[/color]
[color=#0080ff]Serial[/color].begin[color=black]([/color][color=#cc66cc]9600[/color][color=black])[/color];
mcp.begin[color=black]([/color][color=black])[/color];
mcp.[color=#0080ff]pinMode[/color][color=black]([/color][color=#cc66cc]1[/color], [color=#0080ff]OUTPUT[/color][color=black])[/color];[color=#808080]//LED[/color]
mcp.[color=#0080ff]pinMode[/color][color=black]([/color][color=#cc66cc]2[/color], [color=#0080ff]INPUT[/color][color=black])[/color];[color=#808080]//BP1[/color]
mcp.pullUp[color=black]([/color][color=#cc66cc]2[/color], [color=#0080ff]HIGH[/color][color=black])[/color];
mcp.[color=#0080ff]pinMode[/color][color=black]([/color][color=#cc66cc]3[/color], [color=#0080ff]INPUT[/color][color=black])[/color];[color=#808080]//BP2[/color]
mcp.pullUp[color=black]([/color][color=#cc66cc]3[/color], [color=#0080ff]HIGH[/color][color=black])[/color];
mcp.[color=#0080ff]pinMode[/color][color=black]([/color][color=#cc66cc]4[/color], [color=#0080ff]INPUT[/color][color=black])[/color];[color=#808080]//BP3[/color]
mcp.pullUp[color=black]([/color][color=#cc66cc]4[/color], [color=#0080ff]HIGH[/color][color=black])[/color];
mcp.[color=#0080ff]pinMode[/color][color=black]([/color][color=#cc66cc]5[/color], [color=#0080ff]INPUT[/color][color=black])[/color];[color=#808080]//BP4[/color]
mcp.pullUp[color=black]([/color][color=#cc66cc]5[/color], [color=#0080ff]HIGH[/color][color=black])[/color];
[color=black]}[/color]
[color=#0000ff]void[/color] loop[color=black]([/color][color=black])[/color] [color=black]{[/color]
[color=#0000ff]if[/color] [color=black]([/color]clignotement1[color=black])[/color] [color=black]{[/color]
Millisactuel = [color=#0080ff]millis[/color][color=black]([/color][color=black])[/color];
[color=#0000ff]if[/color] [color=black]([/color][color=black]([/color][color=black]([/color][color=#0000ff]unsigned[/color] [color=#0000ff]long[/color][color=black])[/color][color=black]([/color]Millisactuel - Millisprecedent[color=black])[/color] >= Intervaldeclignotement[color=black])[/color] [color=black])[/color] [color=black]{[/color]
mcp.[color=#0080ff]digitalWrite[/color][color=black]([/color][color=#cc66cc]1[/color], !mcp.[color=#0080ff]digitalRead[/color][color=black]([/color][color=#cc66cc]1[/color][color=black])[/color][color=black])[/color];
Millisprecedent = Millisactuel;
[color=black]}[/color]
[color=black]}[/color] [color=#0000ff]else[/color] [color=black]{[/color]
mcp.[color=#0080ff]digitalWrite[/color][color=black]([/color][color=#cc66cc]1[/color], [color=#0080ff]HIGH[/color][color=black])[/color];
[color=black]}[/color]
buttonCounter1 = [color=black]([/color]mcp.[color=#0080ff]digitalRead[/color][color=black]([/color][color=#cc66cc]2[/color][color=black])[/color] | mcp.[color=#0080ff]digitalRead[/color][color=black]([/color][color=#cc66cc]3[/color][color=black])[/color] | mcp.[color=#0080ff]digitalRead[/color][color=black]([/color][color=#cc66cc]4[/color][color=black])[/color] | mcp.[color=#0080ff]digitalRead[/color][color=black]([/color][color=#cc66cc]5[/color][color=black])[/color][color=black])[/color];
[color=#0000ff]if[/color] [color=black]([/color]buttonCounter1 != lastButtonCounter[color=black])[/color] [color=black]{[/color]
[color=#0000ff]if[/color] [color=black]([/color]buttonCounter1 == [color=#0080ff]LOW[/color][color=black])[/color] [color=black]{[/color]
buttonCounter++;
[color=black]}[/color]
lastButtonCounter = buttonCounter1;
[color=black]}[/color]
[color=#0000ff]if[/color] [color=black]([/color]buttonCounter >= [color=#cc66cc]3[/color][color=black])[/color] [color=black]{[/color]
clignotement1 = [color=#0080ff]false[/color];
[color=black]}[/color]
[color=black]}[/color]