View  Edit  Attributes  History  Attach  Print  Search

ACCUEIL | ARDUINO > S'INSTALLER > DEBUTER > APPROFONDIR | PROCESSING | MECATRONIQUE | MATERIEL | OUTILS | TESTS | Plus...|
Python > Shell > ATELIERS Python + Qt > PyQt apps > PyQt+Arduino | Mes Robots | RepRap | Mes lib'Arduino | Mes shields Arduino | Mes distros | Les Mini-PC |
ATELIERS ARDUINO| VIDEOS | COMPRENDRE | REFERENCES | CODER | TECHNIQUE | GNU/LINUX | LIENS | Rien à voir |

Produire un son de "sirène de police".

ARDUINO - INITIATION - SONS
Par X. HINAULT - Créé le 03/02/2010 - Mis à jour le : 03/02/2010

Présentation

Ce programme produit un son de sirène de police à l'aide d'un buzzer piézo-électrique. Ce programme utilise l'instruction tone() qui permet de produire des sons de fréquence voulue sur n'importe quelle broche.

Matériel Nécessaire

L'espace de développement Arduino

  • ... pour éditer, compiler le programme et programmer la carte Arduino.

Le matériel suivant pour réaliser le montage associé

  • une plaque d'essai pour montage sans soudures, (pas indispensable ici...)
  • un buzzer piézo-électrique

Instructions de montage

  • Connecter sur la broche 2 (configurée en sortie) un buzzer piézo-électrique connecté à la masse (0V)

Le schéma théorique du montage


Le schéma théorique du montage

Le circuit du montage


Le schéma du montage à réaliser

Explication du programme

Structure globale du programme

Ce programme simple comprend :

  • une entête déclarative
  • une partie « configuration » qui ne sera exécutée qu'une fois (fonction setup( ) )
  • une partie constituée d'une boucle sans fin que le programme répètera à l'infini ( fonction loop( ) ) : c'est le coeur du programme.

Déroulement du programme

Le programme se déroule de la façon suivante :

  • Après avoir pris en compte les instructions de la partie déclarative,
  • puis après avoir exécuté la partie configuration ( fonction setup( ) ),
  • le programme bouclera sans fin ( fonction loop ( ) ), exécutant de façon répétée le code compris dans la boucle sans fin.

Le déroulement du programme

Au niveau de la partie déclarative :

Déclaration des constantes de broches

  • Déclaration des constantes pour les broches utilisées dans le programme : on renomme la broche utilisée avec le buzzer.
const int Buzzer=2; //declaration constante de broche 

Déclaration des variables globales

  • Déclaration des variables globales du programmes :
int i=0,j=0,k=0; // variables de boucle

Au niveau de la fonction d'initialisation setup( ) :

configuration des broches utilisées :

  • Configuration des broches en sortie : on met en sortie la broche utilisée avec le buzzer.
pinMode(Buzzer, OUTPUT); //met la broche en sortie 

Au niveau de la boucle principale, la fonction loop ( ) :

  • A l'aide d'une boucle, on crée un progression de la fréquence du son produit, à l'aide de l'instruction tone() qui permet de produire un son de fréquence voulue sur la broche de son choix.
  • A l'aide d'une seconde boucle, on crée une diminution de la fréquence du son produit
  • L'enchaînement des sons crescendo puis decrescendo donne un son de « sirène de police »

for (i=500; i<1000; i++) {
  tone(Buzzer, i); 
  delay(1); 
} // fin boucle for 

for (i=1000; i>500; i--) {
  tone(Buzzer, i); 
  delay(1); 
} // fin boucle for 

  • Le programme recommence en boucle les instructions de la fonction loop( ). Un son de sirène de police est produit par le buzzer.

Se reporter aux commentaires présents dans le programme pour plus de détails.

Mise en oeuvre du programme

Préparation du montage et programmation de la carte Arduino :

  • Commencer par réaliser le montage indiqué sur plaque d'expérimentation
  • Ensuite, programmer la carte Arduino avec ce programme (en bas de page) selon la procédure habituelle

Fonctionnement

  • Un son de sirène de police est produit par le buzzer.

Le programme complet en langage Arduino :

A copier/coller directement dans l'éditeur Arduino


// --- Programme Arduino ---
// par X. HINAULT - 01/2010 

// --- Que fait ce programme ? ---
/* Produit un son type sirène de Police */

// --- Fonctionnalités utilisées ---

// --- Circuit à réaliser ---
// Connecter Buzzer sur la broche 2 (configurée en sortie)

//**************** Entête déclarative *******
// A ce niveau sont déclarées les librairies, les constantes, les variables...

// --- Inclusion des librairies utilisées ---

// --- Déclaration des constantes ---

// --- constantes des broches ---

const int Buzzer=2; //declaration constante de broche 



// --- Déclaration des variables globales ---

int i=0,j=0,k=0; // variables de boucle

// --- 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(Buzzer, OUTPUT); //met la broche en sortie 



} // 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 (i=500; i<1000; i++) {
  tone(Buzzer, i); 
  delay(1); 
} // fin boucle for 

for (i=1000; i>500; i--) {
  tone(Buzzer, i); 
  delay(1); 
} // fin boucle for 


} // 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...