IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Améliorer mon capacitif sensor


Sujet :

Arduino

  1. #21
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 921
    Par défaut
    Citation Envoyé par jpbbricole Voir le message
    L'Arduino ne bombarde pas!, ... Si on laisse le doigt sur un sensor, l'information part toutes les 250 millisecondes.
    C’est ce que je voulais dire par bombarder. Idéalement Il faut modifier le code pour qu’une touche envoie une demande et tant qu’on n’a pas relâché on ne renvoie pas la requête.

    J'ai réécrit toute ta procédure Processing (une première pour moi!)
    Bravo, une compétence de plus acquise et d’autres trucs à explorer (et les joies de Java) !

    @ KyloRen11 ==> je vous avais laissé un peu de boulot. Si vous voulez, A titre d’exercice, regardez le code que j’avais posté avec un tableau pour éviter les if else et intégrez le dans le code de JP et modifiez le sketch arduino pour ne pas bombarder. Vous aurez alors un truc super propre.

  2. #22
    Membre Expert
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 017
    Par défaut
    Bonjour

    Voici la version avec attente de relâchement de la touche sensor:
    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
    /*
        Name:       ARDDEV_KyloRen11_Sensor.ino
        Created:	24.05.2020 16:16:44
        Author:     jpbbricole
    */
     #include <CapacitiveSensor.h>
     
     enum facesIndex {faceA, faceB, faceC, faceD, facesNombre};
     char* facesNom[] = {"Face A", "Face B", "Face C", "Face D"};
     
     #define sensorEmetteurPin 4                                                        // Pin commune (emetteur)
     byte sensorsPin[] = {2, 3, 5, 6};                                                  // Pin des touches
     CapacitiveSensor* sensorFace[facesNombre];
     
     
     void setup() {
     
    	 Serial.begin(115200);
     
    	 for (byte f = 0; f < facesNombre; f++)
    	 {
    		 sensorFace[f]= new CapacitiveSensor(sensorEmetteurPin, sensorsPin[f]);     // "Creation des touches sensor
    	 }
     }
     
     void loop() {
    	 for (byte f = 0; f < facesNombre; f++)                                         // Lecture des touches
    	 {
    		 long sensorActivite = sensorFace[f]->capacitiveSensor(30);
    		 if (sensorActivite > 500)
    		 {
    			 Serial.write(f);
    			 while(sensorFace[f]->capacitiveSensor(30) > 500)                       // Attente du relachement de la touche
    			 {}
    		 }
    	 }
     }
    Dans ma proposition de programme Processing, il faudrait attendre la fin d'un son avant de pouvoir en changer, sans ça, on peut les jouer tous en même temps.

    Cordialement
    jpbbricole

  3. #23
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 921
    Par défaut
    Citation Envoyé par jpbbricole Voir le message
    Dans ma proposition de programme Processing, il faudrait attendre la fin d'un son avant de pouvoir en changer, sans ça, on peut les jouer tous en même temps.
    Vous le faites déjà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (octetLu == 0 && ! fichierFaceA.isPlaying()) { fichierFaceA.play();}
    sinon attention à ce truc (bien pratique) qui est d'utiliser la dernière entrée d'un enum comme index pour calculer la taille d'un tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      enum facesIndex {faceA, faceB, faceC, faceD, facesNombre};
    CapacitiveSensor* sensorFace[facesNombre];
    le C++ va vers plus de typage fort et le compilateur va se plaindre (potentiellement rejeter) l'utilisation d'un type énuméré en lieu et place d'un type susceptible de correspondre à une taille. ça pourrait jouer des tours dans le futur. l'approche par sizeof(tableau) / sizeof(tableau[0]) est plus pérenne.

    et il serait bon de déclarer les 2 tableaux en const, notamment le premier en char* qui contrevient à la norme C++
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    const char* facesNom[] = {"Face A", "Face B", "Face C", "Face D"};
    const byte sensorsPin[] = {2, 3, 5, 6};

  4. #24
    Membre Expert
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 017
    Par défaut
    Bonjour Jay M

    Citation Envoyé par Jay M Voir le message
    Vous le faites déjà:
    Si fichierFaceA.isPlaying() == true et que Processing reçoit octetLu == 0, fichierFaceA ne se jouera pas. Par contre, dans cette situation si Processing reçoit octetLu == 2, fichierFaceC se jouera en même temps que fichierFaceA, s'il n'a pas terminé, d'où cacaphonie.

    Cordialement
    jpbbricole

  5. #25
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 921
    Par défaut
    Citation Envoyé par jpbbricole Voir le message
    Bonjour Jay M


    Si fichierFaceA.isPlaying() == true et que Processing reçoit octetLu == 0, fichierFaceA ne se jouera pas. Par contre, dans cette situation si Processing reçoit octetLu == 2, fichierFaceC se jouera en même temps que fichierFaceA, s'il n'a pas terminé, d'où cacaphonie.

    Cordialement
    jpbbricole
    OK oui tout à fait. Je vois ce que vous vouliez dire

    l'inconvénient de la bibliothèque c'est qu'elle n'a pas (si je me souviens bien) de moyen de savoir si un son est lancé, quel qu'il soit. donc faudra traiter cela dans le code et forcer l'arrêt du son en cours avant d'en lancer un nouveau. (son autre inconvénient et que tout les fichiers audio sont en RAM et que on sature vite si on a bcp de fichiers ou qu'ils sont longs)

Discussions similaires

  1. [CV] Avis pour améliorer mon cv
    Par lapanne dans le forum CV
    Réponses: 7
    Dernier message: 17/10/2007, 15h04
  2. améliorer Mon Menu
    Par amazircool dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 08/03/2007, 07h57
  3. Réponses: 2
    Dernier message: 27/12/2006, 13h31
  4. Améliorer mon contraste
    Par progfou dans le forum Traitement d'images
    Réponses: 11
    Dernier message: 06/11/2006, 11h01
  5. [Sécurité] Comment amélioré mon code ?
    Par Nadd dans le forum Langage
    Réponses: 14
    Dernier message: 03/03/2006, 20h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo