Projet arduino + capteur ultra son + fdp player + led

bonsoir ,

je présente , franco passionné de cinema et de bricole... je suis depuis 5 ans a fond dans l impression 3d et conception d imprimante ..j en suis a ma 5 imprimante diy ... ici je n imprime que de la taille réel et sur chacun de ces projets , je prevois d y intégrer un arduino avec capteur qui declenchera un son et de la lumière ... ceci est pour ma collection privée ..rien est vendu

j ai l aide d un programateur en arduino mais on bloque sur un gros souci ...

quand je téléverse tout le programme , il fonctionne direct mais quand je coupe l alimentation et que je remet l alimentation ... rien ne se passe ... je l alimante avec une alimentation 5v plus en usb ...
mais si j appuie sur le reset de l arduino uno là cela fonctionne ... mais je dois faire cela a chaque fois que je branche l arduino ... cela me pose souci car le module sera caché dans la statue ..donc il me faut absolument que quand je met le courant , cela fonctionne directement ...

voici le programmme =

#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////  DEBUT ZONE A MODIFIER   //////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////

/* Définition des broches */
#define PLAYER_TX_PIN 4   // Broche TX - DFPlayer
#define PLAYER_RX_PIN 5   // Broche RX - DFPlayer

/* Définition des paramètres du programme */
int mp3_duraction[] = { 29, 7, 6, 3, 8, 5, 7 };    // Durée de chaque MP3 en secondes
#define PLAYER_VOLUME 30              // Volume de player de 0 à 30

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////  FIN  ////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////

#define PLAYER_IDLE 0                           // Le lecteur MP3 est en attente
#define PLAYER_PLAY 1                           // Le lecteur MP3 est entrain de lire un fichier

int index_song = 1;                             // Index du fichier MP3 joué
int nb_mp3_files = 0;                           // Nombre total de fichier MP3 sur la carte SD
int player_state = PLAYER_IDLE;                 // Définition de l'état du lecteur MP3 : 0: IDLE, 1: Lecture en cours
unsigned long long player_start_playing = 0;    // Timestamp de démarrage de la lecture d'un fichier audio

/* Initialisation du player */
SoftwareSerial playerSerial(PLAYER_RX_PIN, PLAYER_TX_PIN);
DFRobotDFPlayerMini player;

// Fonction pour récupérer le nombre d'entrée d'un tableau
#define ARRAY_SIZE(x) sizeof(x)/sizeof(x[0])

/**
 * Retourne le nombre de millisecondes depuis le démarrage du programme sous la forme d'un
 * nombre entier sur 64 bits (unsigned long long).
 */
unsigned long long superMillis() {
  static unsigned long nbRollover = 0;
  static unsigned long previousMillis = 0;
  unsigned long currentMillis = millis();

  if (currentMillis < previousMillis) {
    nbRollover++;
  }
  previousMillis = currentMillis;

  unsigned long long finalMillis = nbRollover;
  finalMillis <<= 32;
  finalMillis +=  currentMillis;
  return finalMillis;
}

void setup() {
  // On ouvre le port de communication et l'on attend qu'il soit prêt
  Serial.begin(9600);
  while (!Serial) {
    ; // On attend que le port soit prêt
  }
  Serial.println(F("Port Serial initialisé"));

  // Initialisation du port série pour le lecteur MP3
  playerSerial.begin(9600);
  while (!playerSerial) {
    ; // On attend que le port soit prêt
  }
  Serial.println(F("Port Serial MP3 initialisé"));

  // On utilise le port série pour communiquer avec le lecteur MP3
  while (!player.begin(playerSerial)) {
    Serial.println(F("Impossible de se connecter au DFPlayer:"));
    Serial.println(F("1.Vérifier que les branchements sont ok!"));
    Serial.println(F("2.Insérer la carte SD dans le player!"));
    Serial.println(F("Nouvelle tentative de connexion dans 5 secondes..."));
    delay(5000);
  }
  Serial.println(F("Player MP3 initialisé"));

  // Définition du volume du player
  player.volume(PLAYER_VOLUME);

  // On récupère le nombre de fichiers MP3
  nb_mp3_files = player.readFileCounts();
  Serial.print(nb_mp3_files);
  Serial.println(F(" fichiers ont été trouvés sur la carte SD."));

  // On vérifie que le nombre de fichiers présent sur la carte SD correspond à la déclaration des durées dans notre variable
  if (ARRAY_SIZE(mp3_duraction) != nb_mp3_files) {
    Serial.print(F("Le nombre de fichiers trouvé sur la carte SD ("));    
    Serial.print(nb_mp3_files);
    Serial.print(F(") ne correspond pas au nombre de durée définies dans la variable mp3_duraction ("));    
    Serial.print(ARRAY_SIZE(mp3_duraction));
    Serial.println(F(")."));    
    while (1) ;
  }

  Serial.println(F("Initialisation complète du programme."));
}

