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 :

Allumer led selon array


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 22
    Par défaut Allumer led selon array
    Bonjour
    j'ai un projet pour l'école dans laquelle je travaille.
    J'aimerai faire un robot programmable pour lequel on enregistre dans sa mémoire un parcours à exécuter.

    Avant de m'attaquer aux moteurs, j'essaye de faire la même chose avec des leds et je suis bloqué.
    j'arrive bien à enregistrer mon programme de bouton dans un tableau mais je bloque sur comment allumer mes leds une fois que mon programme est fini.
    J'ai 4 boutons et 4 leds + un bouton pour lancer le programme une fois fini.

    Si quelqu'un a une idée ou un conseil, ce serait super sympa !

    Voici mon script :
    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
    38
    39
    40
    41
    42
    43
    44
    45
    int arr[10];
    boolean previous = LOW;
    unsigned long time1 = 0;
    int debounce = 200;
    unsigned long time2 = 0;
    int index_state = 0;
     
    int play_button = 13; //define pin # for play button
     
    int button[4] = {2,4,6,8}; //store button pins in an array
    int leds[4] = {3,5,7,9}; //store led pins in an array
     
    void setup()
    {
      for(int n=0;n<10;n++) arr[n] = 0;//initialisition
     Serial.begin(9600);
    }
     
    void loop(){
     boolean mode = digitalRead(2) || digitalRead(4) || digitalRead(6) || digitalRead (8);
     while(mode == LOW) mode = digitalRead(2) || digitalRead(4) || digitalRead(6) || digitalRead (8);//wait here till one of the pushbutton goes high;
     //Serial.println("value");
     if( mode == HIGH && previous == LOW && millis() - time1 > debounce) {
     //find out which one is high and store that value in array;
     if(digitalRead(2)) arr[index_state] = 2;
     else if(digitalRead(4)) arr[index_state] = 4;
     else if(digitalRead(6)) arr[index_state] = 6;
     else if(digitalRead(8)) arr[index_state] = 8;
     else ;
     
     //print the value and the index;
     Serial.print(arr[index_state]);
     Serial.print(" Stored in index: ");
     Serial.println(index_state);
     index_state = (index_state + 1) % 10;
     //update value of time1 for button debouncing
     time1 =  millis();
    }
     
     
      //update the value of previous button state
      previous = digitalRead(2) || digitalRead(4) || digitalRead(6) || digitalRead(8);
     
     
      }
    C'est un script que j'ai trouvé tout fait et que j'ai adapté à mes besoins, mais je n'arrive pas à répéter ma séquence de boutons avec mes leds.

  2. #2
    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
    Il semble que vous ayez posé la question sur le forum arduino aussi.
    Généralement on évite de faire les devoirs des élèves à leur place sinon ils n’apprennent rien et c’est tricher...
    Qu’avez vous essayé, montrez nous vos tests

    Par exemple comment pourriez vous tester si le bouton pour jouer la séquence est appuyé ?
    Comment allumeriez vous une LED ? Comment l’éteindre ensuite ?
    Comment lire la valeur à une certaine position dans le tableau ?
    étudiez la structure d’une boucle for

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 22
    Par défaut
    Bonjour
    oui je n'ai pas envie qu'on le fasse à ma place mais j'ai besoin de conseils. Ce n'est pas un devoir de classe, je suis enseignant en élémentaire et la robotique est maintenant au programme. Le problème est que les robots coûtent cher. J'ai un peu de matos qui traîne à la maison alors j'essaye de faire un robot moi-même mais je n'en suis qu'aux balbutiements.

    je sais allumer une led et l'éteindre. J'ai aussi réussi à coder en dur une séquence et à la faire jouer par les leds.

    Je n'arrive pas à faire le reste.

    J'ai trop de lacunes mais ce projet me tient vraiment à coeur car il permettrait aux élèves de s'initier à la programmation.

  4. #4
    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 Jérôme

    Une petite remarque, tu devrais initialiser tes entrées/sortie avec pinMode() pour éviter des surprises. et mettre tes sorties LED à 0 au départ avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	for(int n=0;n<10;n++) {digitalWrite(leds[n], LOW);}
    dans setup().
    Il y a d'excellents conseils ici.

    Ensuite, pour allumer tes LED, une petite routine:
    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
    void ledDisplay()
    {
    	for(int n=0; n<10; n++)
    	{
    		if (arr[n] != 0)  // Si un boutton a ete enregistré
    		{
    			digitalWrite(leds[n], HIGH);
    		}
    		else
    		{
    			digitalWrite(leds[n], LOW);
    		}
    		// Mettre eventuellement une temporisation entre chaque pas
    	}
    }
    à appeler quand nécessaire par un
    PS:je n'ai pas essayé ces programmes!

    A+
    Cordialement
    jpbbricole

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 22
    Par défaut
    Merci !
    Je vais regarder ça.

Discussions similaires

  1. Allumer LED via MATLAB
    Par jp_developpeur dans le forum MATLAB
    Réponses: 6
    Dernier message: 25/03/2009, 12h21
  2. Led allumé, led éteint
    Par matchieu dans le forum LabVIEW
    Réponses: 45
    Dernier message: 18/06/2007, 16h39
  3. Allumer des led via port série en VB, Python, C, ... autres langages ?
    Par damdev955 dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 02/06/2007, 12h03
  4. allumer une led sur le clavier
    Par Ludo_360 dans le forum Delphi
    Réponses: 3
    Dernier message: 04/05/2007, 11h35
  5. Réponses: 3
    Dernier message: 04/04/2007, 16h11

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