Aller au contenu

Kidule Dé/Première version d'un petit chenillard

Leçons de niveau 15
Une page de Wikiversité, la communauté pédagogique libre.
Début de la boite de navigation du chapitre
Première version d'un petit chenillard
Icône de la faculté
Chapitre no 6
Leçon : Kidule Dé
Chap. préc. :Gérer le temps
Chap. suiv. :Un peu de bruit
fin de la boite de navigation du chapitre
En raison de limitations techniques, la typographie souhaitable du titre, « Kidule Dé : Première version d'un petit chenillard
Kidule Dé/Première version d'un petit chenillard
 », n'a pu être restituée correctement ci-dessus.

maintenant que l’on sait Gérer le temps on peut faire un petit chenillard.

Pour faire un petit chenillard, il nous faut avoir une suite de combinaison de LEDs. Pour ce faire, nous allons introduire la notion de tableau.


Pour faire notre petit chenillard, l’idée est de déclarer un tableau de Combinaison de Leds. Comme dans notre cas (Kidule Dé à Droite) toutes les LEDs se trouvent sur le PORTB, on peut écrire les 7 Leds d'un seul coup. Pour se faciliter la vie, on initialise les valeurs du tableau en notation binaire (0bxxxxxxxx), ce qui fait que chaque chiffre binaire correspond à une LED. le bit 7 correspond au Poussoir ce qui fait que la valeur que l’on donne au registre n’est pas utile

En plus, il nous faut une variable Index qui va compter de 0 à 6 pour passer sur chaque combinaison.

Chaque fois que l’on aura attendu assez de boucles, on ajoutera 1 à l'index.

Attention, lorsque l'index devient plus grand que 6, il faut le remettre à 0, sinon on va lire toute la mémoire qui suit.

#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 loop()
{ 
   compteur++;
   if (compteur==50000){
      index++;
      compteur=0;
   }
   if (index>6){
      index=0;
   }
   Leds = Combinaison[index];
}

Ouups, notre programme commence à grandir! et à faire plusieurs choses.

Avant qu’il ne devienne trop gros et que l’on ne comprenne plus rien, on va le modifier pour avoir des plus petits morceaux.

Pour cela, on va fabriquer une nouvelle fonction GererAvanceChenillard() qui va faire le gros du travail.

#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()
{ 
   GererAvanceChenillard();
}

Maintenant, on est prêt pour faire un peu plus compliqué:

faire que le chenillard avance tant que l’on ne presse pas sur le bouton Poussoir. Dès que l’on presse sur le bouton Poussoir, on regarde si l'index est 3. Si oui, on a gagné et on allume toutes les LEDs, sinon on a perdu et on éteint toutes les LEDs.

Allez c’est à toi...