Kidule Dé/Jeu d'adresse sonore

Leçons de niveau 15
Une page de Wikiversité, la communauté pédagogique libre.
Début de la boite de navigation du chapitre
Jeu d'adresse sonore
Icône de la faculté
Chapitre no 8
Leçon : Kidule Dé
Chap. préc. :Un peu de bruit
Chap. suiv. :PIC Entrées Sorties
fin de la boite de navigation du chapitre
En raison de limitations techniques, la typographie souhaitable du titre, « Kidule Dé : Jeu d'adresse sonore
Kidule Dé/Jeu d'adresse sonore
 », n'a pu être restituée correctement ci-dessus.

Ce jeu d'adresse sonore doit faire un petit chenillard qui fait un petit buips à chaque changement de Led.

Si on presse sur le Poussoir alors qu'on est sur la Led6, on a gagné et toutes les Leds s'allument et on doit entendre un grand biiiiip (montant). Si on a pressé alors que la Led6 n'était pas allumée alors on a perdu et toutes les Leds s'éteignent et on entend un son buuuup (descendant).

Pour débuter, on va partir du petit chenillard

#include "hardwareDe.h" 

byte Combinaison [] = 
{//b 76543210
   0b11110111, // 0
   0b11101111, // 1
   0b11011111, // 2
   0b10111111, // 3 <--- indexCible
   0b11111011, // 4
   0b11111101, // 5
   0b11111110, // 6 = indexMax
};
long compteur=0;
byte index=0;

void GererAvanceChenillard()
{
   compteur++;
   if (compteur==50000){
      index++;
      compteur=0;
   }
   if (index>6){
      index=0;
   }
   Leds = Combinaison[index];
}

void loop()
{  
   if (Poussoir==Presse){
      if (index==3){
         Leds = 0b00000000;
      }
      else {
         Leds = 0b11111111;
      }
   }
   else{
     GererAvanceChenillard();
   }
}

Première chose à faire et d'y intégrer la fonction GérerSon() que l’on a fait précédemment

int  noBoucleSon = 0;
int  periodeSon = 100;
int  incrementPeriodeSon = 1;
long LongueurBip = 40000;

void GererSon()
{
   noBoucleSon++;
 
   if (LongueurBip > 0) {
      if (noBoucleSon > periodeSon) {
         noBoucleSon = 0;
         periodeSon += incrementPeriodeSon;
         Buzzer = ! Buzzer;
      }
      LongueurBip--;
   }   
   else {
      Buzzer = 1;
      noBoucleSon = 0;
   }
}
 
void FaireSonAvance()
{
   periodeSon = 100;
   incrementPeriodeSon = 1;
   LongueurBip = 10000;
}

On a déjà écrit la fonction FaireSonAvance()


Exercice 1[modifier | modifier le wikicode]

À chaque fois que tu avances, fait le son FaireSonAvance()

Exercice 2[modifier | modifier le wikicode]

Ajouter le son pour Gagné et Perdu: faire 2 fonctions FaireSonGagne() et FaireSonPerdu() en recopiant FaireSonAvance et en modifiant légèrement

Attention: il faut aussi que l’on ne calcule qu'une seule fois si on a gagné ou perdu, sinon, le son sera toujours recommencé (on peut utiliser le truc de DejaPresse)