Go Down

Topic: Probleme de compilation carte arduino avec Sensor HC-SR04, et DFPLayer Mini (Read 207 times) previous topic - next topic

aliceecila

Bonjour,

je débute sur Arduino, et j'ai un problème de compilation sur la carte.

Je suis un un peu larguée et ai besoin de votre aide..

Le but étant de déclencher une musique avec un détecteur de distance (capteur HC-SR04), et un DFPlayer Mini.

Je ne comprend pas où pourrait se trouver une erreur dans le script.
Quelqu'un a déjà testé ce genre de script et pour qui cela a fonctionné ?

Merci de vos réponses


Code: [Select]
#include < SoftwareSerial.h >
#include < SD.h>
#include < NewPing.h >

#define TRIGGER_PIN  12  // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN     11  // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

void setup () {
  Serial.begin(9600);
  pinMode(7,OUTPUT);
  mp3_set_serial (Serial);  //set Serial for DFPlayer-mini mp3 module
  mp3_set_volume (15);
  //
  mp3_stop ();
}
void loop () {
  delay(50);                      // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
  int distance = sonar.ping_cm(); // Send ping, get ping time in microseconds (uS).
  Serial.print("Ping: ");
  Serial.print(distance); // Convert ping time to distance in cm and print result (0 = outside set distance range)
  Serial.println("cm");
  if (distance < 35)
  {
    delay(distance*10);
    mp3_random_play ();
  }
   /*delay (1000);
  mp3_next();
 
   if(Serial.available()){
    Serial.println(Serial.read());
    switch(Serial.read()){
      case 'p': mp3_play (1); break;
      case 'n': mp3_next (); break;
      case 'b': mp3_prev (); break;
      case 's': mp3_get_state (); break;
      case 'v': mp3_get_volume(); break;
      default: break;
    }
    delay(500);
  }
  */

/*
   mp3_play ();   //start play
   mp3_play (5);  //play "mp3/0005.mp3"
   mp3_next ();   //play next
   mp3_prev ();   //play previous
   mp3_set_volume (uint16_t volume);  //0~30
   mp3_set_EQ (); //0~5
   mp3_pause ();
   mp3_stop ();
   void mp3_get_state ();   //send get state command
   void mp3_get_volume ();
   void mp3_get_u_sum ();
   void mp3_get_tf_sum ();
   void mp3_get_flash_sum ();
   void mp3_get_tf_current ();
   void mp3_get_u_current ();
   void mp3_get_flash_current ();
   void mp3_single_loop (boolean state);  //set single loop
   void mp3_DAC (boolean state);
   void mp3_random_play ();
 */

infobarquee

bonjour,
et si tu mettais l'erreur, ca serait plus simple, non?
AUCUNE AIDE PAR MP

kamill

Bonjour,

- Il n'y a pas d'espace entre <> et le nom du fichier
Code: [Select]
#include <SoftwareSerial.h>
#include <SD.h>
#include <NewPing.h>


- Il n'y a pas l'include de la librairie de gestion du lecteur

- Il manque un } à la fin

aliceecila

Merci pour vos réponse, vous êtes hyper réactifs c'est chouette !

C'était bien un problème d'espace entre <> pour la library  merci !


Par contre je ne saisis pas pour la librairie de gestion du lecteur, ce n'est pas <SoftwareSerial.h> ?

J'ai en plus de nouveaux messages d'erreurs qui s'affichent en lien avec le lecteur du coup...

voici le message d'erreur :

Arduino : 1.8.2 (Mac OS X), Carte : "Arduino/Genuino Uno"

Documents/Arduino/new/new.ino: In function 'void setup()':
new:16: error: 'mp3_set_serial' was not declared in this scope
   mp3_set_serial (Serial);  //set Serial for DFPlayer-mini mp3 module
                         ^
new:17: error: 'mp3_set_volume' was not declared in this scope
   mp3_set_volume (15);
                     ^
new:19: error: 'mp3_stop' was not declared in this scope
   mp3_stop ();
             ^
Documents/Arduino/new/new.ino: In function 'void loop()':
new:30: error: 'mp3_random_play' was not declared in this scope
     mp3_random_play ();
                      ^
exit status 1
'mp3_set_serial' was not declared in this scope "










kamill

Non SoftwareSerial c'est uniquement pour la liaison série

Je pense que la librairie utilisée est celle ci
Par contre, elle est indiquée comme 'deprecated'

infobarquee

surtout que si tu oublie
Code: [Select]
#include <DFPlayer_Mini_Mp3.h>

ca ne risque pas de fonctionner
AUCUNE AIDE PAR MP

aliceecila

J'ai bien téléchargé la bibliothèque, j'ai même essayé avec DFRobot/DFRobotDFPlayerMini
et aucun des deux ne fonctionne.

J'ai tenté de télécharger par la plateforme interne d'arduino, et aussi en plaçant la bibliothèque directement dans le dossier de library mais elle ne s'active pas...

La bibliothèque n'est pas référencée comme étant obsolète et dans les sujets que je j'ai parcouru relatant des problèmes similaire, je n'ai pas trouvé de réponses pouvant m'éclairer.

Peu de personnes parle d'un problème venant de la bibliothèque ou d'un problème d'activation..
voici le code :

Code: [Select]
#include <DFRobotDFPlayerMini.h>
#include <SoftwareSerial.h>
#include <SD.h>
#include <NewPing.h>



#define TRIGGER_PIN  12  // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN     11  // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

void setup () {
  Serial.begin(9600);
  pinMode(7,OUTPUT);
  mp3_set_Serial (Serial);  //set Serial for DFPlayer-mini mp3 module
  mp3_set_volume (15);
  //
  mp3_stop ();
}
void loop () {
  delay(50);                      // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
  int distance = sonar.ping_cm(); // Send ping, get ping time in microseconds (uS).
  Serial.print("Ping: ");
  Serial.print(distance); // Convert ping time to distance in cm and print result (0 = outside set distance range)
  Serial.println("cm");
  if (distance < 35)
  {
    delay(distance*10);
    mp3_random_play ();
  }
}
   /*delay (1000);
  mp3_next();
 
   if(Serial.available()){
    Serial.println(Serial.read());
    switch(Serial.read()){
      case 'p': mp3_play (1); break;
      case 'n': mp3_next (); break;
      case 'b': mp3_prev (); break;
      case 's': mp3_get_state (); break;
      case 'v': mp3_get_volume(); break;
      default: break;
    }
    delay(500);
  }
  */

/*
   mp3_play ();   //start play
   mp3_play (5);  //play "mp3/0005.mp3"
   mp3_next ();   //play next
   mp3_prev ();   //play previous
   mp3_set_volume (uint16_t volume);  //0~30
   mp3_set_EQ (); //0~5
   mp3_pause ();
   mp3_stop ();
   void mp3_get_state ();   //send get state command
   void mp3_get_volume ();
   void mp3_get_u_sum ();
   void mp3_get_tf_sum ();
   void mp3_get_flash_sum ();
   void mp3_get_tf_current ();
   void mp3_get_u_current ();
   void mp3_get_flash_current ();
   void mp3_single_loop (boolean state);  //set single loop
   void mp3_DAC (boolean state);
   void mp3_random_play ();
 */


et le message d'erreur :

Arduino : 1.8.2 (Mac OS X), Carte : "Arduino/Genuino Uno"

Documents/Arduino/new/new.ino: In function 'void setup()':
new:17: error: 'mp3_set_Serial' was not declared in this scope
  mp3_set_Serial (Serial);  //set Serial for DFPlayer-mini mp3 module
                        ^
new:18: error: 'mp3_set_volume' was not declared in this scope
  mp3_set_volume (15);
                    ^
new:20: error: 'mp3_stop' was not declared in this scope
  mp3_stop ();
            ^
/Documents/Arduino/new/new.ino: In function 'void loop()':
new:31: error: 'mp3_random_play' was not declared in this scope
    mp3_random_play ();
                     ^
exit status 1
'mp3_set_Serial' was not declared in this scope



kamill

#include <DFRobotDFPlayerMini.h

??
Pourquoi cet include ? Ce n'est pas la librairie que tu utilises.

elektrax

sous ide 1.6.4 et windows7

Code: [Select]
#include <SoftwareSerial.h>
#include <SD.h>
#include <NewPing.h>
#include <DFPlayer_Mini_Mp3.h>
#include<SPI.h>

#define TRIGGER_PIN  12  // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN     11  // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

void setup () {
  Serial.begin(9600);
  pinMode(7,OUTPUT);
  mp3_set_serial (Serial);  //set Serial for DFPlayer-mini mp3 module
  mp3_set_volume (15);
  //
  mp3_stop ();
}
void loop () {
  delay(50);                      // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
  int distance = sonar.ping_cm(); // Send ping, get ping time in microseconds (uS).
  Serial.print("Ping: ");
  Serial.print(distance); // Convert ping time to distance in cm and print result (0 = outside set distance range)
  Serial.println("cm");
  if (distance < 35)
  {
    delay(distance*10);
    mp3_random_play ();
  }
  }
   /*delay (1000);
  mp3_next();
 
   if(Serial.available()){
    Serial.println(Serial.read());
    switch(Serial.read()){
      case 'p': mp3_play (1); break;
      case 'n': mp3_next (); break;
      case 'b': mp3_prev (); break;
      case 's': mp3_get_state (); break;
      case 'v': mp3_get_volume(); break;
      default: break;
    }
    delay(500);
  }
  */

/*
   mp3_play ();   //start play
   mp3_play (5);  //play "mp3/0005.mp3"
   mp3_next ();   //play next
   mp3_prev ();   //play previous
   mp3_set_volume (uint16_t volume);  //0~30
   mp3_set_EQ (); //0~5
   mp3_pause ();
   mp3_stop ();
   void mp3_get_state ();   //send get state command
   void mp3_get_volume ();
   void mp3_get_u_sum ();
   void mp3_get_tf_sum ();
   void mp3_get_flash_sum ();
   void mp3_get_tf_current ();
   void mp3_get_u_current ();
   void mp3_get_flash_current ();
   void mp3_single_loop (boolean state);  //set single loop
   void mp3_DAC (boolean state);
   void mp3_random_play ();
 */


çà compile, il faut la biblio https://github.com/DFRobot/DFPlayer-Mini-mp3
et faire attention en dezippant il y un sous repertoire qui doit etre le principal dans "library arduino"

l'arboresence des fichiers/libs est parfois un source d'erreurs dans ide arduino, qui varie suivant les versions, sous ide 1.6.4 je dois ajouter l'include "spi.h" dans certains croquis, parce que spi.h se trouve ici :C:\Program Files\Arduino\hardware\arduino\avr\libraries
et dans ide1.0.5 ici :C:\Program Files\Arduino\libraries

valable pour windows, sous MacOs à vérifier....






aliceecila

Bonjour,

j'avais utilisé "#include <DFRobotDFPlayerMini.h" car elle était également conseillée mais j'ai du mal comprendre...

En tout cas le fait est qu'il s'agissait du même problème sous mac, avec un sous dossier inutile et l'inclusion de la bibliothèque "spi" dans le script.

Compilation ok, téléversement ok, maintenant c'est mon circuit qui ne va plus....


Mon capteur d'ultrason est bien branché, mon sd player également, mais c'est le câble audio qui m'embête.

Il y'a trois fils, audio gauche, audio droite, et masse, ce dernier je ne sais pas comme le relier, avez-vous déjà travailler avec ce type de branchement ?


infobarquee

Quote
Il y'a trois fils, audio gauche, audio droite, et masse, ce dernier je ne sais pas comme le relier, avez-vous déjà travaillé avec ce type de branchement ?
masse va sur GND
AUCUNE AIDE PAR MP

aliceecila

Bonjour,

merci pour vos précieux conseils, grâce à vous j'ai beaucoup avancé !

J'ai pu testé un montage avec seulement un script concernant le SDplayer pour pouvoir déclencher un son toute les 5 secondes. Le son sort dans de l'enceinte avec beaucoup "d'interférence", malgré une résistance 1k posée sur TX. les pin utilisées sur l'Arduino sont 10 et 11 pour le SDplayer.

Quand je test le script et le montage incluant le capteur ultrason et le SDplayer, là tout se gâte.

Quand je vérifie avec le moniteur série, le capteur ultrason fonctionne très bien, mais c'est le SDplayer qui ne fonctionne pas..
Les pins pour le SDplayer sur l'Arduino sont RX et TX

Ce qui me questionne c'est quand dans le script incluant le capteur et le sdplayer, rien n'est défini pour le sdplayer, dois-je définir les pinS du sdplayer ?

Je vous met ci-joint une photo du montage
et le code
Code: [Select]
#include <SoftwareSerial.h>
#include <SD.h>
#include <NewPing.h>
#include <DFPlayer_Mini_Mp3.h>
#include<SPI.h>

#define TRIGGER_PIN  12  // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN     11  // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 20 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

void setup () {
  Serial.begin(9600);
  pinMode(7,OUTPUT);
  mp3_set_serial (Serial);  //set Serial for DFPlayer-mini mp3 module
  mp3_set_volume (15);
  //
  mp3_stop ();
}
void loop () {
  delay(50);                      // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
  int distance = sonar.ping_cm(); // Send ping, get ping time in microseconds (uS).
  Serial.print("Ping: ");
  Serial.print(distance); // Convert ping time to distance in cm and print result (0 = outside set distance range)
  Serial.println("cm");
  if (distance < 35)
  {
    delay(distance*10);
    mp3_random_play ();
  }
  }

infobarquee

pourquoi utiliser SoftwareSerial si tu ne t'en sers pas?

mp3_set_serial (Serial);

garde l'exemple de base et inclus ton hc-sr04 en changeant ses pins
AUCUNE AIDE PAR MP

Go Up