Ajout du code source
This commit is contained in:
		
							
								
								
									
										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); | ||||||
|  |    | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user