Problème programme Arduino !
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

Problème programme Arduino !



  1. #1
    Ledz-Guitar

    Problème programme Arduino !


    ------

    Bonjour,

    Nous sommes des élèves de Terminale. Pour le Bac, nous réalisons un projet de Guitare à Led. Les Led s'allument suivant les combinaisons de gamme choisies. Nous avons réalisé un prototype et lors des tests, nous sommes face à deux problèmes.

    Tout d'abord, nous désirons choisir la gamme que l'on affiche avec les Led. Nous avons donc réalisé un programme avec des variables mais nous ne parvenons pas à faire s'opérer le changement de gamme grâce à la fenêtre de contrôle. Nous pouvons lancer une gamme mais nous sommes obligés de tout éteindre pour en éclairer une autre. Que faut-il corriger dans le programme ? On prévoit aussi de travailler avec une carte Bluetooth !

    Ensuite, de manière à limiter le nombre de câbles, nous avons réalisé un système de démultiplexage : L’intégralité du système est gérée par un Arduino Mega. Tout d’abord, on choisit la barrette de LED à allumer. Pour cela, on « dope » le transistor correspondant à la barrette voulue. Cela permet de fermer le circuit puisque la barrette en question est reliée à la Terre. Ensuite, on choisit les LED que l’on veut allumer sur cette barrette. On éteint ensuite cette barrette en mettant à 0L la sortie correspondant au transistor et les sorties correspondant aux LED. On passe ensuite à la seconde barrette pour laquelle on suit le même protocole en changeant la combinaison de LED à allumer, puis à la troisième barrette, la quatrième,… Ces changements se font à une fréquence très élevée et en boucle de manière à ce que l’œil humain ne perçoive qu’une seule combinaison de LED allumée sur l’intégralité du manche. Ce principe de démultiplexage dépend donc de la programmation. (image attachée)
    Le problème rencontré est qu'à haute fréquence, l'intensité lumineuse des Led diminue. Nous ne parvenons pas à l'expliquer... Savez vous ?
    Code:
    Programme :
    char mot[20];
    int rangee0 = 11;
    int rangee1 = 2;
    int rangee2 = 3;
    int rangee3 = 4;
    int rangee4 = 5;
    int rangee5 = 6;
    int rangee6 = 7;
    int rangee7 = 8;
    int rangee8 = 9;
    int rangee9 = 10;
    int corde1 = 22;
    int corde2 = 24;
    int corde3 = 26;
    int corde4 = 28;
    int corde5 = 30;
    int corde6 = 32;
    
    void setup() // fonction d'initialisation de la carte
    {
      Serial.begin(9600);
      pinMode (rangee0,OUTPUT);
      pinMode (rangee1,OUTPUT);
      pinMode (rangee2,OUTPUT);
      pinMode (rangee3,OUTPUT);
      pinMode (rangee4,OUTPUT);
      pinMode (rangee5,OUTPUT);
      pinMode (rangee6,OUTPUT);
      pinMode (rangee7,OUTPUT);
      pinMode (rangee8,OUTPUT);
      pinMode (rangee9,OUTPUT);
      pinMode (corde1,OUTPUT);
      pinMode (corde2,OUTPUT);
      pinMode (corde3,OUTPUT);
      pinMode (corde4,OUTPUT);
      pinMode (corde5,OUTPUT);
      pinMode (corde6,OUTPUT);
    }
    
    void loop() // fonction principale, elle se répète à l'infini après le setup
    {
       if(Serial.available())
       { 
         
        int i = 0;
        while(Serial.available()!= 0 && i <= 19)
        {
          mot[i] = Serial.read();
          delay(1);
          i++;
        }
        mot[i] = '\0';
     
     
                    if(strcmp(mot,"1") ==0)
                        {
                          int A = 1;
                          
                          while(digitalRead(A == 1))
                          {
      digitalWrite (rangee0,HIGH);        // RANGEE 0 ALLUMEE
      digitalWrite (corde1,HIGH);
      digitalWrite (corde4,HIGH);
      digitalWrite (corde5,HIGH);
      delay (2);
      digitalWrite (rangee0,LOW);      //RANGEE 0 ETEINTE
      digitalWrite (corde1,LOW);
      digitalWrite (corde4,LOW);
      digitalWrite (corde5,LOW);
      
      digitalWrite (rangee1,HIGH);      // RANGEE 1 ALLUMEE
      digitalWrite (corde1,HIGH);
      digitalWrite (corde3,HIGH);
      digitalWrite (corde5,HIGH);
      delay (2);
      digitalWrite (rangee1,LOW);      //RANGEE 1 ETEINTE
      digitalWrite (corde1,LOW);
      digitalWrite (corde3,LOW);
      digitalWrite (corde5,LOW);
     
      digitalWrite (rangee2,HIGH);      // RANGEE 2 ALLUMEE
      digitalWrite (corde1,HIGH);
      digitalWrite (corde2,HIGH);
      digitalWrite (corde5,HIGH);
      delay (2);
      digitalWrite (rangee2,LOW);      //RANGEE 2 ETEINTE
      digitalWrite (corde1,LOW);
      digitalWrite (corde2,LOW);
      digitalWrite (corde5,LOW);
    
      digitalWrite (rangee3,HIGH);      // RANGEE 3 ALLUMEE
      digitalWrite (corde4,HIGH);
      digitalWrite (corde5,HIGH);
      delay (2);
      digitalWrite (rangee3,LOW);      // RANGEE 3 ETEINTE
      digitalWrite (corde4,LOW);
      digitalWrite (corde5,LOW);  
    
      digitalWrite (rangee4,HIGH);      // RANGEE 4 ALLUMEE
      digitalWrite (corde2,HIGH);
      digitalWrite (corde3,HIGH);
      digitalWrite (corde4,HIGH);
      delay (2);
      digitalWrite (rangee4,LOW);      // RANGEE 4 ETEINTE
      digitalWrite (corde2,LOW);
      digitalWrite (corde3,LOW);
      digitalWrite (corde4,LOW);  
    
      digitalWrite (rangee5,HIGH);      // RANGEE 5 ALLUMEE
      digitalWrite (corde1,HIGH);
      digitalWrite (corde2,HIGH);
      digitalWrite (corde3,HIGH);
      digitalWrite (corde4,HIGH);
      digitalWrite (corde5,HIGH);
      delay (2);
      digitalWrite (rangee5,LOW);      // RANGEE 5 ETEINTE
      digitalWrite (corde1,LOW);
      digitalWrite (corde2,LOW);
      digitalWrite (corde3,LOW);
      digitalWrite (corde4,LOW);
      digitalWrite (corde5,LOW);
    
      digitalWrite (rangee6,HIGH);      // RANGEE 6 ALLUMEE
      digitalWrite (corde1,HIGH);
      digitalWrite (corde3,HIGH);
      digitalWrite (corde5,HIGH);
      delay (2);
      digitalWrite (rangee6,LOW);      // RANGEE 6 ETEINTE
      digitalWrite (corde1,LOW);
      digitalWrite (corde3,LOW);
      digitalWrite (corde5,LOW);
    
      digitalWrite (rangee7,HIGH);      // RANGEE 7 ALLUMEE
      digitalWrite (corde1,HIGH);
      digitalWrite (corde2,HIGH);
      digitalWrite (corde3,HIGH);
      digitalWrite (corde4,HIGH);
      digitalWrite (corde5,HIGH);
      delay (2);
      digitalWrite (rangee7,LOW);      // RANGEE 7 ETEINTE
      digitalWrite (corde1,LOW);
      digitalWrite (corde2,LOW);
      digitalWrite (corde3,LOW);
      digitalWrite (corde4,LOW);
      digitalWrite (corde5,LOW);
    
      digitalWrite (rangee8,HIGH);      // RANGEE 8 ALLUMEE
      digitalWrite (corde1,HIGH);
      delay (2);
      digitalWrite (rangee8,LOW);      // RANGEE 8 ETEINTE
      digitalWrite (corde1,LOW);
      
      digitalWrite (rangee9,HIGH);      // RANGEE 9 ALLUMEE
      digitalWrite (corde1,HIGH);
      digitalWrite (corde2,HIGH);
      digitalWrite (corde3,HIGH);
      digitalWrite (corde4,HIGH);
      digitalWrite (corde5,HIGH);
      delay (2);
      digitalWrite (rangee9,LOW);      // RANGEE 9 ETEINTE
      digitalWrite (corde1,LOW);
      digitalWrite (corde2,LOW);
      digitalWrite (corde3,LOW);
      digitalWrite (corde4,LOW);
      digitalWrite (corde5,LOW);
                              A = Serial.read() ;
                          
                          }
                     }
                         
                      if(strcmp(mot,"2") ==0)
                   {
                          int A = 2;
          
                          while(digitalRead(A == 2))
                          {
      digitalWrite (rangee0,HIGH);        // RANGEE 0 ALLUMEE    //GAMME PENTATONIQUE MINEURE DE LA 
      digitalWrite (corde1,HIGH);
      digitalWrite (corde3,HIGH);
      digitalWrite (corde4,HIGH);
      digitalWrite (corde5,HIGH);
      digitalWrite (corde6,HIGH);
      delay (2);
      digitalWrite (rangee0,LOW);      //RANGEE 0 ETEINTE
      digitalWrite (corde1,LOW);
      digitalWrite (corde3,LOW);
      digitalWrite (corde4,LOW);
      digitalWrite (corde5,LOW);
      digitalWrite (corde6,LOW);
      
      digitalWrite (rangee2,HIGH);      // RANGEE 1 ALLUMEE
      digitalWrite (corde2,HIGH);
      delay (2);
      digitalWrite (rangee2,LOW);      //RANGEE 1 ETEINTE
      digitalWrite (corde2,LOW);
      
      digitalWrite (rangee2,HIGH);      // RANGEE 2 ALLUMEE
      digitalWrite (corde3,HIGH);
      digitalWrite (corde4,HIGH);
      delay (2);
      digitalWrite (rangee2,LOW);      //RANGEE 2 ETEINTE
      digitalWrite (corde3,LOW);
      digitalWrite (corde4,LOW);
    
      digitalWrite (rangee3,HIGH);      // RANGEE 3 ALLUMEE
      digitalWrite (corde1,HIGH);
      digitalWrite (corde2,HIGH);
      digitalWrite (corde5,HIGH);
      digitalWrite (corde6,HIGH);
      delay (2);
      digitalWrite (rangee3,LOW);      // RANGEE 3 ETEINTE
      digitalWrite (corde1,LOW);
      digitalWrite (corde2,LOW);
      digitalWrite (corde5,LOW);  
      digitalWrite (corde6,LOW);
    
      digitalWrite (rangee5,HIGH);      // RANGEE 5 ALLUMEE
      digitalWrite (corde1,HIGH);
      digitalWrite (corde2,HIGH);
      digitalWrite (corde3,HIGH);
      digitalWrite (corde4,HIGH);
      digitalWrite (corde5,HIGH);
      digitalWrite (corde6,HIGH);
      delay (2);
      digitalWrite (rangee5,LOW);      // RANGEE 5 ETEINTE
      digitalWrite (corde1,LOW);
      digitalWrite (corde2,LOW);
      digitalWrite (corde3,LOW);
      digitalWrite (corde4,LOW);
      digitalWrite (corde5,LOW);
      digitalWrite (corde6,LOW);
    
      digitalWrite (rangee7,HIGH);      // RANGEE 7 ALLUMEE
      digitalWrite (corde3,HIGH);
      digitalWrite (corde4,HIGH);
      digitalWrite (corde5,HIGH);
      delay (2);
      digitalWrite (rangee7,LOW);      // RANGEE 7 ETEINTE
      digitalWrite (corde3,LOW);
      digitalWrite (corde4,LOW);
      digitalWrite (corde5,LOW);
    
      digitalWrite (rangee8,HIGH);      // RANGEE 8 ALLUMEE
      digitalWrite (corde1,HIGH);
      digitalWrite (corde2,HIGH);
      digitalWrite (corde6,HIGH);
      delay (2);
      digitalWrite (rangee8,LOW);      // RANGEE 8 ETEINTE
      digitalWrite (corde1,LOW);
      digitalWrite (corde2,LOW);
      digitalWrite (corde6,LOW);
      
      digitalWrite (rangee9,HIGH);      // RANGEE 9 ALLUMEE
      digitalWrite (corde3,HIGH);
      delay (2);
      digitalWrite (rangee9,LOW);      // RANGEE 9 ETEINTE
      digitalWrite (corde3,LOW);
                              A = Serial.read() ;
                          }
                    }   
                        
                       if(strcmp(mot,"3") ==0)
                   {
                          int A = 3;
          
                          while(digitalRead(A == 3))
                          {
      digitalWrite (rangee0,HIGH);        // RANGEE 0 ALLUMEE  // GAMME PENTATONIQUE MINEURE DE MI 
      digitalWrite (corde1,HIGH);
      digitalWrite (corde2,HIGH);
      digitalWrite (corde3,HIGH);
      digitalWrite (corde4,HIGH);
      digitalWrite (corde5,HIGH);
      digitalWrite (corde6,HIGH);
      delay (2);
      digitalWrite (rangee0,LOW);      //RANGEE 0 ETEINTE
      digitalWrite (corde1,LOW);
      digitalWrite (corde2,LOW);
      digitalWrite (corde3,LOW);
      digitalWrite (corde4,LOW);
      digitalWrite (corde5,LOW);
      digitalWrite (corde6,LOW);
      
      digitalWrite (rangee2,HIGH);      // RANGEE 2 ALLUMEE
      digitalWrite (corde3,HIGH);
      digitalWrite (corde4,HIGH);
      digitalWrite (corde5,HIGH);
      delay (2);
      digitalWrite (rangee2,LOW);      //RANGEE 2 ETEINTE
      digitalWrite (corde3,LOW);
      digitalWrite (corde4,LOW);
      digitalWrite (corde5,LOW);
    
      digitalWrite (rangee3,HIGH);      // RANGEE 3 ALLUMEE
      digitalWrite (corde1,HIGH);
      digitalWrite (corde2,HIGH);
      digitalWrite (corde6,HIGH);
      delay (2);
      digitalWrite (rangee3,LOW);      // RANGEE 3 ETEINTE
      digitalWrite (corde1,LOW);
      digitalWrite (corde2,LOW);
      digitalWrite (corde6,LOW);
      
      digitalWrite (rangee4,HIGH);      // RANGEE 4 ALLUMEE
      digitalWrite (corde3,HIGH);
      delay (2);
      digitalWrite (rangee4,LOW);      // RANGEE 4 ETEINTE
      digitalWrite (corde3,LOW);
    
      digitalWrite (rangee5,HIGH);      // RANGEE 5 ALLUMEE
      digitalWrite (corde1,HIGH);
      digitalWrite (corde2,HIGH);
      digitalWrite (corde4,HIGH);
      digitalWrite (corde5,HIGH);
      digitalWrite (corde6,HIGH);
      delay (2);
      digitalWrite (rangee5,LOW);      // RANGEE 5 ETEINTE
      digitalWrite (corde1,LOW);
      digitalWrite (corde2,LOW);
      digitalWrite (corde4,LOW);
      digitalWrite (corde5,LOW);
      digitalWrite (corde6,LOW);
    
      digitalWrite (rangee7,HIGH);      // RANGEE 7 ALLUMEE
      digitalWrite (corde1,HIGH);
      digitalWrite (corde3,HIGH);
      digitalWrite (corde4,HIGH);
      digitalWrite (corde5,HIGH);
      digitalWrite (corde6,HIGH);
      delay (2);
      digitalWrite (rangee7,LOW);      // RANGEE 7 ETEINTE
      digitalWrite (corde1,LOW);
      digitalWrite (corde3,LOW);
      digitalWrite (corde4,LOW);
      digitalWrite (corde5,LOW);
      digitalWrite (corde6,LOW);
    
      digitalWrite (rangee8,HIGH);      // RANGEE 8 ALLUMEE
      digitalWrite (corde2,HIGH);
      delay (2);
      digitalWrite (rangee8,LOW);      // RANGEE 8 ETEINTE
      digitalWrite (corde2,LOW);
    
      digitalWrite (rangee9,HIGH);      // RANGEE 9 ALLUMEE
      digitalWrite (corde3,HIGH);
      digitalWrite (corde4,HIGH);
      delay (2);
      digitalWrite (rangee9,LOW);      // RANGEE 9 ETEINTE
      digitalWrite (corde3,LOW);
      digitalWrite (corde4,LOW);
                              A = Serial.read() ;
                          }
                    }   
                          
                        }
                        }
    Merci d'avance,
    Bien Cordialement,
    L'équipe Led'z Guitar

    -----
    Images attachées Images attachées
    Dernière modification par Antoane ; 19/05/2015 à 19h53. Motif: Ajout balises [code]

  2. #2
    ranarama

    Re : Problème programme Arduino !

    bsr. Si vous n'apporter pas assez d’énergie électrique (à cause d'un temps trop court) à la led, faut pas s'attendre à ce qu'elle restitue de l’énergie (qu'elle n'as pas reçu) sous forme lumineuse. Faudrais des leds haute luminosité plus gourmande du coup
    Dernière modification par ranarama ; 19/05/2015 à 19h53.

  3. #3
    Yoruk

    Re : Problème programme Arduino !

    Utilise des tableaux dans ton code, histoire de l'alléger et de le rendre plus lisible...

    mais nous ne parvenons pas à faire s'opérer le changement de gamme grâce à la fenêtre de contrôle
    C'est à dire ?

    Un shéma global du programme stp ? C'est pas clair....
    La robotique, c'est fantastique !

  4. #4
    Ledz-Guitar

    Re : Problème programme Arduino !

    Bonjour et merci pour vos réponses !
    Cela nous permet d'orienter notre recherche et d'arrêter d'explorer certaines pistes inutiles !
    Concernant la programmation, nous avons commencé à exploiter Arduino cette année pour le projet et ne maitrisons pas encore toutes les fonctionnalités. J'ai réalisé quelques recherches concernant les tableaux et je ne parviens pas à comprendre à quoi cela peut nous servir puisque nous ne stockons pas de données (je n'ai compris que cela comme utilité des tableaux...

    Pour vous donner une vision schématique du système voici comme on aimerait que cela se passe :

    - l'utilisateur choisi la gamme qu'il veut afficher sur sa guitare grâce au "Moniteur Série" arduino.
    -A l'aide d'une fonction "wich", la combinaison de LED demandée s'allume sur la guitare jusqu'à ce que l'utilisateur demande d'afficher une autre gamme.
    - une autre combinaison de LED s'affiche alors, etc.

    Pour simplifier le système, on voudrait simplement le faire fonctionner en rentrant un nombre pour choisir la combinaison de LED à éclairer.
    Le problème est qu'avec le programme présenté en premier message, on ne parvient pas à faire s'opérer le changement de combinaison de LED. Je ne sais pas à quoi cela est du...

    Merci pour vos réponses !

  5. A voir en vidéo sur Futura
  6. #5
    Yoruk

    Re : Problème programme Arduino !

    Citation Envoyé par Ledz-Guitar Voir le message
    J'ai réalisé quelques recherches concernant les tableaux et je ne parviens pas à comprendre à quoi cela peut nous servir puisque nous ne stockons pas de données (je n'ai compris que cela comme utilité des tableaux...
    Ça t'aurai permis de réduire considérablement le nombre de lignes...

    Citation Envoyé par Ledz-Guitar Voir le message
    Pour simplifier le système, on voudrait simplement le faire fonctionner en rentrant un nombre pour choisir la combinaison de LED à éclairer.
    Regarde du coté des "switch case" (cf doc arduino)
    La robotique, c'est fantastique !

  7. #6
    Yoruk

    Re : Problème programme Arduino !

    Et un vrai schéma lisible avec les connections Arduino présentées clairement serait un plus (le schéma du 1er post est un poil petit)...
    La robotique, c'est fantastique !

  8. #7
    Ledz-Guitar

    Re : Problème programme Arduino !

    Merci, on va regarder cela !!

  9. #8
    ranarama

    Re : Problème programme Arduino !

    Citation Envoyé par Ledz-Guitar Voir le message
    J'ai réalisé quelques recherches concernant les tableaux et je ne parviens pas à comprendre à quoi cela peut nous servir puisque nous ne stockons pas de données (je n'ai compris que cela comme utilité des tableaux...
    [...]
    Le problème est qu'avec le programme présenté en premier message, on ne parvient pas à faire s'opérer le changement de combinaison de LED. Je ne sais pas à quoi cela est du...
    Bjr.
    un souci tout de mm, le fait que l’œil du guitariste ne voit pas le manche quand il joue ceci étant si on l'envisager comme une version déporté genre une guitare "fake" à accroché au mur pour se guider c parfaitement utilisable.

    Il faudrait effectivement utiliser un tableau 2D correspondant tout simplement au manche donc 6 lignes * 12 colonnes car si le prog n'as pas de données à écrire, il en a à lire : les gammes.
    Les avantages sont multiples : lisibilité du programme et de nouvelles fonctions indispensables aux guitaristes : la transposition d'une gamme sur toutes les tonalités (simplement en décalant la colonnes ou le prog commencera la lecture).
    En gros faudra un tableau 6 lignes * 12 colonnes par gammes (pentatonique, majeure, mineure..etc il y en a légion mais mettez-y au moins ces trois tableau là, en sus d'un tableau de "mémoire tampon" qui sert juste à mémoriser la gamme transposé à la tonalité voulue, celle que l'on voudra afficher/jouer).

    Pour votre pb de leds, impossible d'aider il manque les commentaires sur les variables, les conditions, boucles, il manque le décalages du code sur les { ... bref c'est un code pas illisible mais pas loin donc normal et logique qu'il y ai une erreur dedans. Travailler ce point (la présentation du code) avant de chercher à débugger ou d'implémenter des tableaux.

    Sinon j'aime bien votre projet
    Dernière modification par ranarama ; 22/05/2015 à 09h43.

  10. #9
    Ledz-Guitar

    Re : Problème programme Arduino !

    Merci pour vos réponses.
    Nous avons exploré les pistes fournies et sommes parvenus à trouver des solutions.
    La guitare est maintenant terminée. Peut-être nous modifierons encore le programme mais tout est opérationnel (photo en PJ).

    Bonne journée !
    Images attachées Images attachées  

  11. #10
    Antoane
    Responsable technique

    Re : Problème programme Arduino !

    Hej,
    n'hésite pas à publier ton programme et ton schéma ici, ça pourra servir à qqn d'autre.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  12. #11
    ranarama

    Re : Problème programme Arduino !

    bjr. Content que vous ayez bouclé le projet. La Guitare est impressionnante, j'en ai jamais vu des comme ça wow !
    La gamme de mi pentatonique yes bon choix. sinon moi je lui rajoute systématiquement la "blue note" sur le Bb c'est mon coté africain qui ressort j'imagine hehe.. Voici une variante de plus à rajouter à votre code ! Alors maintenant... A quand la lecture des fichier GuitarPro ?!
    Bonne fin de w-e prolongé

  13. #12
    Yoruk

    Re : Problème programme Arduino !

    Très chouette effectivement !
    La robotique, c'est fantastique !

Discussions similaires

  1. Arduino Problème Programme
    Par Arn40aud dans le forum Électronique
    Réponses: 62
    Dernier message: 04/04/2015, 15h25
  2. vérification programme arduino
    Par elroro66 dans le forum Électronique
    Réponses: 7
    Dernier message: 05/01/2015, 20h41
  3. programme arduino
    Par julienslr dans le forum Électronique
    Réponses: 26
    Dernier message: 24/07/2014, 11h33
  4. Programme sur Arduino
    Par invite364f7719 dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 22/02/2013, 22h36
Découvrez nos comparatifs produits sur l'informatique et les technologies.