AIDE - Derniere étape pour mon projet ^^ (Lecture video)

Slt a tous :wave:
Comme précédemment
1-Aide pour Nouveau projet TERMINATOR
2-AIDE-Commande RF Leds+servo
Je cherche a réaliser une lecture vidéo direct a l’allumage avec mon code existant

#include <SoftwareSerial.h>
SoftwareSerial BT(4,2); 

#include "DFRobotDFPlayerMini.h"
#include <Servo.h>        // Tools -> Manage Libraries...
#include <ServoEasing.h>  // ServoEasing v2.3.4
#include <AsyncTimer.h>   // AsyncTimer v2.2.0
#include <jled.h>         // JLed v4.8.0


//
// Eye LED settings...
//
#define LED_A 5
#define LED_B 6
#define LED_C 7

#define FADE_ON 125
#define FADE_ON_WAIT 500

#define FLICKER_TIME 2500

#define EYES_ON_WAIT 500

#define FADE_OFF 1500
#define FADE_OFF_WAIT 2500


//
// Eye Servo settings...
//
#define EYE_SERVO_A 9
#define EYE_SERVO_B 10
#define EYE_SERVO_C 11

#define EYE_SPEED 150

#define EYE_MIN 20
#define EYE_MAX 160
#define EYE_CENTER 90

#define EYE_INTERVAL 900


//
// Random eye movement...
//
AsyncTimer t;
ServoEasing eyeServoA;
ServoEasing eyeServoB;
ServoEasing eyeServoC;
unsigned short eyeTimer;
unsigned short scanTimer;
bool eyeMoveA = true;
bool eyeMoveB = true;
bool eyeMoveC = true;


//
// Eye flickering & fading movement.
//
JLed ledsA[] = {
  JLed(LED_A).FadeOn(FADE_ON).DelayAfter(FADE_ON_WAIT * 2),
  JLed(LED_A).Candle(6, 100, FLICKER_TIME * 2),
  JLed(LED_A).On().DelayAfter(EYES_ON_WAIT * 2),
  //    JLed(LED_A).FadeOff(FADE_OFF).DelayAfter(FADE_OFF_WAIT * 2)
};
auto seqA = JLedSequence(JLedSequence::eMode::SEQUENCE, ledsA);
auto ledA = JLed(LED_A).FadeOff(FADE_OFF).DelayAfter(FADE_OFF_WAIT * 2);

JLed ledsB[] = {
  JLed(LED_B).FadeOn(FADE_ON).DelayAfter(FADE_ON_WAIT * 2),
  JLed(LED_B).Candle(6, 100, FLICKER_TIME * 2),
  JLed(LED_B).On().DelayAfter(EYES_ON_WAIT * 2),
  //    JLed(LED_B).FadeOff(FADE_OFF).DelayAfter(FADE_OFF_WAIT * 2)
};
auto seqB = JLedSequence(JLedSequence::eMode::SEQUENCE, ledsB);
auto ledB = JLed(LED_B).FadeOff(FADE_OFF).DelayAfter(FADE_OFF_WAIT * 2);


//
// Generate variation for range -> range * 2
//
int vary(int range, int v = 11) {
  return range + random(v) * range / v;
}


//
// Change JLed timings so each flicker is independent.
//
void retime(JLed (&leds)[3], JLed &led) {
  leds[0].FadeOn(FADE_ON).DelayAfter(vary(FADE_ON_WAIT));
  leds[1].Candle(6, 100, vary(FLICKER_TIME));
  leds[2].On().DelayAfter(vary(EYES_ON_WAIT));
  led.FadeOff(FADE_OFF).DelayAfter(vary(FADE_OFF_WAIT));
}


//
// Random eye movement.
//
void moveEyes() {
  if (eyeMoveA) {
    eyeServoA.startEaseTo(random(EYE_MIN, EYE_MAX + 1));
  }

  if (eyeMoveB) {
    eyeServoB.startEaseTo(random(EYE_MIN, EYE_MAX + 1));
  }
}

//
// Scan eyes back and forth.
//
void scanEyes() {
  eyeServoC.startEaseTo(eyeMoveC ? EYE_MIN : EYE_MAX);
  eyeMoveC = !eyeMoveC;
}


//
// Standard setup function.
//


// Use pins 2 and 3 to communicate with DFPlayer Mini
static const uint8_t PIN_MP3_TX = 2; // Connects to module's RX
static const uint8_t PIN_MP3_RX = 3; // Connects to module's TX
SoftwareSerial softwareSerial(PIN_MP3_RX, PIN_MP3_TX);

// Create the Player object
DFRobotDFPlayerMini player;

void setup() {
  BT.begin(9600);
  
  void playMp3Folder(int fileNumber);

  // Init serial port for DFPlayer Mini
  softwareSerial.begin(9600);

  // Start communication with DFPlayer Mini
  if (player.begin(softwareSerial)) {
    Serial.println("OK");

    // Set volume to maximum (0 to 30).
    player.volume(20);

    delay(45700);

  } else {
    Serial.println("Connecting to DFPlayer Mini failed!");
  }

  Serial.begin(9600); // For debugging.
  randomSeed(analogRead(0)); // Init random number generator.

  eyeServoA.attach(EYE_SERVO_A); // Init eyes.
  eyeServoA.write(EYE_CENTER);
  eyeServoA.setSpeed(EYE_SPEED);

  eyeServoB.attach(EYE_SERVO_B);
  eyeServoB.write(EYE_CENTER);
  eyeServoB.setSpeed(EYE_SPEED);

  eyeServoC.attach(EYE_SERVO_C);
  eyeServoC.write(EYE_CENTER);
  eyeServoC.setSpeed(EYE_SPEED / 2); // Run slower is scanning mode.

  pinMode(LED_C, OUTPUT); // Make Led C constantly on (for scanning mode).
  digitalWrite(LED_C, HIGH);

  t.setup();
  eyeTimer = t.setInterval(moveEyes, EYE_INTERVAL);
  scanTimer = t.setInterval(scanEyes, EYE_INTERVAL * 5);
}



//
// Standard loop.
//
void loop() {
   if (BT.available()){
    Serial.write(BT.read());  // les données reçues par le port BT sont envoyées au moniteur série
  }
  if(Serial.available()) {
    BT.write(Serial.read()); // les données reçues par le moniteur série sont envoyées au port BT
  }
    player.play(1); // Play the first MP3 file on the SD card
    
  t.handle();

  if (!seqA.Update()) {
    eyeMoveA = false; // Stop random eye movement when sequence ends and then we fade off.
    if (!ledA.Update()) {
      retime(ledsA, ledA);
      seqA.Reset();
      ledA.Reset();
      eyeMoveA = true; // Restart eye movement for next eye flickering sequence.
    }
  }

  if (!seqB.Update()) {
    eyeMoveB = false; // Stop random eye movement when sequence ends and then we fade off.
    if (!ledB.Update()) {
      retime(ledsB, ledB);
      seqB.Reset();
      ledB.Reset();
      eyeMoveB = true; // Restart eye movement for next eye flickering sequence.
    }
  }
}

Avec ces composants actuellement:

  • Carte UNO - 1X
  • HC-06 Bluetooth - 1X
  • Leds - 6X
  • Servo moteur - 1X

A prévoir

Question :thinking:
Comment puis-je précéder pour faire une lecture en même temps que la lecture du son et des composants ?
Quelle code à utiliser ?
Je souhaite mettre une remise a 0 a la fin du programme, j’utilise ce code ?

// Revient à zéro:
  stepper.moveTo(0);
  stepper.runToPosition();

  delay(1000);
 }

Si vous pouvez m'aider pour tout ces questions vous vous serez reconnaissant
Je reste a votre disposition
Merci

