Ajout du code source
This commit is contained in:
parent
e4aab038ea
commit
840ad9979f
10
README.md
10
README.md
@ -1,3 +1,9 @@
|
||||
# telephone-cadran-arduino
|
||||
# Logiciel d'interfaçage d'un téléphone à cadran pour Arduino
|
||||
|
||||
Programme adapté à l'Arduino Uno et au module DFPlayer Mini permettant de lire un fichier MP3 spécifique sur un téléphone à cadran modèle PTT en fonction du numéro de téléphone composé.
|
||||
Ce logiciel a été réalisé dans le cadre d'un atelier proposé par l'association [Nevers Libre](https://nevers-libre.org/).
|
||||
|
||||
## Matériel utilisé
|
||||
|
||||
* Arduino Uno
|
||||
* Module DFPlayer Mini (avec carte microSD)
|
||||
* Téléphone à cadran modèle PTT
|
||||
|
96
telephone-cadran-arduino.ino
Normal file
96
telephone-cadran-arduino.ino
Normal file
@ -0,0 +1,96 @@
|
||||
// Nos librairies
|
||||
#include <SoftwareSerial.h>
|
||||
#include <DFPlayerMini_Fast.h>
|
||||
|
||||
// Port série logiciel permettant de dialoguer avec le lecteur MP3 (pins RX et TX)
|
||||
SoftwareSerial audioSerie(10, 11);
|
||||
|
||||
// Objet de contrôle de notre lecteur MP3
|
||||
DFPlayerMini_Fast audio;
|
||||
|
||||
// Pin sur lequel recevoir nos impulsions de cadran
|
||||
int pinImpulsionCadran = 13;
|
||||
|
||||
// Pin sur lequel savoir si l'utilisateur est train de composer un chiffre ou non
|
||||
int pinEtatCadran = 7;
|
||||
|
||||
// Fonction exécutée au démarrage de l'arduino
|
||||
void setup()
|
||||
{
|
||||
|
||||
// On passe les pin de notre cadran en mode entrée
|
||||
pinMode(pinImpulsionCadran, INPUT);
|
||||
pinMode(pinEtatCadran, INPUT);
|
||||
|
||||
// On active la communication série sur USB (à 9600 bauds)
|
||||
Serial.begin(9600);
|
||||
|
||||
// On active la communication série sur notre port logiciel
|
||||
audioSerie.begin(9600);
|
||||
|
||||
// On initialise la connexion entre l'arduino et le lecteur mp3
|
||||
audio.begin(audioSerie);
|
||||
|
||||
// On défini le volume de sortie (entre 0 et 20)
|
||||
audio.volume(15);
|
||||
|
||||
}
|
||||
|
||||
// Variables d'état
|
||||
int numeroCompose = 0;
|
||||
int nombreImpulsionsSuccessives = 0;
|
||||
|
||||
// Boucle d'exécution : s'exécute indéfiniement
|
||||
void loop()
|
||||
{
|
||||
|
||||
// On lit nos valeurs au niveau du cadran
|
||||
int valeurPinImpulsionCadran = digitalRead(pinImpulsionCadran);
|
||||
int valeurPinEtatCadran = digitalRead(pinEtatCadran);
|
||||
|
||||
// Pas de composition
|
||||
if(valeurPinImpulsionCadran == 1 && valeurPinEtatCadran == 1) {
|
||||
|
||||
// Un numéro était-il en cours de composition ?
|
||||
if(numeroCompose > 0) {
|
||||
|
||||
Serial.print("Appel du numéro ");
|
||||
Serial.println(numeroCompose);
|
||||
|
||||
// On lit le bon fichier
|
||||
audio.play(numeroCompose);
|
||||
|
||||
}
|
||||
|
||||
// On remet à zéro nos valeurs
|
||||
numeroCompose = 0;
|
||||
nombreImpulsionsSuccessives = 0;
|
||||
|
||||
}
|
||||
|
||||
// Composition et impulsion en cours
|
||||
else if(valeurPinImpulsionCadran == 1 && valeurPinEtatCadran == 0) {
|
||||
|
||||
// On incrémente le nombre d'impulsions
|
||||
nombreImpulsionsSuccessives++;
|
||||
|
||||
}
|
||||
|
||||
// Composition en cours, mais pas d'impulsion
|
||||
else if(valeurPinImpulsionCadran == 0 && valeurPinEtatCadran == 0) {
|
||||
|
||||
// Si une impulsion a été détectée et qu'elle est inférieure à 150 (au dessus, on considère que c'est du parasitage
|
||||
// Alors, on incrémente le numéro
|
||||
if(nombreImpulsionsSuccessives > 0 && nombreImpulsionsSuccessives < 150) {
|
||||
numeroCompose++;
|
||||
}
|
||||
|
||||
// On remet à zéro le compteur d'impulsions
|
||||
nombreImpulsionsSuccessives = 0;
|
||||
|
||||
}
|
||||
|
||||
// On suspend l'exécution pour 1 millisecondes
|
||||
delay(1);
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user