Re-bonsoir,
Bon je suis presque arrivée à obtenir le résultat voulu dans le TP baignade d’Eskimon, je bloque sur la fin mais je pense que je vais laisser tomber pour le moment et me concentrer sur la compréhension des notions introduites dans la correction.
Ceci dit, j’aimerais bien avoir un éclaircissement sur un mystère. En travaillant la partie "clignotement" du TP, j’ai réussi à écrire un code qui fait clignoter une led quand on appuie sur un bouton et l’éteint quand on appuie sur l’autre. Problème : la led clignote très faiblement. En retirant sa résistance elle clignote un peu plus fort mais ce n’est pas folichon. Ce qui est étrange, c’est que je ne rencontre aucun problème avec les autres codes, notamment avec Blink, BlinkWithoutDelay ou encore le même code mais sans clignotement. Problème de résistance, problème de code ? C’est très étrange en tout cas.
Voici le code en question ci-dessous. Si nécessaire, j’enverrai demain une photo de mon montage mais en gros, la seule chose qui diffère d’avec le tuto c’est que je n’utilise pas de concdensateur sur mes boutons, n’ayant pas encore acquis ce composant… Mais je ne pense pas que le problème vienne de là.
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 71 72 73 74 75 76 77 78 79 80 81 82 83 | //Constantes const int boutonSOS = 2; const int boutonOK = 3; const int ledRouge = 6; //comptage int compteur = 0; int etatBouton; int memSOS = HIGH; int memOK = HIGH; //Clignotement long previousMillis = 0; long interval = 1000; //entrées/sorties void setup() { pinMode(boutonSOS, INPUT); pinMode(boutonOK, INPUT); pinMode(ledRouge, OUTPUT); } void loop() { //Lecture bouton d'incrémentation etatBouton = digitalRead(boutonSOS); // Si le bouton a un état différent que celui enregistré ET que cet état est "appuyé" if((etatBouton != memSOS) && (etatBouton == LOW)) { //Incrémentation compteur++; } //Enregistrement état bouton pour tour suivant memSOS = etatBouton; //Lecture bouton de décrémentation etatBouton = digitalRead(boutonOK); // Si le bouton a un état différent que celui enregistré ET que cet état est "appuyé" if((etatBouton != memOK) && (etatBouton == LOW)) { //Décrémentation compteur--; } //Enregistrement état bouton pour tour suivant memOK = etatBouton; //Limites à ne pas dépasser if(compteur < 0) { compteur = 0; } if(compteur > 1) { compteur = 1; } clignotement(compteur); } void clignotement(int valeurRecue) { //extinction de toutes les Leds digitalWrite(ledRouge, HIGH); if(valeurRecue >= 1) { unsigned long currentMillis = millis(); if(currentMillis - previousMillis > interval) { previousMillis = currentMillis; if (digitalRead(ledRouge) == HIGH) digitalWrite(ledRouge, LOW); else digitalWrite(ledRouge, HIGH); } } } |
D’avance merci pour vos éclaircissements !