top of page

Interaction par le biais du son 

Pour faire parler notre plante nous utilisons quatres éléments clés:

Le capteur à ultrason est à proximité de la plante, c'est lui qui indique à notre amie la distance entre elle et son interlocuteur, c'est à dire une personne où notre Druid20.

Ensuite la voix de notre plante est un petit haut-parleur, qui émet un son différent en fonction de la distance captée.

Ces sons sont faits maison avec le logiciel FL STUDIO 20 et sont enregistrés dans une bibliothèque de sons se trouvant dans le module MicroSD, directement connecté à la petite enceinte.

C'est donc en fonction de la position de son interlocuteur que notre amie réagit.

Mise en place

Le capteur à ultrasons

Le code

ULTRASON.jpg

const byte = TRIGGER_PIN=2 //on indique les pins correspondante

const byte = ECHO_PIN=3

const unsigned long MEASURE_TIMEOUT = 25000UL ;

 

const float SOUND_SPEED = 340,0 / 1000 ; //on détermine la vitesse des signaux

 

 

void setup() {

Serial.begin(9600) ;

 

pinMode(TRIGGER_PIN, OUTPUT) ; //on met en place le capteur à ultrasons

digitalWrite(TRIGGER_PIN, LOW) ;

pinMode(ECHO_PIN, INPUT) ;

 

void loop() {

digitalWrite(TRIGGER_PIN, HIGH) ; //on indique au capteur d’envoyer le signal avec un délai de 10 microsecondes entre chaque envoi

delayMicroseconds(10) ;

digitalWrite(TRIGGER_PIN, LOW) ;

 

long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT) ;

 

float distance_mm = measure / 2.0 * SOUND_SPEED ;

 

Serial.print(F("Distance: ")); //on affiche les distances calculées

Serial.print(distance_mm);

Serial.print(F("mm ("));

Serial.print(distance_mm / 10.0, 2);

Serial.print(F("cm, "));

Serial.print(distance_mm / 1000.0, 2);

Serial.println(F("m)"));

 

delay(200); //le délai entre chaque distance calculée

Le module microSD

Le code

microsd.jpg

Le module microSD

Le code

microsd.jpg

/!\ IL FAUT INSTALLER LES LIBRAIRIES SD.h ET SPI.h /!\

Elles permettent à l'arduino de lire le module microSD.

#include "SD.h" //on appelle les librairies

#include "SPI.h"

#define SD_ChipSelectPin 10 //on définit la pin du module microSD

 

const byte =TRIGGER_PIN=2 

const byte = ECHO_PIN=3

 

const unsigned long MEASURE_TIMEOUT = 25000UL ;

 

const float SOUND_SPEED = 340,0 / 1000 ;

void setup() {

 

if(!SD.begin(SD_ChipSelectPin)) //on initialise la carte SD

Serial.begin(9600) ;

 

pinMode(TRIGGER_PIN, OUTPUT) ;

digitalWrite(TRIGGER_PIN, LOW) ;

pinMode(ECHO_PIN, INPUT) ;

 

void loop() {

digitalWrite(TRIGGER_PIN, HIGH) ;

delayMicroseconds(10) ;

digitalWrite(TRIGGER_PIN, LOW) ;

 

long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT) ;

 

float distance_mm = measure / 2.0 * SOUND_SPEED ;

 

Serial.print(F("Distance: "));

Serial.print(distance_mm);

Serial.print(F("mm ("));

Serial.print(distance_mm / 10.0, 2);

Serial.print(F("cm, "));

Serial.print(distance_mm / 1000.0, 2);

Serial.println(F("m)"));

 

delay(200); 

L'enceinte

Le code

speaker.jpg

/!\ IL FAUT INSTALLER LA LIBRAIRIE TMRpcm.h /!\

C'est elle qui permet l'intéraction entre carte SD et enceinte.

#include "SD.h" //on appelle les librairies

#include "SPI.h"

#include "TMRpcm.h"

 

#define SD_ChipSelectPin 10

 

const byte = TRIGGER_PIN=2 

const byte = ECHO_PIN=3

 

const unsigned long MEASURE_TIMEOUT = 25000UL ;

 

const float SOUND_SPEED = 340,0 / 1000 ;

 

TMRpcm tmrpcm; //on actionne la librairie

 

void setup() {

 

tmrpcm.speakerPin=9; //on définit la pin du speaker

if(!SD.begin(SD_ChipSelectPin))

 

tmrpcm.quality(1); //qualité du son

tmrpcm.setVolume(5); //volume du son

 

if(!SD.begin(SD_ChipSelectPin))

Serial.begin(9600) ;

 

pinMode(TRIGGER_PIN, OUTPUT) ;

digitalWrite(TRIGGER_PIN, LOW) ;

pinMode(ECHO_PIN, INPUT) ;

 

void loop() {

digitalWrite(TRIGGER_PIN, HIGH) ;

delayMicroseconds(10) ;

digitalWrite(TRIGGER_PIN, LOW) ;

 

long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT) ;

 

float distance_mm = measure / 2.0 * SOUND_SPEED ;

 

Serial.print(F("Distance: "));

Serial.print(distance_mm);

Serial.print(F("mm ("));

Serial.print(distance_mm / 10.0, 2);

Serial.print(F("cm, "));

Serial.print(distance_mm / 1000.0, 2);

Serial.println(F("m)"));

 

delay(200);

 

if(distance_mm>2000 && distance_mm<2200){ //en fonction de la distance on joue un son à telle seconde de la composition

tmrpcm.play("project.wav", 0);

}

 

//et ainsi de suite...

if(distance_mm<100{ //ici on augmente la durée du son

tmrpcm.play("song.wav");

else{

delay(3000);

}

}

ET VOILA!

128624179_723865114911799_61357978779723
20201130_163934_edited.jpg
bottom of page