Kidule Dé/Gérer le temps
Dans un programme, il faut pouvoir gérer le temps: c’est utile pour faire clignoter ou avancer quelque chose.
En fait, le processeur PIC, bien que petit, fait déjà beaucoup de choses à la seconde. Par exemple, il peut faire le programme des exercices précédents plusieurs milliers de fois par seconde.
Alors comment faire si on veut faire clignoter lentement une Led?
Une bonne solution est de compter combien de fois on exécute la fonction loop() et d’agir en conséquence
#include "hardwareDe.h"
long compteur=0;
void loop()
{
compteur++;
if (compteur==500000){
Led0 = !Led0;
compteur=0;
}
}
Jusqu'à présent, on a utilisé des variables déjà définies (Led0 par exemple). Une déclaration de variable commence par le type de la variable. Ce qui existe qui est utile pour nous:
- byte c’est un nombre entre 0 et 255. C'est en fait ce que le PIC peut mettre dans une case de sa mémoire et il est capable de faire des calculs simples en un coup avec des bytes. Lorsque l’on a pas besoin de plus, c’est bien de demander qu'un byte.
- int un nombre qui va de −32 768 à 32 767, cela convient bien pour beaucoup de choses, mais c’est plus compliqué pour le PIC, il doit faire plusieurs instructions pour y arriver et cela lui prend 2 cases mémoires pour mettre cette variable.
- long un grand nombre qui va de −2 147 483 648 à 2 147 483 647. Mais il faut 4 cases mémoires est plusieurs instructions pour chaque calculs pour un PIC. (par contre pour un PC moderne, il fait n’importe quel calcul en un seul coup avec des nombres comme ceux-là).
ensuite on donne le nom de la variable:
- doit commencer par une lettre (ou _)
- suivi de chiffres ou de lettres ou _
Si on veut, on peut encore lui donner quelle valeur on veut mettre au début en écrivant = valeur
Et on termine par ; comme n’importe quelle instruction
En C, on peut écrire ++ derrière une variable pour lui dire d'ajouter 1 au contenu de cette variable. On aurait aussi pu écrire
compteur=compteur+1;
et on oublie pas le ; pour terminer
En C, le ! veut dire "pas" : si Led0 vaut Allume alors !Led0 vaut Eteint (et inversement). C'est bien pratique pour faire clignoter.
Exercice 1
[modifier | modifier le wikicode]Fait clignoter la Led0 5 fois plus vite
#include "hardwareDe.h"
long compteur=0;
void loop()
{
compteur++;
if (compteur==100000){ // <-- juste changer ici
Led0 = !Led0;
compteur=0;
}
}
Exercice 2
[modifier | modifier le wikicode]Fait que la Led0 ne clignote que si tu presses sur le Poussoir
#include "hardwareDe.h"
long compteur=0;
void loop()
{
compteur++;
if (compteur==100000){
compteur=0;
if (Poussoir==Presse){
Led0 = !Led0;
}
else{
Led0 = Eteint;
}
}
}
Suite
[modifier | modifier le wikicode]Avec cela, tu es prêt pour faire une Première version d'un petit chenillard
Tu peux aussi aller directement à la leçon Kidule Ascenseur si tu préfères voir quelque chose qui bouge à quelque chose qui clignote et fait du bruit