Je veux détecter la différence entre des signaux qui sont très proches. Ce sont les mesures de tension au cours du temps (avec un delai de 1000) par un programme arduino
![]()
Je veux détecter la différence entre des signaux qui sont très proches. Ce sont les mesures de tension au cours du temps (avec un delai de 1000) par un programme arduino
![]()
Pour comprendre pourquoi ton programme fonctionne mal, il faudrait d'une part que tu nous présentes le code que tu exécutes et d'autre part que tu nous expliques en quoi il fonctionne mal : une description en langage courant des opérations effectuées, le résultat attendu et le résultat obtenu...
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous,
N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton
et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.
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 const int lampe = A0; char x ; int etat =0; void setup() { Serial.begin(9600); pinMode(lampe, INPUT); } void loop() { etat = analogRead(lampe); int etat = analogRead(A0); else if( etat>=698&&etat<=700) { x=('V'); /////// VERT Serial.write(x); } else if (etat>=698 && etat<=1023 ) {x=('v'); //// vert clignotte Serial.write(x);} else { x=('e'); Serial.write(x);} delay(1000); }
La valeur 698 est détectée dans les deux conditions. Comment pourrais-je différencier les cas ?
Je suis déjà étonné que ce programme passe la compilation: il y a ligne 15 un else qui apparait sans qu'aucun if le précède.
Ensuite, si tu prends les deux conditions des lignes 15 et 19, les états 698 à 700 sont pris en compte uniquement par la première condition et jamais par la seconde dans laquelle on ne rentre que si l'état n'est pas compris dans ces valeurs (else ligne 19).
A la condition bien sûr que le programme qui s'exécute soit bien celui que tu présentes...
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous,
N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton
et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.
c'est le code de programme l'autre et un exemple de test
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 const int lampe1 = A0; const int lampe2 =A1; const int lampe3=A2; const int lampe4=A3; char x ; int yelow =0; int blackr=0; int red=0; int blacky=0; void setup() { Serial.begin(9600); pinMode(lampe1, INPUT); pinMode(lampe2, INPUT); pinMode(lampe3, INPUT); pinMode(lampe4, INPUT); } void loop() { yelow= analogRead(A0); blackr = analogRead(A1); red= analogRead(A2); blacky = analogRead(A3); int yelow= analogRead(A0); int blackr = analogRead(A1); int redd= analogRead(A2); int blacky = analogRead(A3); if (( yelow>1019)&& (red=0)&&((blacky>=75&&blacky<=80)or(blacky>1019))) {x=('R'); //// ROUGE Serial.write(x);} else if(( yelow>1019)&&((red>=503&&red<=509) or (red>=1019))&&((blacky>=75&&blacky<=80)or(blacky>1019))) { x=('r'); /////////////////// clignottement ROUGE Serial.write(x); } //////////////////// lampe rouge else if((( yelow>=696&&yelow<=703)&&(yelow>1019))&&(blackr>=98&&blackr<=105)&&(red=1019)&&(blacky=1019)) { x=('V'); //////////////////////// VERT Serial.write(x); } //////////////////// lampe vert else { x=('v'); Serial.write(x);} else if ((( yelow>=698)&&(yelow<703))&&((blackr<=1020)&&(blackr>=97))&&(red>=1019)&&(blacky>=1019)) {x=('v'); //// vert clignotte Serial.write(x);} delay(1000); }
Partager