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 :

Nom de ruban Led en paramètre


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 246
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 246
    Par défaut Nom de ruban Led en paramètre
    Bonjour,

    Je cherche à allumer 4 Digits 7 segments qui sont en fait 4 rubans Led adressable, les digits sont des compteurs de 1 à 5 incrémentés par 2 BP + et - pour chaque Digit

    J'y suis arrivé mais avec 4 routines différentes, 1 avec chaque nom de ruban et pin de sortie

    Je voudrais réduire le code et ne faire qu'une routine, il faudrait donc que je passe le numéro de la pin en paramètre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const byte nombreDeSegments_Digit_Faute_Joueur_Local = sizeof Segments_Digit_Faute_Joueur_Local;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Adafruit_NeoPixel strip_Faute_Joueur_Local = Adafruit_NeoPixel(LEDS, 7, NEO_GRB + NEO_KHZ800);
    Ici, il faudrait donc pouvoir changer le 7 en variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strip_Faute_Joueur_Local.setPixelColor(Num_Led, 255, 165, 0);
    Je remplacerai strip_Faute_Joueur_Local en Strip_Digit puisque c'est 4 fois la même chose

    Est-ce clair ?

    Merci pour votre aide

    Merci

  2. #2
    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
    Bonsoir electrosat03
    Citation Envoyé par electrosat03 Voir le message
    Je voudrais réduire le code et ne faire qu'une routine, il faudrait donc que je passe le numéro de la pin en paramètre
    Une méthode consiste à mettre en tableau tes 4 rubans de LED adressables, exemple avec des NeoPixel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Adafruit_NeoPixel ledRuban[] =
    {
    	Adafruit_NeoPixel (20, 12, NEO_GRB + NEO_KHZ800),
    	Adafruit_NeoPixel (20, 11, NEO_GRB + NEO_KHZ800),
    	Adafruit_NeoPixel (20, 10, NEO_GRB + NEO_KHZ800),
    	Adafruit_NeoPixel (20,  9, NEO_GRB + NEO_KHZ800),
    };
    Puis, à l'usage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	ledRuban[0].begin();
    	ledRuban[1].begin();
     
    	ledRuban[0].setPixelColor(8, 0, 255, 0);
    	ledRuban[0].show();
     
    	ledRuban[1].setPixelColor(9, 0, 0, 255);
    	ledRuban[1].show();
    Puis tu crée une fonction où tu n'as plus qu'à passer l'index du ruban et les autres paramètres nécessaires à ce ruban.

    Cordialement
    jpbbricole

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 246
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 246
    Par défaut
    Salut jpbbricole,

    Je ne comprends pas la seconde partie du code, tu pourrais développer

    Merci

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 246
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 246
    Par défaut
    Bon, OK ça fonctionne MAIS

    Je dois quand même mettre ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LedRuban[2].setPixelColor(Num_Led, 0, 255, 0);
    Je voudrais donc pouvoir passer le chiffre [2] dans un paramètre afin de n'avoir qu'une procédure pour l'affichage du chiffre sur le digit désigné par l'appui du BP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    const byte nombreDeSegments_Digit_Faute_Joueur_Local = sizeof Segments_Digit_Faute_Joueur_Local;
    const byte nombreDeSegments_Digit_Faute_Equipe_Local = sizeof Segments_Digit_Faute_Equipe_Local;
    const byte nombreDeSegments_Digit_Faute_Joueur_Visiteur = sizeof Segments_Digit_Faute_Joueur_Visiteur;
    const byte nombreDeSegments_Digit_Faute_Equipe_Visiteur = sizeof Segments_Digit_Faute_Equipe_Visiteur;
     
    //Serial.println(nombreDeSegments);
    Adafruit_NeoPixel LedRuban[] =
    {
    Adafruit_NeoPixel(LEDS, 5, NEO_GRB + NEO_KHZ800),
    Adafruit_NeoPixel(LEDS, 6, NEO_GRB + NEO_KHZ800),  
    Adafruit_NeoPixel(LEDS, 7, NEO_GRB + NEO_KHZ800),
    Adafruit_NeoPixel(LEDS, 8, NEO_GRB + NEO_KHZ800),
    };
    Je ne comprends pas Merci pour ton aide


    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
    // ***************** Affichage du chiffre sur le Digit Nommé *****************
    void afficher_Digit(const byte chiffre) // Procédure Afficher Digit Faute_Joueur_Local
    { 
      if (chiffre < nombreDeSegments_Digit_Faute_Joueur_Local) // Nombre de segment = 6 (de 1 à 6, chiffre de 0 à 5)
      { 
        for (byte segment = 0; segment < 7; segment++) // segment = barre de Led (démarrage;fin;+1)
    	{ // Débur For
          if (bitRead(Segments_Digit_Faute_Joueur_Local[chiffre], segment) == 0) 
    	  {
            // le segment est éteint
          } else 
    	  {
            // le segment est allumé
            int Num_Led = (6 * segment);  // Numéro de la Led de démarrage du segment à afficher   	
     
            for(Num_Led ; Num_Led <((6 * segment)+6); (Num_Led++)) // Boucle pour allumer les Led (N° Led début; N° Led fin;N° Led+1)
            { // Debut For
              if (curValue_Digit_Faute_Joueur_Local == 5)
              {
              LedRuban[2].setPixelColor(Num_Led, 255, 0, 0); // (N° de la Led,Rouge,Vert,bleu) = Rouge
              }          
              else if (curValue_Digit_Faute_Joueur_Local == 4)
              {
              LedRuban[2].setPixelColor(Num_Led, 255, 165, 0); // (N° de la Led,Rouge,Vert,bleu) = Orange
              }
              else if(curValue_Digit_Faute_Joueur_Local < 4)
              {
              LedRuban[2].setPixelColor(Num_Led, 0, 255, 0); // (N° de la Led,Rouge,Vert,bleu) = Vert
              }
          	} // Fin For
     
            LedRuban[2].show(); // Affichage des segments avec la couleur
          }
        }
      }
    }

  5. #5
    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 electrosat03

    Pour n'avoir plu qu'une fonction, il faut lui passer le numéro du ruban concerné en paramètre, RubanIndex, et utiliser ainsi afficher_Digit(ruban, valeur);

    Pour ce faire modifier afficher_Digit ainsi:

    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
    // ***************** Affichage du chiffre sur le Digit Nommé du ruban RubanIndex *****************
    void afficher_Digit(int RubanIndex, const byte chiffre) // Procédure Afficher Digit Faute_Joueur_Local
    {
    	if (chiffre < nombreDeSegments_Digit_Faute_Joueur_Local) // Nombre de segment = 6 (de 1 à 6, chiffre de 0 à 5)
    	{
    		for (byte segment = 0; segment < 7; segment++) // segment = barre de Led (démarrage;fin;+1)
    		{ // Débur For
    			if (bitRead(Segments_Digit_Faute_Joueur_Local[chiffre], segment) == 0)
    			{
    				// le segment est éteint
    			} else
    			{
    				// le segment est allumé
    				int Num_Led = (6 * segment);  // Numéro de la Led de démarrage du segment à afficher
     
    				for(Num_Led ; Num_Led <((6 * segment)+6); (Num_Led++)) // Boucle pour allumer les Led (N° Led début; N° Led fin;N° Led+1)
    				{ // Debut For
    					if (curValue_Digit_Faute_Joueur_Local == 5)
    					{
    						LedRuban[RubanIndex].setPixelColor(Num_Led, 255, 0, 0); // (N° de la Led,Rouge,Vert,bleu) = Rouge
    					}
    					else if (curValue_Digit_Faute_Joueur_Local == 4)
    					{
    						LedRuban[RubanIndex].setPixelColor(Num_Led, 255, 165, 0); // (N° de la Led,Rouge,Vert,bleu) = Orange
    					}
    					else if(curValue_Digit_Faute_Joueur_Local < 4)
    					{
    						LedRuban[RubanIndex].setPixelColor(Num_Led, 0, 255, 0); // (N° de la Led,Rouge,Vert,bleu) = Vert
    					}
    				} // Fin For
     
    				LedRuban[RubanIndex].show(); // Affichage des segments avec la couleur
    			}
    		}
    	}
    }
    Cordialement
    jpbbricole

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 246
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 246
    Par défaut
    Salut,

    Merci pour ton aide, cela m'a bien aidé et j'ai terminé mon codage qui fonctionne parfaitement
    Je tiens à remercier également hbachetti sur le forum arduino pour son aide.

    Il me reste à commander le matos pour passer à la réalisation physique du projet

    Merci

  7. #7
    Expert confirmé

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

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 910
    Par défaut
    Les 2 if ne peuvent pas coexister ???
    ça veut dire quoi?

    si vous postiez tout le code, on pourrait avoir une vision d'ensemble, c'est difficile d'apporter des commentaires avec une vue limitée

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 246
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 246
    Par défaut
    Salut,

    OK, c'est bon, je ne sais pas pourquoi ça n'a pas fonctionné avant.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. procedure avec nom de table/ sequence en paramètre
    Par ouatmad dans le forum Forms
    Réponses: 3
    Dernier message: 09/11/2007, 14h28
  2. Faire du nom de la table un paramètre dans une requête
    Par sofiane1111 dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/09/2007, 14h27
  3. Réponses: 1
    Dernier message: 11/09/2007, 10h12
  4. Créer une table dont les noms de colonnes sont des paramètres
    Par Mythrandil dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 08/09/2007, 15h08
  5. Passer le nom d'un textBox en paramètre
    Par Poussy-Puce dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/01/2006, 17h30

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