Cours:ArduinoChenillard : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
m
Ligne 9 : Ligne 9 :
 
=Ex 1: Gestion des leds=
 
=Ex 1: Gestion des leds=
  
Nous avons à disposition 8 leds, avec 2 états différents pour chacune. Nous utiliserons donc une variable de type [http://arduino.cc/en/Reference/Char char], ainsi chaque bit correspondra à l'état d'une led.
+
Nous avons à disposition 8 leds, avec 2 états différents pour chacune. Nous utiliserons donc une variable de type [http://arduino.cc/en/Reference/UnsignedChar unsigned char], ainsi chaque bit correspondra à l'état d'une led.
 
Par exemple si val=B11001111, le tableau suivant résume l'état des leds :
 
Par exemple si val=B11001111, le tableau suivant résume l'état des leds :
  
Ligne 21 : Ligne 21 :
 
|}
 
|}
  
Vous allez devoir écrire une fonction, dont le prototype est donné ci après, qui prendra en paramètre une valeur de type char, et allumera en conséquence les leds.
+
Vous allez devoir écrire une fonction, dont le prototype est donné ci après, qui prendra en paramètre une valeur de type unsigned char, et allumera en conséquence les leds.
  
 
<source lang=c>
 
<source lang=c>
void allumeLeds(char val);
+
void allumeLeds(unsigned char val);
 
</source>
 
</source>
  
Ligne 30 : Ligne 30 :
  
 
<source lang=c>
 
<source lang=c>
char patteLeds[8] = {13, 12, 11, ... }      // se référer à la page ShieldInfo
+
unsigned char patteLeds[8] = {13, 12, 11, ... }      // se référer à la page ShieldInfo
  
void allumeLeds(char val)
+
void allumeLeds(unsigned char val)
 
{
 
{
 
   char i;
 
   char i;
   char etat;
+
   unsigned char etat;
  
 
   for (i=0;i<8;i++)                        // il y a 8 leds
 
   for (i=0;i<8;i++)                        // il y a 8 leds

Version du 13 septembre 2013 à 11:18

L'objectif de ce Tp est de commander les différentes Leds de notre carte ShieldInfo, dont vous pouvez trouver le détail sur ce lien.

Il ne faut pas perdre de vue les points suivants :


Ex 1: Gestion des leds

Nous avons à disposition 8 leds, avec 2 états différents pour chacune. Nous utiliserons donc une variable de type unsigned char, ainsi chaque bit correspondra à l'état d'une led. Par exemple si val=B11001111, le tableau suivant résume l'état des leds :

val 1 1 0 0 1 1 1 1
etat led Leda.png Leda.png Lede.png Lede.png Leda.png Leda.png Leda.png Leda.png

Vous allez devoir écrire une fonction, dont le prototype est donné ci après, qui prendra en paramètre une valeur de type unsigned char, et allumera en conséquence les leds.

void allumeLeds(unsigned char val);

Pour ce faire, nous utiliserons la structure de programme suivante, que vous devez compléter :

unsigned char patteLeds[8] = {13, 12, 11, ... }      // se référer à la page ShieldInfo

void allumeLeds(unsigned char val)
{
  char i;
  unsigned char etat;

  for (i=0;i<8;i++)                         // il y a 8 leds
  {
     etat = ?????                          // cette valeur dépend de val, mais aussi de i, cf plus bas
     digitalWrite( ??? , etat);            // modification de la sortie
     ....                                  // éventuellement quelques actions supplémentaires
  }
}

Toute la difficulté réside dans la valeur de etat. Le tableau suivant va vous aider à trouver une méthode :

val val>>1 val>>2 val>>3 val>>4 val>>5 val>>6 val>>7
11001111 01100111 00110011 00011001 00001100 00000110 00000011 00000001


Vous pourrez utiliser le programme suivant pour tester le bon fonctionnement de votre fonction :

char patteLeds[8] = {13, 12, 11, ... }      // se référer à la page ShieldInfo

void allumeLeds(char val)
{
  ...
}

void setup()
{
  char i;  for (i=6;i<=13;i++) pinMode(i,OUTPUT);    // Déclaration des 6 sorties}

void loop()
{
  allumeLeds(B10101010);
  delay(1000);
  allumeLeds(B01010101);
  delay(1000);
}