Partage
  • Partager sur Facebook
  • Partager sur Twitter

flipper aduino

je cree mon flipper pour un projet scolaire.

    30 janvier 2023 à 9:29:58

    Je n'arrive pas a coordonner les bouton poussoir avec lecran lcd.

    mon code:

    #include <LiquidCrystal.h>

    LiquidCrystal lcd(7, 8, 9, 10, 11, 12);  //Pins où on va connecter l'écran (RS, E, D4, D5, D6, D7)

    const int Pin2_Start = 2; // Bouton commencer
    const int Pin3_5_Points = 3; // 5 points
    const int Pin4_10_Points = 4; // 10 points
    const int Pin5_15_Points = 5; // 15 points
    const int Pin6_20_Points = 6; // 20 points

    int buttonState_Start = 0;
    int buttonState5_Points = 0;
    int buttonState10_Points = 0;
    int buttonState15_Points = 0;
    int buttonState20_Points = 0;

    int score = 0;
    int laBoule = 1;

    String texte = "";

    void setup() {
      Serial.begin(9600);
      lcd.begin(16, 2);
     
      pinMode(Pin2_Start, INPUT_PULLUP);
      pinMode(Pin3_5_Points, INPUT_PULLUP);
      pinMode(Pin4_10_Points, INPUT_PULLUP);
      pinMode(Pin5_15_Points, INPUT_PULLUP);
      pinMode(Pin6_20_Points, INPUT_PULLUP);
       
      lcd.clear();                 //efface le message affiché
      lcd.setCursor(0, 0);          //Place le pointeur sur la colonne 0, ligne 0
      lcd.write("Joue au flipper");      //écrit le message
      lcd.setCursor(0, 1);         //Place le pointeur sur la colonne 0, ligne 1
      lcd.write("Cree par Lisa");    //écrit le message
     
      delay(3500);                 //attente 3.5 secondes

      lcd.clear();                 //efface le message affiché
      lcd.setCursor(0, 0);          //Place le pointeur sur la colonne 0, ligne 0
      lcd.write("Appuie pour");      //écrit le message
      lcd.setCursor(0, 1);         //Place le pointeur sur la colonne 0, ligne 1
      lcd.write("commencer!");    //écrit le message
    }

    void loop() {

      buttonState_Start = digitalRead(Pin2_Start);
      Serial.println(buttonState_Start);
      delay(2000);
      buttonState5_Points = digitalRead(Pin3_5_Points);
      buttonState10_Points = digitalRead(Pin4_10_Points);
      buttonState15_Points = digitalRead(Pin5_15_Points);
      buttonState20_Points = digitalRead(Pin6_20_Points);
     
      if (buttonState_Start == 1)
      {
        lcd.clear();                 //efface le message affiché
        lcd.setCursor(0, 0);          //Place le pointeur sur la colonne 0, ligne 0
        lcd.write("Lance la boule!");      //écrit le message
        laBoule = 1;
        score = 0;
      }
      if (buttonState5_Points == 1)
      {
        lcd.clear();                 //efface le message affiché
        lcd.setCursor(0, 0);          //Place le pointeur sur la colonne 0, ligne 0
        lcd.write("Bravo : 5 points");      //écrit le message
        score = score + 5;
        lcd.setCursor(0, 1);          //Place le pointeur sur la colonne 0, ligne 0
        texte = "Score : " + score;
        lcd.write("Score : " + score);      //écrit le message
        laBoule = laBoule + 1;
        delay(3500);
      }
     if (buttonState10_Points == 1)
      {
        lcd.clear();                 //efface le message affiché
        lcd.setCursor(0, 0);          //Place le pointeur sur la colonne 0, ligne 0
        lcd.write("Bravo : 10 points");      //écrit le message
        score = score + 10;
        lcd.setCursor(0, 1);          //Place le pointeur sur la colonne 0, ligne 0
        texte = "Score : " + score;
        lcd.write("Score : " + score);      //écrit le message
        laBoule = laBoule + 1;
        delay(3500);
      }
      if (buttonState15_Points == 1)
      {
        lcd.clear();                 //efface le message affiché
        lcd.setCursor(0, 0);          //Place le pointeur sur la colonne 0, ligne 0
        lcd.write("Bravo : 15 points");      //écrit le message
        score = score + 15;
        lcd.setCursor(0, 1);          //Place le pointeur sur la colonne 0, ligne 0
        texte = "Score : " + score;
        lcd.write("Score : " + score);      //écrit le message
        laBoule = laBoule + 1;
        delay(3500);
      }
      if (buttonState20_Points == 1)
      {
        lcd.clear();                 //efface le message affiché
        lcd.setCursor(0, 0);          //Place le pointeur sur la colonne 0, ligne 0
        lcd.write("Bravo : 20 points");      //écrit le message
        score = score + 20;
        lcd.setCursor(0, 1);          //Place le pointeur sur la colonne 0, ligne 0
        texte = "Score : " + score;
        lcd.write("Score : " + score);      //écrit le message
        laBoule = laBoule + 1;
        delay(3500);
      }

      buttonState_Start = 0;
      buttonState5_Points = 0;
      buttonState10_Points = 0;
      buttonState15_Points = 0;
      buttonState20_Points = 0;

    Mon câblage:

    • Partager sur Facebook
    • Partager sur Twitter

    Lisa FOLLACO

    Société e-Nodev

    Apprentie Systèmes Numériques

      30 janvier 2023 à 9:32:55

      Bonjour,

      Le message qui suit est une réponse automatique activée par un membre de l'équipe de modération. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
      Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

      Pour plus d'informations, nous vous invitons à lire les règles générales du forum

      Merci de colorer votre code à l'aide du bouton Code

      Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Code de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: cpp;">Votre code ici</pre>.

      Merci de modifier votre message d'origine en fonction.

      Manque de Politesse

      Votre message ne comporte pas ou peu de formules de politesse (« Bonjour », « Merci », « Au revoir », etc.). Les règles du site exigent que chaque nouveau message comporte un minimum de politesse. Après tout, les gens qui répondent le font gratuitement, sur leur temps libre. Ils méritent bien un minimum de considération, n'est-ce pas ?

      Liens conseillés

      • Partager sur Facebook
      • Partager sur Twitter
        30 janvier 2023 à 11:04:38

         "coordonner les boutons", ça veut dire quoi ?

        Il faudrait une description précise de ce que le truc devrait faire. Parce que là, tout ce qu'on peut dire, c'est que le programme fait exactement ce qui est écrit.

        --

        Il y a beaucoup de code similaire

        En première approche, on peut remplacer

         if (buttonState20_Points == 1)
          {
            lcd.clear();                 //efface le message affiché
            lcd.setCursor(0, 0);          //Place le pointeur sur la colonne 0, ligne 0
            lcd.write("Bravo : 20 points");      //écrit le message
            score = score + 20;
            lcd.setCursor(0, 1);          //Place le pointeur sur la colonne 0, ligne 0
            texte = "Score : " + score;
            lcd.write("Score : " + score);      //écrit le message
            laBoule = laBoule + 1;
            delay(3500);
          }

        par

        test_button(buttonState_20pts, 20);
        

        (et pareil pour ses copains)


        avec

        void test_button(int state, int nb_points)
        {
          if (state == 1)
          {
            lcd.clear();                 //efface le message affiché
            lcd.setCursor(0, 0);          //Place le pointeur sur la colonne 0, ligne 0
            lcd.write("Bravo : ");
            lcd.print(nb_points);
            lcd.write("points"); 
            score = score + nb_points;
            lcd.setCursor(0, 1);          //Place le pointeur sur la colonne 0, ligne 0
            texte = "Score : " + score;
            lcd.write("Score : " + score);      //écrit le message
            laBoule = laBoule + 1;
            delay(3500);
          }

        ce qui simplifierait les choses.

         --

         Pendant qu'on y est, il faudrait essayer d'avoir un peu plus d'abstraction. Ecrire 5 lignes

          lcd.clear();                 //efface le message affiché
          lcd.setCursor(0, 0);          //Place le pointeur sur la colonne 0, ligne 0
          lcd.write("Joue au flipper");      //écrit le message
          lcd.setCursor(0, 1);         //Place le pointeur sur la colonne 0, ligne 1
          lcd.write("Cree par Lisa");    //écrit le message

        chaque fois qu'on veut afficher quelque chose, c'est une galère. Ca serait mieux d'avoir

        afficher("Joue au flipper",
                 "Ecrit par Lisa");
        

        y a juste une malheureuse petite fonction à écrire.




        Ensuite, delay(3500); ça fait trois secondes et demie, pendant lequel il ne se passe rien, et les boutons n'ont aucun effet, ce qui parait long.

        -
        Edité par michelbillaud 30 janvier 2023 à 11:16:33

        • Partager sur Facebook
        • Partager sur Twitter

        flipper aduino

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown