[Conseil] Liaison enceinte/capteur distance

Bonjour !

Nous sommes deux étudiants complètement novices en matière d'Arduino, et dans le cadre d'un atelier nous devons fabriquer un petit quelque chose, en fonction des envies et (surtout :cold_sweat: ) des compétences. Nous avons cherché dans les autres topics, mais jusque là on a pas trouvé grand chose...

Notre projet (sûrement très simple, mais qui ressemble à une montagne infranchissable pour les faibles que nous sommes), est de programmer l'ensemble pour que, lorsqu'on s'approche du montage, le volume de la musique baisse, et lorsqu'on s'éloigne il augmente (du coup, le volume de musique reste relativement constant à l'oreille où que l'on se trouve dans la pièce).

Nous avons jusque là apposé un shield RMP3 avec le slot SD et la sortie jack sur la base Arduino, et branché le capteur de distance sur l'ensemble.

Pour confirmation, il faut maintenant qu'on branche un haut parleur sur le jack, et insérer une carte SD dans le slot et c'est bon ?
Et niveau programmation, y'aurait-il une ou deux pistes de départ à nous conseiller ?

Georgeslechien:

  • Nous sommes deux étudiants complètement novices en matière d'Arduino,
  • et dans le cadre d'un atelier nous devons fabriquer un petit quelque chose, en fonction des envies et (surtout :cold_sweat:) des compétences.

Antilogie !

Ok, je sors.

Pourquoi ça serait incompatible ? :stuck_out_tongue:

Bonjour
Avez-vous déjà été sur le site de Roguerobotics ?
à l'adresse : www.roguerobotics.com/wikidocs/rmp3/documentation/printable vous trouverez tous ce qu'il faut pour commander votre rmp3 avec un Arduino.
A+

Bonjour !

Nous avons bien avancé, le montage est OK, le code est en cours, mais nous avons un léger souci…
Nous avons d’abord isolé le code qui s’applique au shield rmp3 et le code qui s’applique au capteur de distance, puis nous avons essayé de les combiner : cependant, nous ne trouvons pas la manière de coupler les deux codes pour que le son se déclenche selon la distance.

Nous voudrions, par exemple, qu’un son n°1 se déclenche à 1m de distance, un son n°2 se déclenche à 2m, et ainsi de suite…

Voilà notre code :

// simple rMP3 playback, plays for 5 seconds, and then stop for 5 seconds, looping this pattern continuously
// open serial terminal at 9600 to view playback status
#define echoPin 2            // Pin to receive echo pulse FIL VERT
#define trigPin 3            // Pin to send trigger pulse FIL BLEU
 
#include <RogueMP3.h>
#include <SoftwareSerial.h>
 
// make sure this file exists in the root folder on the SD card
#define SONG "/son.mp3"
 
SoftwareSerial rmp3_serial(6, 7);
RogueMP3 rmp3(rmp3_serial);
 
void setup()
{
  Serial.begin(9600);
  rmp3_serial.begin(9600);
 
  rmp3.sync();
 
  rmp3.playfile(SONG);
  rmp3.playpause();
 
  Serial.println(rmp3.version());
 
  Serial.begin(9600);
  pinMode(echoPin, INPUT);
  pinMode(trigPin, OUTPUT);
}

void lecturecapteur(){
  digitalWrite(trigPin, LOW);                   // Set the trigger pin to low for 2uS
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);                  // Send a 10uS high to trigger ranging
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);                   // Send pin low again
  int distance = pulseIn(echoPin, HIGH);        // Read in times pulse
  distance= distance/58;                        // Calculate distance from time of pulse
  Serial.println(distance);                     
  delay(50);                                    // Wait 50mS before next ranging
}

void lectureson(){
  Serial.println("play");
  rmp3.playpause();
  for(int i = 0; i< 5; i++){
    Serial.println(rmp3.getplaybackstatus());
    delay(1000);
  }
}

void loop(){
  lecturecapteur();
}

À partir de là, ça devient un peu flou… Si une âme charitable pouvait nous indiquer à peu près la suite des événements, ou au moins la partie du code sur laquelle nous devons intervenir, ça serait vraiment gentil ! :slight_smile:

On dirait que notre problème n'inspire pas grand monde... =(

Bah il s’agit juste de tester une variable :

void loop() {

distance = lecturecapteur();

if(distance >=50 && <100)  lectureson(1);
if(distance >=100 && distance <200)  lectureson(2);
if(distance >=200 && distance <300)  lectureson(3);
}

int lecturecapteur(){
  digitalWrite(trigPin, LOW);                   // Set the trigger pin to low for 2uS
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);                  // Send a 10uS high to trigger ranging
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);                   // Send pin low again
  int distance = pulseIn(echoPin, HIGH);        // Read in times pulse
  distance= distance/58;                        // Calculate distance from time of pulse
  Serial.println(distance);                     
  delay(50);                                    // Wait 50mS before next ranging

return distance
}

void lectureson(int Song){

switch(Song) {
case 1 :
// code pour jouer le son n°1
break;
case 2 :
// code pour jouer le son n°2
break;
case 3 :
// code pour jouer le son n°3
break;
}

  
}

Merci beaucoup !