void loop() {
  // Le player a t'il fini la lecture du mP3 en cours de lecture ?
  if (player_state == PLAYER_PLAY) {
    if (((superMillis() - player_start_playing) / 1000) > (mp3_duraction[index_song - 1] + 1)) {
      // On change le statut du player
      player_state = PLAYER_IDLE;
      player_start_playing = 0;

      // On sélectionne le fichier suivant, on retourne au début si on est à la fin
      index_song = (index_song == nb_mp3_files) ? 1 : (index_song + 1);
    }
  }

  // Doit-on lancer la lecture d'un MP3 ?
  if (player_state == PLAYER_IDLE) {
    player_state = PLAYER_PLAY;
    player_start_playing = superMillis();
    player.play(index_song);

    Serial.print(F("Lecture de la piste audio "));    
    Serial.print(index_song);
    Serial.print(F(" d'un durée de "));    
    Serial.print(mp3_duraction[index_song - 1]);
    Serial.println(F(" secondes."));    
  }
}

est ce que quelqu un a déja eut ce souci ...ici ce n est que le programme du fdp car nous savons maintenant que le problème vient de lui ...tout a été commander sur ali express ...

merci pour votre aide :blush:
on bloque depuis des semaines ...:confused:

Bonsoir chucky4630

Tout d'abord, mets ton programme entre les balises image
, c'est plus lisible :wink:

Si c'est en 5V sur le jack, c'est pas assez, c'est entre 7 et 12V. Idéalement 9V.

Cordialement
jpbbricole

bonsoir , oui je vais essayer de modifier ...merci
non j alimente en 5v directement sur les pins 5v /gnd

comme je le dis ... si je fais un reset tout fonctionne correctement ... mais obliger de faire un reset a chaque branchement de l alimentation ..c est cela que l on comprend pas

Augmentez le "power on reset" de cette carte: ajoutez un condensateur entre 1 et 10 uF entre la broche de Reset et Gnd, pour voir si de cette façon la manie est supprimée.

voici une petite video bien montrer le souci

je viens de poster une video pour bien montrer mon souci ... merci pour votre aide ..je regarde

Quel modèle d'Arduino utilises-tu ?

bonsoir , un arduino uno

voilà ce que j ai sous la main ...est ce bon pour tester ?
merci

Discussion déplacée dans le forum principal.

Eh bien, voyons si 4,7 uF d'électrolyte suffisent, vous connaissez déjà la borne positive à la broche de reset et la borne négative à GNG.

mille merci !!! cela fonctionne du 1 er coup !!! :grin::blush::heart::heart::heart:

C'est parfaitement anormal car tous les circuits intégrés numériques ont une RAZ ( reset) sur l'alimentation. Ils sont systématiquement "resseté" dès que l'alimentation atteint le niveau minimum de fonctionnement.

La première idée qui me vient à l'esprit est un problème de connexions. Sans aucune mauvaise intention de ma part je trouve que ton câblage est du style "perchoir à mouche" (j'ai juste un "peu" d'expérience ).
Je ne peux dire que ce que je fais dans ces cas là : j'ai constaté que si au bout de quelques heures je ne trouve pas la solution, j'aurai encore moins de chance de la trouver 1 semaine plus tard. Il est des conneries qui sont indétectables par celui qui a câblé.

Donc je décâble et je recâble le plus proprement possible.
Quand je dis "proprement" ce n'est pas la beauté que je recherche c'est l'efficacité.

Je pense tout particulièrement à éviter de mélanger les masses : chaque composant à son propre fil de masse et tous les fils de masse forment une étoile dont le centre est la masse de la carte Arduino. Un fil de commande fonctionnera mieux s'il est accompagné d'un fil de masse.

Solution intermédiaire : tu peux aussi décâbler progressivement en retirant pièces par pièces et en commençant par les moins essentielles à ta réalisation. Cela peut permettre d'aller plus vite .... ou pas.

Voilà ma façon de procéder, je n'en dirai pas plus, c'est toi qui décides de la suite des événements.

PS : sur le forum francophone (voir message épinglé) il est interdit de mettre A l'aide ou Help : la raison est que les titres servent au moteur de recherche. Le titre a été modifié.

bonsoir , problème résolu grâce au condo et comme vous pouvez voir dans la video ... pas de problème de câblage car fonctionne avec un reset manuel ...le câblage est fait pour valider les programme et plan de raccordement

Il faut se méfié des conclusions trop hâtives : le condensateur peut masquer un problème de câblage mais, s'il y a problème, il subsistera toujours et il pourra se re-déclencher plus tard sans prévenir.

Le condensateur miracle sans qu'on est bien identifié où le problème trouve sa source c'est bon pour une réalisation unique.
Je n'ai pas l'impression que ce soit le cas ....

C'est toi qui vois.

Cela va sans dire et le problème est probablement que le mcu est plus rapide que la stabilisation de l'alimentation. Ce qui était évident, c'est qu'il fallait laisser passer un certain temps et provoquer un reset. Ce temps supplémentaire s'obtient avec le temps qu'il faut au condensateur pour se charger à travers la résistance 1K à laquelle la broche reset est connectée + 5V, la solution n'est pas si miraculeuse.

Bonsoir chucky4630

Si tu déconnectes, complètement, ton ruban de LED, as-tu toujours ce problème?

Cordialement
jpbbricole