Slt
qui peut m'aider j'aimerai rajouter un détecteur de son pour une led a mon code mais j'ai des erreurs : a function-definition is not allowed here before '{' token
quelqu'un peut me guider svp
faut t’il les enlever ? :thinking:

#include <SoftwareSerial.h>
SoftwareSerial BT(4,2); 

#include "DFRobotDFPlayerMini.h"
#include <Servo.h>        // Tools -> Manage Libraries...
#include <ServoEasing.h>  // ServoEasing v2.3.4
#include <AsyncTimer.h>   // AsyncTimer v2.2.0
#include <jled.h>         // JLed v4.8.0


//
// Eye LED settings...
//
#define LED_A 5
#define LED_B 6
#define LED_C 7

#define FADE_ON 125
#define FADE_ON_WAIT 500

#define FLICKER_TIME 2500

#define EYES_ON_WAIT 500

#define FADE_OFF 1500
#define FADE_OFF_WAIT 2500


//
// Eye Servo settings...
//
#define EYE_SERVO_A 9
#define EYE_SERVO_B 10
#define EYE_SERVO_C 11

#define EYE_SPEED 150

#define EYE_MIN 20
#define EYE_MAX 160
#define EYE_CENTER 90

#define EYE_INTERVAL 900


//
// Random eye movement...
//
AsyncTimer t;
ServoEasing eyeServoA;
ServoEasing eyeServoB;
ServoEasing eyeServoC;
unsigned short eyeTimer;
unsigned short scanTimer;
bool eyeMoveA = true;
bool eyeMoveB = true;
bool eyeMoveC = true;


//
// Eye flickering & fading movement.
//
JLed ledsA[] = {
  JLed(LED_A).FadeOn(FADE_ON).DelayAfter(FADE_ON_WAIT * 2),
  JLed(LED_A).Candle(6, 100, FLICKER_TIME * 2),
  JLed(LED_A).On().DelayAfter(EYES_ON_WAIT * 2),
  //    JLed(LED_A).FadeOff(FADE_OFF).DelayAfter(FADE_OFF_WAIT * 2)
};
auto seqA = JLedSequence(JLedSequence::eMode::SEQUENCE, ledsA);
auto ledA = JLed(LED_A).FadeOff(FADE_OFF).DelayAfter(FADE_OFF_WAIT * 2);

JLed ledsB[] = {
  JLed(LED_B).FadeOn(FADE_ON).DelayAfter(FADE_ON_WAIT * 2),
  JLed(LED_B).Candle(6, 100, FLICKER_TIME * 2),
  JLed(LED_B).On().DelayAfter(EYES_ON_WAIT * 2),
  //    JLed(LED_B).FadeOff(FADE_OFF).DelayAfter(FADE_OFF_WAIT * 2)
};
auto seqB = JLedSequence(JLedSequence::eMode::SEQUENCE, ledsB);
auto ledB = JLed(LED_B).FadeOff(FADE_OFF).DelayAfter(FADE_OFF_WAIT * 2);


//
// Generate variation for range -> range * 2
//
int vary(int range, int v = 11) {
  return range + random(v) * range / v;
}
int Led = 13 ;
int buttonpin = 8;
int val = 0;

//
// Change JLed timings so each flicker is independent.
//
void retime(JLed (&leds)[3], JLed &led) {
  leds[0].FadeOn(FADE_ON).DelayAfter(vary(FADE_ON_WAIT));
  leds[1].Candle(6, 100, vary(FLICKER_TIME));
  leds[2].On().DelayAfter(vary(EYES_ON_WAIT));
  led.FadeOff(FADE_OFF).DelayAfter(vary(FADE_OFF_WAIT));
}


//
// Random eye movement.
//
void moveEyes() {
  if (eyeMoveA) {
    eyeServoA.startEaseTo(random(EYE_MIN, EYE_MAX + 1));
  }

  if (eyeMoveB) {
    eyeServoB.startEaseTo(random(EYE_MIN, EYE_MAX + 1));
  }
}

//
// Scan eyes back and forth.
//
void scanEyes() {
  eyeServoC.startEaseTo(eyeMoveC ? EYE_MIN : EYE_MAX);
  eyeMoveC = !eyeMoveC;
}


//
// Standard setup function.
//


// Use pins 2 and 3 to communicate with DFPlayer Mini
static const uint8_t PIN_MP3_TX = 2; // Connects to module's RX
static const uint8_t PIN_MP3_RX = 3; // Connects to module's TX
SoftwareSerial softwareSerial(PIN_MP3_RX, PIN_MP3_TX);

// Create the Player object
DFRobotDFPlayerMini player;

void setup() {
  
  BT.begin(9600);
  
  void playMp3Folder(int fileNumber);

  // Init serial port for DFPlayer Mini
  softwareSerial.begin(9600);

  // Start communication with DFPlayer Mini
  if (player.begin(softwareSerial)) {
    Serial.println("OK");

    // Set volume to maximum (0 to 30).
    player.volume(20);

    delay(45700);

  } else {
    Serial.println("Connecting to DFPlayer Mini failed!");
  }

  Serial.begin(9600); // For debugging.
  randomSeed(analogRead(0)); // Init random number generator.

  eyeServoA.attach(EYE_SERVO_A); // Init eyes.
  eyeServoA.write(EYE_CENTER);
  eyeServoA.setSpeed(EYE_SPEED);

  eyeServoB.attach(EYE_SERVO_B);
  eyeServoB.write(EYE_CENTER);
  eyeServoB.setSpeed(EYE_SPEED);

  eyeServoC.attach(EYE_SERVO_C);
  eyeServoC.write(EYE_CENTER);
  eyeServoC.setSpeed(EYE_SPEED / 2); // Run slower is scanning mode.

  pinMode(LED_C, OUTPUT); // Make Led C constantly on (for scanning mode).
  digitalWrite(LED_C, HIGH);

  t.setup();
  eyeTimer = t.setInterval(moveEyes, EYE_INTERVAL);
  scanTimer = t.setInterval(scanEyes, EYE_INTERVAL * 5);

pinMode (Led, OUTPUT) ;
pinMode (buttonpin, INPUT) ;

//
// Standard loop.
//
void loop() {
   if (BT.available()){
    Serial.write(BT.read());  // les données reçues par le port BT sont envoyées au moniteur série
  }
  if(Serial.available()) {
    BT.write(Serial.read()); // les données reçues par le moniteur série sont envoyées au port BT
  }
    player.play(1); // Play the first MP3 file on the SD card
    
  t.handle();

  if (!seqA.Update()) {
    eyeMoveA = false; // Stop random eye movement when sequence ends and then we fade off.
    if (!ledA.Update()) {
      retime(ledsA, ledA);
      seqA.Reset();
      ledA.Reset();
      eyeMoveA = true; // Restart eye movement for next eye flickering sequence.
    }
  }

  if (!seqB.Update()) {
    eyeMoveB = false; // Stop random eye movement when sequence ends and then we fade off.
    if (!ledB.Update()) {
      retime(ledsB, ledB);
      seqB.Reset();
      ledB.Reset();
      eyeMoveB = true; // Restart eye movement for next eye flickering sequence.
{
val = digitalRead(buttonpin);
if (val == HIGH)
{
digitalWrite (Led, HIGH);
}
else
{
digitalWrite (Led, LOW);
    }
  }
}

merci

C'est un peu le bazar dans les accolades.
Fais un ctrl+t dans l'IDE pour mettre à jour l'indentation de ton ton programme, tu vas voir qu'il en manque quelques unes au niveau de setup() et loop().

En revérifiant et corriger les erreurs la c'est OK merci :+1:
Il manque plu qu'au tester :wink:

#include <SoftwareSerial.h>
SoftwareSerial BT(4, 2);

#include "DFRobotDFPlayerMini.h"
#include <Servo.h>        // Tools -> Manage Libraries...
#include <ServoEasing.h>  // ServoEasing v2.3.4
#include <AsyncTimer.h>   // AsyncTimer v2.2.0
#include <jled.h>         // JLed v4.8.0


//
// Eye LED settings...
//
#define LED_A 5
#define LED_B 6
#define LED_C 7

#define FADE_ON 125
#define FADE_ON_WAIT 500

#define FLICKER_TIME 2500

#define EYES_ON_WAIT 500

#define FADE_OFF 1500
#define FADE_OFF_WAIT 2500


//
// Eye Servo settings...
//
#define EYE_SERVO_A 9
#define EYE_SERVO_B 10
#define EYE_SERVO_C 11

#define EYE_SPEED 150

#define EYE_MIN 20
#define EYE_MAX 160
#define EYE_CENTER 90

#define EYE_INTERVAL 900


//
// Random eye movement...
//
AsyncTimer t;
ServoEasing eyeServoA;
ServoEasing eyeServoB;
ServoEasing eyeServoC;
unsigned short eyeTimer;
unsigned short scanTimer;
bool eyeMoveA = true;
bool eyeMoveB = true;
bool eyeMoveC = true;


//
// Eye flickering & fading movement.
//
JLed ledsA[] = {
  JLed(LED_A).FadeOn(FADE_ON).DelayAfter(FADE_ON_WAIT * 2),
  JLed(LED_A).Candle(6, 100, FLICKER_TIME * 2),
  JLed(LED_A).On().DelayAfter(EYES_ON_WAIT * 2),
  //    JLed(LED_A).FadeOff(FADE_OFF).DelayAfter(FADE_OFF_WAIT * 2)
};
auto seqA = JLedSequence(JLedSequence::eMode::SEQUENCE, ledsA);
auto ledA = JLed(LED_A).FadeOff(FADE_OFF).DelayAfter(FADE_OFF_WAIT * 2);

JLed ledsB[] = {
  JLed(LED_B).FadeOn(FADE_ON).DelayAfter(FADE_ON_WAIT * 2),
  JLed(LED_B).Candle(6, 100, FLICKER_TIME * 2),
  JLed(LED_B).On().DelayAfter(EYES_ON_WAIT * 2),
  //    JLed(LED_B).FadeOff(FADE_OFF).DelayAfter(FADE_OFF_WAIT * 2)
};
auto seqB = JLedSequence(JLedSequence::eMode::SEQUENCE, ledsB);
auto ledB = JLed(LED_B).FadeOff(FADE_OFF).DelayAfter(FADE_OFF_WAIT * 2);


//
// Generate variation for range -> range * 2
//
int vary(int range, int v = 11) {
  return range + random(v) * range / v;
}
int Led = 13 ;
int buttonpin = 8;
int val = 0;

//
// Change JLed timings so each flicker is independent.
//
void retime(JLed (&leds)[3], JLed &led) {
  leds[0].FadeOn(FADE_ON).DelayAfter(vary(FADE_ON_WAIT));
  leds[1].Candle(6, 100, vary(FLICKER_TIME));
  leds[2].On().DelayAfter(vary(EYES_ON_WAIT));
  led.FadeOff(FADE_OFF).DelayAfter(vary(FADE_OFF_WAIT));
}


//
// Random eye movement.
//
void moveEyes() {
  if (eyeMoveA) {
    eyeServoA.startEaseTo(random(EYE_MIN, EYE_MAX + 1));
  }

  if (eyeMoveB) {
    eyeServoB.startEaseTo(random(EYE_MIN, EYE_MAX + 1));
  }
}

//
// Scan eyes back and forth.
//
void scanEyes() {
  eyeServoC.startEaseTo(eyeMoveC ? EYE_MIN : EYE_MAX);
  eyeMoveC = !eyeMoveC;
}


//
// Standard setup function.
//


// Use pins 2 and 3 to communicate with DFPlayer Mini
static const uint8_t PIN_MP3_TX = 2; // Connects to module's RX
static const uint8_t PIN_MP3_RX = 3; // Connects to module's TX
SoftwareSerial softwareSerial(PIN_MP3_RX, PIN_MP3_TX);

// Create the Player object
DFRobotDFPlayerMini player;

void setup() {

  BT.begin(9600);

  void playMp3Folder(int fileNumber);

  // Init serial port for DFPlayer Mini
  softwareSerial.begin(9600);

  // Start communication with DFPlayer Mini
  if (player.begin(softwareSerial)) {
    Serial.println("OK");

    // Set volume to maximum (0 to 30).
    player.volume(20);

    delay(45700);

  } else {
    Serial.println("Connecting to DFPlayer Mini failed!");
  }

  Serial.begin(9600); // For debugging.
  randomSeed(analogRead(0)); // Init random number generator.

  eyeServoA.attach(EYE_SERVO_A); // Init eyes.
  eyeServoA.write(EYE_CENTER);
  eyeServoA.setSpeed(EYE_SPEED);

  eyeServoB.attach(EYE_SERVO_B);
  eyeServoB.write(EYE_CENTER);
  eyeServoB.setSpeed(EYE_SPEED);

  eyeServoC.attach(EYE_SERVO_C);
  eyeServoC.write(EYE_CENTER);
  eyeServoC.setSpeed(EYE_SPEED / 2); // Run slower is scanning mode.

  pinMode(LED_C, OUTPUT); // Make Led C constantly on (for scanning mode).
  digitalWrite(LED_C, HIGH);

  t.setup();
  eyeTimer = t.setInterval(moveEyes, EYE_INTERVAL);
  scanTimer = t.setInterval(scanEyes, EYE_INTERVAL * 5);

  pinMode (Led, OUTPUT) ;
  pinMode (buttonpin, INPUT) ;

  //
  // Standard loop.
  //
}

void loop() {
  if (BT.available()) {
    Serial.write(BT.read());  // les données reçues par le port BT sont envoyées au moniteur série
  }
  if (Serial.available()) {
    BT.write(Serial.read()); // les données reçues par le moniteur série sont envoyées au port BT
  }
  player.play(1); // Play the first MP3 file on the SD card

  t.handle(); {

    if (!seqA.Update()) {
      eyeMoveA = false; // Stop random eye movement when sequence ends and then we fade off.
      if (!ledA.Update()) {
        retime(ledsA, ledA);
        seqA.Reset();
        ledA.Reset();
        eyeMoveA = true; // Restart eye movement for next eye flickering sequence.
      }
    }

    if (!seqB.Update()) {
      eyeMoveB = false; // Stop random eye movement when sequence ends and then we fade off.
      if (!ledB.Update()) {
        retime(ledsB, ledB);
        seqB.Reset();
        ledB.Reset();
        eyeMoveB = true; // Restart eye movement for next eye flickering sequence.
      }
    }
      val = digitalRead(buttonpin);
      if (val == HIGH)
      {
        digitalWrite (Led, HIGH);
      }
      else
      {
        digitalWrite (Led, LOW);
      }
    }
  }

Bon le son ne veut plu marcher correctement et j'ai une erreur je pige pas le code est OK en vérifiant et en téléversement sa déconne :thinking:
help :pray:t2:

Le croquis utilise 15368 octets (47%) de l'espace de stockage de programmes. Le maximum est de 32256 octets.
Les variables globales utilisent 948 octets (46%) de mémoire dynamique, ce qui laisse 1100 octets pour les variables locales. Le maximum est de 2048 octets.
Une erreur est survenue lors du transfert du croquis
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding
avr_read(): error reading address 0x0000
    read operation not supported for memory "flash"
avrdude: failed to read all of flash memory, rc=-2
avrdude: stk500_recv(): programmer is not responding

C'est la bonne carte et le bon port qui sont sélectionnés?

Oui je comprend pas j'ai pas toucher les connexions de la carte et de la breadboard J'ai réessayer le code d'avant qui ne marche plu non plu, mais je me demande si ce n'est pas la module DFplayer qui a un problème ou la carte SD :thinking: vous avez une idée ?
Probleme de son (DFplayer)

Test unitaire du DFPlayer avec une carte Arduino réputée bonne.

Bon sur ma carte NANO en 5V comme précédemment sa ne marche pas mieux pas donc conclusion DFplayer HS bizarre que sa saute comme ça sans y toucher ?
Carte SD : dossier mp3 > 0001.mp3

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

// Use pins 10 and 11 to communicate with DFPlayer Mini
static const uint8_t PIN_MP3_TX = 2; // Connects to module's RX
static const uint8_t PIN_MP3_RX = 3; // Connects to module's TX
SoftwareSerial softwareSerial(PIN_MP3_RX, PIN_MP3_TX);

// Create the Player object
DFRobotDFPlayerMini player;

void setup() {
  void playMp3Folder(int fileNumber);
  // Init USB serial port for debugging
  Serial.begin(9600);
  // Init serial port for DFPlayer Mini
  softwareSerial.begin(9600);

  // Start communication with DFPlayer Mini
  if (player.begin(softwareSerial)) {
    Serial.println("OK");

    // Set volume to maximum (0 to 30).
    player.volume(23);
    // Play the first MP3 file on the SD card
    player.play(1);

  } else {
    Serial.println("Connecting to DFPlayer Mini failed!");
  }
}

void loop() {
}i

:thinking: :upside_down_face: :disappointed_relieved:

Re en réfléchissant si le dfplayer était HS comme je croyait il ne s’allumerait pas, on est d'accort ? Comme sur le vidéo il fonctionne sauf la lecture ne ce passe pas bien
ce serait t'il pas un problème dans le code ?
:sos: merci de votre aide :pray:t2:

Ah oui! et il vaut quoi fileNumber dans ce code?
Et cette ligne avant d'avoir fait player.begin() c'est peut-être pas efficace.

Donc le DFplayer remarche j'ai toujours pas compris pourquoi mais bon
J'ai tout recommencer mais j'ai juste toujours cette erreur ou je suis pas doué
pouvez vous me dire ou est l'erreur ligne 197

a function-definition is not allowed here before '{' token

J'ai regarder mais j'arrive pas a trouver


#include <SoftwareSerial.h>
#include "DFRobotDFPlayerMini.h"
#include <Servo.h>        // Tools -> Manage Libraries...
#include <ServoEasing.h>  // ServoEasing v2.3.4
#include <AsyncTimer.h>   // AsyncTimer v2.2.0
#include <jled.h>         // JLed v4.8.0

//
// Eye LED settings...
//
#define LED_A 5
#define LED_B 6
#define LED_C 7

#define FADE_ON 125
#define FADE_ON_WAIT 500

#define FLICKER_TIME 2500

#define EYES_ON_WAIT 500

#define FADE_OFF 1500
#define FADE_OFF_WAIT 2500


//
// Eye Servo settings...
//
#define EYE_SERVO_A 9
#define EYE_SERVO_B 10
#define EYE_SERVO_C 11

#define EYE_SPEED 150

#define EYE_MIN 20
#define EYE_MAX 160
#define EYE_CENTER 90

#define EYE_INTERVAL 900

//
// Bluetooth HC-06
//
SoftwareSerial BT(4, 2);

//
// Random eye movement...
//
AsyncTimer t;
ServoEasing eyeServoA;
ServoEasing eyeServoB;
ServoEasing eyeServoC;
unsigned short eyeTimer;
unsigned short scanTimer;
bool eyeMoveA = true;
bool eyeMoveB = true;
bool eyeMoveC = true;

//
// Eye flickering & fading movement.
//
JLed ledsA[] = {
  JLed(LED_A).FadeOn(FADE_ON).DelayAfter(FADE_ON_WAIT * 2),
  JLed(LED_A).Candle(6, 100, FLICKER_TIME * 2),
  JLed(LED_A).On().DelayAfter(EYES_ON_WAIT * 2),
  // JLed(LED_A).FadeOff(FADE_OFF).DelayAfter(FADE_OFF_WAIT * 2)
};
auto seqA = JLedSequence(JLedSequence::eMode::SEQUENCE, ledsA);
auto ledA = JLed(LED_A).FadeOff(FADE_OFF).DelayAfter(FADE_OFF_WAIT * 2);

JLed ledsB[] = {
  JLed(LED_B).FadeOn(FADE_ON).DelayAfter(FADE_ON_WAIT * 2),
  JLed(LED_B).Candle(6, 100, FLICKER_TIME * 2),
  JLed(LED_B).On().DelayAfter(EYES_ON_WAIT * 2),
  //    JLed(LED_B).FadeOff(FADE_OFF).DelayAfter(FADE_OFF_WAIT * 2)
};
auto seqB = JLedSequence(JLedSequence::eMode::SEQUENCE, ledsB);
auto ledB = JLed(LED_B).FadeOff(FADE_OFF).DelayAfter(FADE_OFF_WAIT * 2);


//
// Generate variation for range -> range * 2
//
int vary(int range, int v = 11) {
  return range + random(v) * range / v;
}


//
// Change JLed timings so each flicker is independent.
//
void retime(JLed (&leds)[3], JLed &led) {
  leds[0].FadeOn(FADE_ON).DelayAfter(vary(FADE_ON_WAIT));
  leds[1].Candle(6, 100, vary(FLICKER_TIME));
  leds[2].On().DelayAfter(vary(EYES_ON_WAIT));
  led.FadeOff(FADE_OFF).DelayAfter(vary(FADE_OFF_WAIT));
}


//
// Random eye movement.
//
void moveEyes() {
  if (eyeMoveA) {
    eyeServoA.startEaseTo(random(EYE_MIN, EYE_MAX + 1));
  }

  if (eyeMoveB) {
    eyeServoB.startEaseTo(random(EYE_MIN, EYE_MAX + 1));
  }
}


//
// Scan eyes back and forth.
//
void scanEyes() {
  eyeServoC.startEaseTo(eyeMoveC ? EYE_MIN : EYE_MAX);
  eyeMoveC = !eyeMoveC;
}

//
// Standard setup function.
//

// Use pins 2 and 3 to communicate with DFPlayer Mini
static const uint8_t PIN_MP3_TX = 2;  // Connects to module's RX
static const uint8_t PIN_MP3_RX = 3;  // Connects to module's TX
SoftwareSerial softwareSerial(PIN_MP3_RX, PIN_MP3_TX);

// Create the Player object
DFRobotDFPlayerMini player;

// Pin - capteur sonore - Plasma
int Led = 13;
int buttonpin = 7;
int val = 0;

void setup() {
  BT.begin(9600);

  void playMp3Folder(int fileNumber);

  // Init serial port for DFPlayer Mini
  softwareSerial.begin(9600);

  // Start communication with DFPlayer Mini
  if (player.begin(softwareSerial)) {
    Serial.println("OK");

    // Set volume to maximum (0 to 30).
    player.volume(20);

    // Play the first MP3 file on the SD card
    player.play(1);
    delay(55000);

  } else {
    Serial.println("Connecting to DFPlayer Mini failed!");
  }

  Serial.begin(9600);         // For debugging.
  randomSeed(analogRead(0));  // Init random number generator.

  eyeServoA.attach(EYE_SERVO_A);  // Init eyes.
  eyeServoA.write(EYE_CENTER);
  eyeServoA.setSpeed(EYE_SPEED);

  eyeServoB.attach(EYE_SERVO_B);
  eyeServoB.write(EYE_CENTER);
  eyeServoB.setSpeed(EYE_SPEED);

  eyeServoC.attach(EYE_SERVO_C);
  eyeServoC.write(EYE_CENTER);
  eyeServoC.setSpeed(EYE_SPEED / 2);  // Run slower is scanning mode.

  pinMode(LED_C, OUTPUT);  // Make Led C constantly on (for scanning mode).
  digitalWrite(LED_C, HIGH);

  t.setup();
  eyeTimer = t.setInterval(moveEyes, EYE_INTERVAL);
  scanTimer = t.setInterval(scanEyes, EYE_INTERVAL * 5);
  {
    //
    // Capteur sonore - Plasma
    //
  }
  pinMode(Led, OUTPUT);
  pinMode(buttonpin, INPUT);


  //
  // Standard loop.
  //

  void loop() {
    //
    // Données Bluetooth
    //
    if (BT.available()) {
      Serial.write(BT.read());  // les données reçues par le port BT sont envoyées au moniteur série
    }
    if (Serial.available()) {
      BT.write(Serial.read());  // les données reçues par le moniteur série sont envoyées au port BT
    }
    t.handle();

    if (!seqA.Update()) {
      eyeMoveA = false;  // Stop random eye movement when sequence ends and then we fade off.
      if (!ledA.Update()) {
        retime(ledsA, ledA);
        seqA.Reset();
        ledA.Reset();
        eyeMoveA = true;  // Restart eye movement for next eye flickering sequence.
      }
    }

    if (!seqB.Update()) {
      eyeMoveB = false;  // Stop random eye movement when sequence ends and then we fade off.
      if (!ledB.Update()) {
        retime(ledsB, ledB);
        seqB.Reset();
        ledB.Reset();
        eyeMoveB = true;  // Restart eye movement for next eye flickering sequence.
      }
    }

    //
    // Capteur sonore - Plasma
    //
    val = digitalRead(buttonpin);
    if (val == HIGH) {
      digitalWrite(Led, HIGH);
    } else {
      digitalWrite(Led, LOW);
    }
  }
}

T'apprends pas de tes erreurs.
Relis le message #3
Cette fois loop est dans le setup()

Normalement si :grin:
Donc c'est corriger et la comme de par hazar plu de problème :smile:
Merci encore

De rien.
Lorsque ce type d'erreur remonte, il faut avoir le réflexe de faire ctrl+t pour reformater le code ensuite, regarder l'emprise des accolades
Dans l'IDE 2.0.x une ligne verticale marque le bloc de code encadré par une paire d'accolade cela permet de visualiser assez rapidement s'il y a un problème avec celles-ci.
S'il manque des accolades la ligne va s'arrêter dans le vide

Oui j’ai installer la dernière version qui est plus pratique ^^
maintenant je vais essayer de trouver un code pour faire marcher tous ca avec lecture d'une vidéo :grimacing:

Slt :wave:
Donc pour prévoir la dernière étape (lecture video) comme l'indique le poste 1/..
Pour le Raspberry pi il y aurai un code a insérer sur cette carte
Je me référence a ce lien ? :arrow_right: Installer un écran au Raspberry Pi
avec cette écran (commandé)
Ecran tactile LCD TFT 3.5 pouces
j’espère que cela ira, rassurer moi :grimacing:
Merci

Slt :wave:
Pour l'écran on verra plu tard sauf si vous avez une réponse a m'apporter :wink:
Sinon j'aimerai savoir comment actionner le Bluetooth en mode ON/OFF

  • Alimentation USB (pour l'instant)
  • Configuration du module HC-06 :white_check_mark:
  • Appairage :white_check_mark:
  • App ARDUINO bluetooth controller :white_check_mark:
  • Baudrate est par défaut Serial.begin(9600); :white_check_mark:
  • Pas d'erreur :white_check_mark:

Il y aurai t'il un changement dans le code a faire :question:
Merci de votre aide précieuse :+1:
Bonne fin d'année a tous :confetti_ball: :fireworks: :sparkler: :sparkles: :tada:

#include <SoftwareSerial.h>

SoftwareSerial hc06(4, 12);

#include "DFRobotDFPlayerMini.h"
#include <Servo.h>        // Tools -> Manage Libraries...
#include <ServoEasing.h>  // ServoEasing v2.3.4
#include <AsyncTimer.h>   // AsyncTimer v2.2.0
#include <jled.h>         // JLed v4.8.0


// Eye LED settings...

#define LED_A 5
#define LED_B 6
#define LED_C 7

#define FADE_ON 125
#define FADE_ON_WAIT 500

#define FLICKER_TIME 2500

#define EYES_ON_WAIT 500

#define FADE_OFF 1500
#define FADE_OFF_WAIT 2500


// Eye Servo settings...

#define EYE_SERVO_A 9
#define EYE_SERVO_B 10
#define EYE_SERVO_C 11

#define EYE_SPEED 150

#define EYE_MIN 20
#define EYE_MAX 160
#define EYE_CENTER 90

#define EYE_INTERVAL 900


// Random eye movement...

AsyncTimer t;
ServoEasing eyeServoA;
ServoEasing eyeServoB;
ServoEasing eyeServoC;
unsigned short eyeTimer;
unsigned short scanTimer;
bool eyeMoveA = true;
bool eyeMoveB = true;
bool eyeMoveC = true;


// Eye flickering & fading movement.

JLed ledsA[] = {
  JLed(LED_A).FadeOn(FADE_ON).DelayAfter(FADE_ON_WAIT * 2),
  JLed(LED_A).Candle(6, 100, FLICKER_TIME * 2),
  JLed(LED_A).On().DelayAfter(EYES_ON_WAIT * 2),
  //    JLed(LED_A).FadeOff(FADE_OFF).DelayAfter(FADE_OFF_WAIT * 2)
};
auto seqA = JLedSequence(JLedSequence::eMode::SEQUENCE, ledsA);
auto ledA = JLed(LED_A).FadeOff(FADE_OFF).DelayAfter(FADE_OFF_WAIT * 2);

JLed ledsB[] = {
  JLed(LED_B).FadeOn(FADE_ON).DelayAfter(FADE_ON_WAIT * 2),
  JLed(LED_B).Candle(6, 100, FLICKER_TIME * 2),
  JLed(LED_B).On().DelayAfter(EYES_ON_WAIT * 2),
  //    JLed(LED_B).FadeOff(FADE_OFF).DelayAfter(FADE_OFF_WAIT * 2)
};
auto seqB = JLedSequence(JLedSequence::eMode::SEQUENCE, ledsB);
auto ledB = JLed(LED_B).FadeOff(FADE_OFF).DelayAfter(FADE_OFF_WAIT * 2);


// Generate variation for range -> range * 2

int vary(int range, int v = 11) {
  return range + random(v) * range / v;
}
int Led = 13;
int buttonpin = 8;
int val = 0;


// Change JLed timings so each flicker is independent.

void retime(JLed (&leds)[3], JLed &led) {
  leds[0].FadeOn(FADE_ON).DelayAfter(vary(FADE_ON_WAIT));
  leds[1].Candle(6, 100, vary(FLICKER_TIME));
  leds[2].On().DelayAfter(vary(EYES_ON_WAIT));
  led.FadeOff(FADE_OFF).DelayAfter(vary(FADE_OFF_WAIT));
}


// Random eye movement.

void moveEyes() {
  if (eyeMoveA) {
    eyeServoA.startEaseTo(random(EYE_MIN, EYE_MAX + 1));
  }

  if (eyeMoveB) {
    eyeServoB.startEaseTo(random(EYE_MIN, EYE_MAX + 1));
  }
}


// Scan eyes back and forth.

void scanEyes() {
  eyeServoC.startEaseTo(eyeMoveC ? EYE_MIN : EYE_MAX);
  eyeMoveC = !eyeMoveC;
}

// Use pins 2 and 3 to communicate with DFPlayer Mini
static const uint8_t PIN_MP3_TX = 2;  // Connects to module's RX
static const uint8_t PIN_MP3_RX = 3;  // Connects to module's TX
SoftwareSerial softwareSerial(PIN_MP3_RX, PIN_MP3_TX);

// Create the Player object
DFRobotDFPlayerMini player;


// Standard setup function.

void setup() {
  //Initialize Serial Monitor
  Serial.println("ENTER AT Commands:");
  //Initialize Bluetooth Serial Port
  hc06.begin(9600);

  void playMp3Folder(int fileNumber);

  // Init serial port for DFPlayer Mini
  softwareSerial.begin(9600);

  // Start communication with DFPlayer Mini
  if (player.begin(softwareSerial)) {
    Serial.println("OK");

    // Set volume to maximum (0 to 30).
    player.volume(20);

    delay(55700);

  } else {
    Serial.println("Connecting to DFPlayer Mini failed!");
  }

  Serial.begin(9600);         // For debugging.
  randomSeed(analogRead(0));  // Init random number generator.

  eyeServoA.attach(EYE_SERVO_A);  // Init eyes.
  eyeServoA.write(EYE_CENTER);
  eyeServoA.setSpeed(EYE_SPEED);

  eyeServoB.attach(EYE_SERVO_B);
  eyeServoB.write(EYE_CENTER);
  eyeServoB.setSpeed(EYE_SPEED);

  eyeServoC.attach(EYE_SERVO_C);
  eyeServoC.write(EYE_CENTER);
  eyeServoC.setSpeed(EYE_SPEED / 2);  // Run slower is scanning mode.

  pinMode(LED_C, OUTPUT);  // Make Led C constantly on (for scanning mode).
  digitalWrite(LED_C, HIGH);

  t.setup();
  eyeTimer = t.setInterval(moveEyes, EYE_INTERVAL);
  scanTimer = t.setInterval(scanEyes, EYE_INTERVAL * 5);

  pinMode(Led, OUTPUT);
  pinMode(buttonpin, INPUT);


  // Standard loop.
}

void loop() {

  // Bluetooth

  //Write data from HC06 to Serial Monitor
  if (hc06.available()) {
    Serial.write(hc06.read());
 }
  
  //Write from Serial Monitor to HC06
  if (Serial.available()) {
   hc06.write(Serial.read());
 }



  //DFplayer Pistes

  player.play(1);  // Play the first MP3 file on the SD card

  t.handle();
  {

    if (!seqA.Update()) {
      eyeMoveA = false;  // Stop random eye movement when sequence ends and then we fade off.
      if (!ledA.Update()) {
        retime(ledsA, ledA);
        seqA.Reset();
        ledA.Reset();
        eyeMoveA = true;  // Restart eye movement for next eye flickering sequence.
      }
    }

    if (!seqB.Update()) {
      eyeMoveB = false;  // Stop random eye movement when sequence ends and then we fade off.
      if (!ledB.Update()) {
        retime(ledsB, ledB);
        seqB.Reset();
        ledB.Reset();
        eyeMoveB = true;  // Restart eye movement for next eye flickering sequence.
      }
    }
    val = digitalRead(buttonpin);
    if (val == HIGH) {
      digitalWrite(Led, HIGH);
    } else {
      digitalWrite(Led, LOW);
    }
  }
}

????
Le module HC06 propose une interface série donc, une fois l'appairage réalisé, tu l'utilises comme Serial.
Si ton application fonctionne avec Serial, elle devrait fonctionner avec le module HC06.

Ok il doit avoir un autre problème alors bizare :thinking:
déjà pour éclaircir la chose voici les branchements :face_with_spiral_eyes: