1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
|
/*
##### Chargement de la bibliothèque nécessaire à la lecture des fichiers sons
##### Préférer des fichiers au format Wav non compressés aux fichiers MP3 plus longs à s'ouvrir
*/
#include <DFPlayer_Mini_Mp3.h>
/*
##### Chargement de la bibliothèque nécessaire aux fonctions de base de la carte Arduino
*/
#include <SoftwareSerial.h>
/*
##### Nous travaillons avec les bornes 10 & 11 de notre carte pour le branchement du module électronique de lecture du son
*/
SoftwareSerial mySerial(10, 11);
/*
##### Nous initialisons les variables nécessaires pour exprimer le nombre compté d'impulsionset l'information de fin de rotation du cadran
*/
int attente_de_fin_rotation = 0;
int compteur;
/*
##### Pour le cadran rotatif nous utiliserons la borne 13 de notre carte Arduino
*/
int in = 13;
/*
##### Nous exprimons la position de départ de notre cadran
*/
int lastState = LOW;
int trueState = LOW;
long duree_entre_chaque_impulsions = 0;
int cleared = 0;
int lastCount;
/*
##### Déclaration des réglages permanents liés au cadran
*/
int temps_attente_apres_fin_rotation = 100;
int temps_entre_les_impulsions = 10;
/*
##### Configuration de la carte Arduino (vitesse, transmission, initialisation du lecteur sons et de la borne 13 de la carte Arduino
*/
void setup() {
pinMode(in, INPUT);
Serial.begin(9600);
mySerial.begin (9600);
mp3_set_serial(mySerial);
delay(1);
/*
##### Configuration du volume de lecture MP3
*/
mp3_set_volume(15);
}
/*
##### Démarrage de la boucle
*/
void loop(){
int reading = digitalRead(in);
if ((millis() -duree_entre_chaque_impulsions) > temps_attente_apres_fin_rotation) {
// le cadran n'a pas fini sa rotation
if (attente_de_fin_rotation) {
// le cadran termine sa rotation et le numero est transmis à la carte sur la variable compteur
/*
##### Détermination des comportements en fonction de chaque code compteur
*/
}if (compteur == 2){
mp3_play(1);
mp3_stop;
}
if (compteur == 3){
mp3_play(2);
mp3_stop;
}
if (compteur == 4){
mp3_play(3);
mp3_stop;
}
if (compteur == 5){
mp3_play(4);
mp3_stop;
}
if (compteur == 6){
mp3_play(5);
mp3_stop;
}
if (compteur == 7){
mp3_play(6);
mp3_stop;
}
if (compteur == 8){
mp3_play(7);
mp3_stop;
}
if (compteur == 9){
mp3_play(8);
mp3_stop;
}
if (compteur == 10){
mp3_play(9);
mp3_stop;
}
attente_de_fin_rotation = 0;
compteur = 0;
cleared = 0;
}
}
/*
##### Bloc de comptage du nombre d'impulsionsLes impulsions sont comptées et le résultat est transmis après un temps de silenceExemplepour le code 3, nous avons 3 impulsions séparées d'un silence court et se terminant par un silence long
*/
if (reading != lastState) {
duree_entre_chaque_impulsions = millis();
}
//a ce stade le cadran n a pas fini sa rotation
if ((millis() - duree_entre_chaque_impulsions) > temps-entre_les_impulsions ){
if (reading != trueState) {
// chaqueimpulsion est enregistrée dans la variable compteur
trueState = reading;
if (trueState == HIGH) {
// la variable compteur est incrémentée de +1 à chaque impulsion lue
compteur++;
attente_de_fin_rotation = 1;
// Le résultat de compteur est définitif et est exploité par le programme
}
}
}
lastState = reading;
} |
Partager