top of page
Rechercher
  • chaimaasody

Arduino programmé

Dernière mise à jour : 1 déc. 2020

1. Tout d’abord, nous avons utilisé l’Arduino Mega 2560:



2. Après nous avons utilisé le micro-capteur qui s’appelle le Max9814:




3. Nous avons utilisé des lampes LED et quelques fils:







4. Voilà comment on a lié les éléments de l’Arduino :


GND: Chassis ground

5V:5volt

A0: Analogue input les informations qui viennent du capteur sonore vont se transférer vers l’arduino par ça(on peut choisir entre A0-A15)

3: Digital output (on peut choisir entre 0-53 et c’est possible que ce soit input ou output)


5. Le programme pour le code de programmation est le langage C:


Voici le code de programmation :

//=========Define part=========

#define microphonePin A0

#define lightSwitch 3

double thresholdVolt = 1.2;

//========END of Define part=========

const int sampleWindow = 50; // Sample window width in mS (50 mS = 20Hz)

unsigned int sample;

void setup() {

Serial.begin(9600);

// put your setup code here, to run once:

pinMode(lightSwitch,OUTPUT);

digitalWrite(lightSwitch, LOW);

}

void loop() {

// put your main code here, to run repeatedly:

unsigned long startMillis= millis(); // Start of sample window

unsigned int peakToPeak = 0; // peak-to-peak level

unsigned int signalMax = 0;

unsigned int signalMin = 1024;

// collect data for 50 mS

while (millis() - startMillis < sampleWindow)

{

sample = analogRead(microphonePin);

if (sample < 1024) // toss out spurious readings

{

if (sample > signalMax)

{

signalMax = sample; // save just the max levels

}

else if (sample < signalMin)

{

signalMin = sample; // save just the min levels

}

}

}

peakToPeak = signalMax - signalMin; // max - min = peak-peak amplitude

double volts = (peakToPeak * 5.0) / 1024; // convert to volts

Serial.println(volts);

if(volts > thresholdVolt)

{

digitalWrite(lightSwitch, HIGH);

Serial.println("On");

}

else

{

digitalWrite(lightSwitch, LOW);

16/11/2020 Zimbra

https://mailetu.uphf.fr/zimbra/h/printmessage?id=1570&tz=Europe/Brussels 4/6

Serial.println("Off");

}

}


L’explication de ce programme :

//=========Define part=========

#define microphonePin A0

#define lightSwitch 3


C’est le part qui définit les choses que nous avons décrit dans les lignes dessus. Vous pouvez le voir avec l’image de connexion dessus. Parce que nous avons connecté le A0 comme analogue input, donc nous devons écrire A0 ici pour le définir. C’est à dire si ont choisi A5 comme analogue input, on écrit A5 ici. Pareil pour le chiffre 3. Mais jusqu’à ici nous n'avons pas défini le input ou output. Il est dans le texte suivant.

double thresholdVolt = 1.2;

//========END of Define part=========

Ce chiffre 1.2 est là pour définir le seuil. Vous pouvez le comprendre comme le niveau de bruit. C’est pour éviter le bruit d’environnement et laisser la lumière toujours allumée si le bruit est plus élevé, il faut changer ce chiffre à plus haut pour éviter le bruit et rendre la lumière toujours allumée. Mais si ce chiffre est trop haut, le système ne va pas marcher, parce qu’il va constater tous les sons comme bruits. Donc quand nous changeons l’environnement, il faut essayer le système et savoir si nous avons besoin de changer ce chiffre.


const int sampleWindow = 50; // Sample window width in mS (50 mS = 20Hz)

unsigned int sample;


Cette partie c’est pour définir la fréquence d’échantillonnage. Ici on définit que chaque 50 ms le système mesure une fois.

void setup() {

Serial.begin(9600);

// put your setup code here, to run once:

pinMode(lightSwitch,OUTPUT);

digitalWrite(lightSwitch, LOW);

}


Cette partie c’est pour définir le 3 qui est output (nous avons mentionné dans les textes dessus.

On peut choisir entre 0-53 et il est possible d’être utilisé comme input ou output, nous le définissons ici comme output )

Et c’est aussi la partie qui définit l’état initial. On définit l’état initial quand la lumière est éteinte. C’est à dire s’il n’y a pas de son qui dépassé le seuil, la lumière est éteinte.


void loop() {

// put your main code here, to run repeatedly:

16/11/2020 Zimbra

https://mailetu.uphf.fr/zimbra/h/printmessage?id=1570&tz=Europe/Brussels 5/6

unsigned long startMillis= millis(); // Start of sample window

unsigned int peakToPeak = 0; // peak-to-peak level

unsigned int signalMax = 0;

unsigned int signalMin = 1024;

// collect data for 50 mS

while (millis() - startMillis < sampleWindow)

{

sample = analogRead(microphonePin);

if (sample < 1024) // toss out spurious readings

{

if (sample > signalMax)

{

signalMax = sample; // save just the max levels

}

else if (sample < signalMin)

{

signalMin = sample; // save just the min levels

}

}

}

peakToPeak = signalMax - signalMin; // max - min = peak-peak amplitude

double volts = (peakToPeak * 5.0) / 1024; // convert to volts

Serial.println(volts);

if(volts > thresholdVolt)

{

digitalWrite(lightSwitch, HIGH);

Serial.println("On");

}

else

{

digitalWrite(lightSwitch, LOW);

Serial.println("Off");

}

}



_C’est la partie principale du programme. Il peut juger si le son dépasse le seuil et décider si Arduino va donner l’électricité à la lumière.


Le programme est transféré par le logiciel Arduino IDE et voici le lien pour le télécharger:


D’abord il faut connecter le système avec l’ordinateur et après le transférer. On a enregistré deux vidéos pour vous expliquer :








7 vues0 commentaire

Posts récents

Voir tout
bottom of page