Projet sur Arduino => allumer une LED en tapant 2 fois dans les mains

Résolu/Fermé
frozice - Modifié le 27 mai 2020 à 19:16
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 18 juin 2020 à 17:14
Bonjour,
j'ai un projet qui consiste à allumer une LED en tapant 2 fois dans le mains sur ARDUINO.

En gros :
Après avoir taper 1 fois dans les mains, si pendant un petit temps donné on ne tape pas une deuxième fois dans les mains alors la LED ne s'allume pas. Pareillement pour l'éteindre.
Il faut donc taper 2 fois assez rapidement pour pouvoir l'allumer.

Mon problème c'est que je n'arrive pas à faire le programme.
J'ai déjà le montage.

Pour l'instant j'ai trouvé ça pour l'allumer en tapant une fois dans les mains :

void setup() {
  Serial.begin(9600);             // using serial port to check analog value
  pinMode(2, OUTPUT);             // LED on digital pin 2
}

void loop() {
  int analog_val;                 // analog value read from A2
  static bool led_state = false;  // current state of LED
  
  analog_val = analogRead(A2);

  if (analog_val > 10) {          // trigger threshold
    // toggle LED
    if (led_state) {
      led_state = false;          // LED was on, now off
      digitalWrite(2, LOW);
      Serial.println(analog_val); // print analog value for debug purposes
    }
    else {
      led_state = true;
      digitalWrite(2, HIGH);      // LED was off, now on
      Serial.println(analog_val);
    }
    delay(50);  // wait for clap noise to subside
  }
}




J’espère avoir des retours.

Merci d'avance.



Configuration: Windows / Firefox 76.0

8 réponses

georges97 Messages postés 11842 Date d'inscription lundi 31 janvier 2011 Statut Contributeur Dernière intervention 26 avril 2024 2 251
28 mai 2020 à 18:45
Bonjour,

Qui dit projet dit recherche, essais, corrections, améliorations. C'est de mon point de vue la démarche qui permet la satisfaction d'avoir trouvé la solution.

Pour l'instant, je subodore que vous avez trouvé un code sur le net et n'avez même pas cherché à le modifier d'un iota.

Comme vous le dîtes, ce code permet de changer une fois l'état de la diode.

Si l'on veut que l'action se fasse après deux claps, il faut sans doute introduire une boucle de comptage avant la détection du clap, par exemple un while en ligne 11.

Une fois cela fait, il faudra sans doute ajuster le délai de 50 millisecondes pour régler l'écart entre les deux claps.

Je vous laisse faire le reste puisqu'ils 'agit manifestement d'un exercice.

Faîtes part de vos progressions ou blocages en repostant un code modifié et commenté par vous pour situer les blocages et joignez y les éventuels messages d'erreur.

Cordialement
1
frozice Messages postés 10 Date d'inscription mercredi 27 mai 2020 Statut Membre Dernière intervention 5 juin 2020
28 mai 2020 à 19:04
Bonjour,
Merci de m'avoir répondu.
Sans vouloir vous vexer, certes j'ai pris ce programme sur internet, mais cela fait déjà une semaine que je travaille déçu affin de trouver le bon programme, hélas en vain.
J'avais déjà eu l'idée de cette boucle de comptage mais cela a conclue par un échec.
Je vais donc retravailler ceci encore et encore comme vous l'avez dit.

Merci encore, cordialement.
0
georges97 Messages postés 11842 Date d'inscription lundi 31 janvier 2011 Statut Contributeur Dernière intervention 26 avril 2024 2 251 > frozice Messages postés 10 Date d'inscription mercredi 27 mai 2020 Statut Membre Dernière intervention 5 juin 2020
28 mai 2020 à 20:57
C'est une bonne initiative. Je n'ai pas voulu dire que vous n'avez rien fait, mais juste qu'il faut montrer ce que vous avez fait.

Par ailleurs, quand ça coince, n'essayez pas de réussir à faire tout le code en une fois. Décomposez, en l'occurrence, fîtes un programme plus court portant sur la boucle while, pour effectuer les deux "tours", sans inclure la partie capteur de son par exemple.

Vous l'intégrerez en suite au programme complet. En tous cas, c'est ainsi que je fais et cela m'a plutôt réussi.

L'échec dont vous parlez est soit une faute de syntaxe, soit un défaut en sortie de boucle qui fait que le reste du programme n'a pas intégré le résultat. En tous cas, c'est ainsi que je fais et cela m'a plutôt réussi.a boucle .

Ceci dit, je ne suis pas un cador en programmation, mais il y en a sur CCM et il vous viendront sans aucun doute en aide, dès qu'ils verront vos premières modifs.

A vous lire.

Bonne soirée
0