// --- Programme Arduino Uno et Nano--- // // --- Que fait ce programme ? --- /* Produit un son type diesel */ // --- Fonctionnalités utilisées --- // --- Circuit à réaliser --- // Connecter Ampli audio sur la broche 3 (configurée en sortie) // La voie du récepteur est connecté à la broche 5 //**************** Entête déclarative ******* // A ce niveau sont déclarées les librairies, les constantes, les variables... #define potard2 A2 // Analog pin 2 pour le potard fréquence #define potard1 A1 // Analog pin 1 pour le potard vitesse (potard ou prélèvement tension moteur au travers d'un pont redresseur) // --- Inclusion des librairies utilisées --- // --- Déclaration des constantes --- // --- constantes des broches --- const int Ampli = 3; //declaration constante de broche , sortie vers ampli const int Signal = 5; //declaration constante de broche , signal venant du récepteur // --- Déclaration des variables globales --- int val3; // valeur du signal int mini = 950; // Mettre ici la valeur mini du signal int maxi = 2050; // Mettre ici la valeur du signal int val2; // stocke la variable potard A2 int val1; // Stocke la variable potard A1 int i = 0, j = 0; // variables de boucle int f; // fréquence du son int e; // Vitesse moteur, signal du récepteur ou potard ou tension prise sur un pont redresseur en parallèle avec le moteur int neutre = 1480; // valeur du neutre, à définir selon radio. // --- Initialisation des fonctionnalités utilisées --- //**************** FONCTION SETUP = Code d'initialisation ***** // La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme void setup() { // debut de la fonction setup() // --- ici instructions à exécuter au démarrage --- pinMode(Ampli, OUTPUT); //met la broche en sortie pinMode(Signal, INPUT); //met la broche en entrée } // fin de la fonction setup() // ******************************************************************************** //*************** FONCTION LOOP = Boucle sans fin = coeur du programme ************* // la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension void loop() { // debut de la fonction loop() // --- ici instructions à exécuter par le programme principal --- for (j = 0; j < 2; j++) { for (i = 0; i < 2; i++) { val2 = analogRead(potard2); val2 = map(val2, 0, 1023, 50, 1000); f = val2; val1 = analogRead(potard1); val1 = map(val1, 0, 1023, 18, 2); val3 = 0; val3 = pulseIn(Signal, HIGH), 30000; //Lire pulseIn et de le stocker en tant que val3 if ( val3 > neutre ) val3 = map(val3, mini, maxi, 1000, 2000); if ( val3 < neutre && val3 > 50) val3 = map(val3, mini, maxi, 2000, 1000); val3 = map(val3, 1450, 2000, 18, 2); e = val3; // ici, il faut choisir entre val3 ou val1 selon le choix de lecture vitesse: signal radio ou potard(ou prélèvement tension moteur via redresseur.) tone(Ampli, f); delay(3); noTone(Ampli); delay(1); tone(Ampli, f); delay(2); noTone(Ampli); delay(2); tone(Ampli, f); delay(1); noTone(Ampli); delay(e); tone(Ampli, f); delay(3); noTone(Ampli); delay(1); tone(Ampli, f); delay(2); noTone(Ampli); delay(2); tone(Ampli, f); delay(1); noTone(Ampli); delay(e * 3); } // fin boucle for delay(20); } } // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin // ******************************************************************************** // --- Fin programme --- // --- Mémo instructions --- // tone(broche, frequence, +/-duree); // produit son de fréquence indiquée sur la broche // noTone(broche); // stoppe la production de son sur la broche // à noter : une seule broche peut générer un son à la fois... |