Steun onze actie WeGoSTEM

Voor onze actie WeGoSTEM zoeken we nog vrijwilligers. Doe mee via WeGoSTEM.be/meedoen

Programmation d'un Knight Rider

Dans ce tutoriel, nous étendons le tutoriel ‘LED clignotantes’ pour créer un scanner de lumière Knight Rider. Plusieurs concepts du langage de programmation C++ sont appliquées dans ce tutoriel.


Requirements exigences

  1. Dwenguino
  2. câble USB fourni

A Knight Rider

S'il vous plaît commencer par faire une nouvelle sketch Arduino et y compris les bibliothèques suivantes ou de prendre un coup d'oeil à l'exemple Knight Rider (Arduino IDE> Fiile> Examples> Dwenguino):

  1. #include <LiquidCrystal.h>
  2. #include <Wire.h>
  3. #include <Dwenguino.h>

Nous commençons le code en initialisant les broches dans la fonction setup. Cette partie du code est appelée une seule fois lors du démarrage du Dwenguino:

  1. void setup() {
  2. // put your setup code here, to run once:
  3. initDwenguino();
  4. LEDS = 0b00000001;
  5. }

Nous appelons la fonction initDwengo() pour configurer les broches pour les LED comme sorties numériques. Cette fonction initialise également d'autres fonctionnalités de la carte tels que l'écran LCD qui nous n'utilisons pas dans ce tutoriel.

Ensuite, nous initialise la variable de LEDS à 0b00000001. Cela va activer le LD0 sur la carte Dwenguino.

Ensuite, nous écrivons la boucle principale du programme. Cette boucle contient la logique réelle du programme et fonctionne toujours (sauf si vous éteignez ou redémarrez le Dwenguino):

  1. void loop() {
  2. for (unsigned char i=0; i<7; i++) {
  3. LEDS <<= 1; // Rotate to the right
  4. delay(50);
  5. }
  6. for (unsigned char i=0; i<7; i++) {
  7. LEDS >>= 1; // Rotate to the left
  8. delay(50);
  9. }
  10. }

Dans cette première boucle nous déclarons la variable i qui est utilisé comme un compteur de boucle. Nous choisissons un unsigned char pour cette variable. Ceci est le plus petit type de variable dans notre microcontrôleur. Il peut garder tous les nombres compris entre 0 et 255. Dans cet exemple, i compte que de 0 à 7, donc ceci est suffisant.

La boucle contient deux boucles (for). Le code dans chacune de ces boucles est exécuté 7 fois - de i = 0 à i = 6 - avant de sauter à la boucle suivante. Dans la première boucle le contenu de LEDS est décalé vers la gauche d'un bit en utilisant l'opérateur de décalage binaire: <<. Dans la place libre qui a été créé sur le droit de l'ensemble de bits, un 0 est inséré. En mathématiques cette opération correspond à une multiplication par 2. Ensuite, nous utilisons la fonction retard (50) pour attendre 50 millisecondes avant que nous décalons un autre bit vers la gauche.

Dans la deuxième boucle, nous faisons le contraire de la première boucle: chaque itération nous décalons le contenu de LEDS de 1 bit vers la droite. Cela correspond à une division par 2. Sur la carte, cela se traduit pour les LEDs éclairant de droite à gauche (de LD7 à LD0).

Parce que les deux boucles sont répétées pour un après l'autre, il semble que les LED se déplacent d'un direction à l'autre: comme un vrai Knight Rider comme montré dans le film.