Partage
  • Partager sur Facebook
  • Partager sur Twitter

Son et image sur Arduino

    10 février 2019 à 15:14:40

    Bonjour, je travaille actuellement sur un projet où j'aimerai émettre des sons et des images sur des modules Arduino. 

    J'ai écris deux codes : un pour les animations sur mon écran OLED et l'autre pour ma carte SD associée à un haut parleur pour émettre des sons. 

    Lorsque je compile les deux codes séparément tout fonctionne. J'aimerai maintenant mettre en commun les deux codes pour avoir des effets sonores lorsque les images sont émises. Lorsque que je compile, plus rien ne se passe et ce dès que je rentre les lignes de code " tmrpcm.play" lorsque je ne l'a met pas tout fonctionne. 

    Est-ce que c'est un problème au niveau du "delay" ? Pourquoi l'Arduino ne réalise aucune tâche même si le son est plus loin dans le code? Ci joint le début de mon code 

    Merci

    #include <SPI.h>

    #include <Wire.h>

    #include <Adafruit_GFX.h>

    #include <Adafruit_SSD1306.h>

    #include <SD.h> // Inclure la librairie SD

    #define SDPIN 10 // Chip Select du lecteur SD

    #include <TMRpcm.h> 

    File myFile;

    TMRpcm tmrpcm;

    char caractere;

    #define SCREEN_WIDTH 128 // OLED display width, in pixels

    #define SCREEN_HEIGHT 32 // OLED display height, in pixels

    #define OLED_RESET     4 // Reset pin # (or -1 if sharing Arduino reset pin)

    Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

    #define NUMFLAKES     10 // Number of snowflakes in the animation example

    #define LOGO_HEIGHT   16

    #define LOGO_WIDTH    16

    int max_hp = 100;

    int max_ammo = 20;

    int hp = max_hp;

    int ammo = max_ammo;

    int last_hp = hp-1;

    int last_ammo = ammo-1;

    boolean test_disp = 1;

    int i =0;

    int j =0;

    int z =0;

    int minutes = 15;

    int secondes = 0;

    void setup() {

      // put your setup code here, to run once:

      Serial.begin(9600);  

      tmrpcm.speakerPin = 9; // Speaker sur la pin 9

      tmrpcm.setVolume(4); // gestion du volume de 0 à 7

      tmrpcm.quality(1); // qualitée audio 0 ou 1

      display.begin(SSD1306_SWITCHCAPVCC,0x3C);

        // Initialisation de la carte SD

      if (!SD.begin(SDPIN)) { 

        Serial.println("initialization failed!"); //  S'il y a un soucis "initialization failed!" s'affichera au moniteur

        return;

      }

      // Show initial display buffer contents on the screen --

      // the library initializes this with an Adafruit splash screen.

      // Clear the buffer

      display.clearDisplay();

       testfillrect();

       display.display();

       delay(10000);

       display.clearDisplay();

       delay(1000);

       delay(1000);

       tmrpcm.play("net.wav"); 

       delay(10000);

    • Partager sur Facebook
    • Partager sur Twitter
      12 février 2019 à 12:08:36

      Le but de delay, c'est de faire une temporisation.

      Donc ton son "net.wav" ne devrait être joué que 12 secondes après le début du programme.

      Est-ce vraiment ce que tu veux ?

      • Partager sur Facebook
      • Partager sur Twitter
        23 février 2019 à 13:16:52

        lorrio a écrit:

        Le but de delay, c'est de faire une temporisation.

        Donc ton son "net.wav" ne devrait être joué que 12 secondes après le début du programme.

        Est-ce vraiment ce que tu veux ?


        Bonjour et merci pour ta disponibilité. En fait j'ai un petit écran OLED avec des animations et mon petit haut parleur qui émet des sons. Comme tu peux le voir après une animation j'essaye d'émettre un son. Or quand je lance le programme, rien ne se passe. J'ai essayé de compacter mes branchements car je pensais que les composants consomnaient trop d'énergie mais ça ne marche toujours pas. Si j'enlève par exemple le "tmrpcm.play" de mon code, l'écran affiche quelque chose
        • Partager sur Facebook
        • Partager sur Twitter
          23 février 2019 à 17:57:42

          Si tu utilises un arduino UNO, il n'est pas impossible que ton programme manque de mémoire RAM.

          En effet, gérer un écran de 128x32, une carte SD et un flux audio nécessite une quantité non négligeable de mémoire.

          Une bonne chose à faire serait d'afficher des messages d'erreur pour toutes les fonctions retournant un résultat.

          Par exemple, c'est le cas de display.begin qui retourne false si l'initialisation échoue par manque de mémoire ou autre.

          if ( !display.begin(SSD1306_SWITCHCAPVCC,0x3C) ) {
              Serial.print("Screen Init ERROR !!!");
          }



          -
          Edité par lorrio 23 février 2019 à 17:59:03

          • Partager sur Facebook
          • Partager sur Twitter
            24 février 2019 à 14:41:27

            lorrio a écrit:

            Si tu utilises un arduino UNO, il n'est pas impossible que ton programme manque de mémoire RAM.

            En effet, gérer un écran de 128x32, une carte SD et un flux audio nécessite une quantité non négligeable de mémoire.

            Une bonne chose à faire serait d'afficher des messages d'erreur pour toutes les fonctions retournant un résultat.

            Par exemple, c'est le cas de display.begin qui retourne false si l'initialisation échoue par manque de mémoire ou autre.

            if ( !display.begin(SSD1306_SWITCHCAPVCC,0x3C) ) {
                Serial.print("Screen Init ERROR !!!");
            }
            • J'ai bien rajouté dans mon code les messages d'erreur. Comme tu peux le voir sur la photo lorsque je lance mon code dans ma carte tout fonctionne, après le dernier "if" je lui fais simplement afficher quelque chose sur l'écran. 

                     Par contre dès que je rajouter une ligne "tmrpcm.play("...wav")" pour jouer du son par exemple après le deuxième if ou même juste après TMRpcm.quality(1), et bien j'ai cette fois ci dans mon moniteur série le premier message d'erreur à savoir celui de l'écran OLED. 

            je ne comprends donc pas pourquoi en rajoutant une ligne pour jouer le son l'écran devient indisponible. Niveau mémoire je suis à 63% et 68%.

            -
            Edité par lorrio il y a environ 20 heures



            • Partager sur Facebook
            • Partager sur Twitter

            Son et image sur Arduino

            × 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