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