Kidule Dé/Première version d'un petit chenillard
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.
Un tableau est une suite de variables qui ont le même nom et un no entre crochet.
On le déclare comme une variable, par le mot clé long, int, ou byte, mais après le nom de la variable, on met entre [] le nombre d'élément que l’on veut déclarer. On peut après initialiser les valeurs en les séparant par des virgules.
byte MonTableau [8] = {0,1,2,3,4,5,6,7};
Si le tableau est initialisé (= on lui donne des valeurs) on n’est pas obligé d'indiquer le nombre d'élément a réserver.
pour utiliser la 3eme variable de MonTableau et y mettre 27, on écrit
MonTableau [3] = 27;
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é:
Exercice 1
[modifier | modifier le wikicode]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...
#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();
}
}