Leçons de niveau 15

Kidule Dé/Jeu d'adresse sonore

Une page de Wikiversité.
Aller à la navigation Aller à la recherche
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
Icon falscher Titel.svg
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)