Ignorer la navigation

Exercices de révision

Quelques exercices de révision pour Arduino


Exercice N°1 : gestion des entrées et sorties numériques ou "Tout ou rien" ("digital" en anglais) + test (IF)

Soit le montage suivant :





Soit le programme Arduino suivant :

//**** debut du programme *********//

#define ledrouge  ….
#define ledverte  ….
#define boutonplus  ….
#define boutonmoins  ….


// definition des variables
int etat_boutonplus = 0;     // variable de l'etat du bouton poussoir +
int etat_boutonmoins = 0;     // variable de l'etat du bouton poussoir -
int nombre_personnes= 0;

void setup() {
  pinMode(ledrouge, ….….….….);  // ….….….….….….….….….….//    
  pinMode(ledverte, ….….……..);  // ….….….….….….….….….….….//    
  pinMode(boutonplus, ….….……..); // ….….….….….….….….….….…. //    
  pinMode(boutonmoins, ….….….….); // ….….….….….….….….….….….….//    
}

void loop(){
 
  etat_boutonplus = ….….….….….….….….….….….;  // lecture du bouton poussoir + //
  etat_boutonmoins = ….….….….….….….….….….;  // lecture du bouton poussoir - //

  if (etat_boutonplus == HIGH)  // test si le bouton est appuye //
    {     
     nombre_personnes = nombre_personnes + 1;
    }

  if (etat_boutonmoins == HIGH)  // test si le bouton est appuyé //
    {     
      nombre_personnes = nombre_personnes - 1;
      if ( nombre_personnes < 0)
      {
         nombre_personnes = 0;
      }
    }
 
  if (nombre_personnes < 15)
  {
    digitalWrite(ledverte, HIGH);  // allumage de la led verte //
  }
  else digitalWrite(ledverte, LOW);  // extinction de la led verte //
 
 
if (nombre_personnes >= 15)
  {
    digitalWrite(ledrouge, HIGH);  // allumage de la led rouge //
  }
  else digitalWrite(ledrouge, LOW);  // extinction de la led verte //

} // fin de la boucle LOOP //

//**** fin du programme *********//



1. Sur quelles broches (PIN) de l'Arduino sont reliées :

  • la led verte
  • la led rouge  
  • le bouton poussoir +  
  • le bouton poussoir -   

2. Les led doivent-elles être reliées sur des broches configurées en entrées ou en sortie (justifier votre réponse)?
3. Les boutons poussoirs doivent-elles être reliées sur des broches configurées en entrées ou en sortie (justifier votre réponse)?
4. Complétez le programme incomplet proposé.
5. Expliquez en détail ce que va faire le programme
6. Faire l'algorigramme de ce programme.
7. En fait, quand on fait l'essai, on trouve un fonctionnement bizarre. Quand on appuie sur un bouton poussoir, même le plus brièvement possible, le nombre de personnes augmente non pas de 1 à chaque fois mais de 15, 20 ou plus. Avez-vous une idée du problème ?







Exercice N°2 : création d'une fonction

Soit le programme Arduino suivant :

#define ledrouge 11

// definition des variables
float note1 = 0;     
float note2 = 0;     
float note3 = 0;
float moyenne = 0;

void setup() {
  pinMode(ledrouge, OUTPUT);  // definition de la broche de la led en sortie//    
}


void loop()

{
 
  note1= 12;
  note2 = 9,5;
  note3 = 14;
 
  moyenne = calcul_moyenne (note1, note2, note3);   // appel de la fonction pour le calcul de la moyenne//

  if (moyenne <10)
  {
        digitalWrite(ledrouge, HIGH);  // ……………………. //
  }  
  else
  {
      digitalWrite(ledrouge, LOW);  // ………………………………. //

  }
}


Vous allez écrire la fonction "calcul_moyenne". Cahier des charges de cette fonction :

  • 3 paramètres seront transmis (voir l'utilisation de cette fonction dans la boucle loop du programme proposé)
  • 4 variables locales seront présentes dans la fonction (calcul_moy, noteN1, noteN2 et noteN3)


1. Cette fonction doit-elle retourner une valeur ? Si oui de quelle type sera cette valeur (int, byte, float, …..) et dans quelle variable va-t-elle se trouver (après l'appel de la fonction au niveau de la boucle Loop)?
2. Écrire la fonction "calcul_moyenne".
3. Où celle-ci doit être placée dans le programme Arduino ?
4. Décrire ce que va faire le programme complet.





Exercice N°3 : entrées analogiques et création d'une fonction

Soit le montage suivant :





Soit le programme Arduino suivant :

//**** début du programme *********//

// adressage des potentiomètres (PIN) //
int SLIDER1_PIN = ……;
int SLIDER2_PIN = ……;

int potentiom1 = 0; //définition de la variable entière (integer) potentiom1//
int potentiom2 = 0; //définition de la variable entière (integer) potentiom2//
int somme_potard = 0;

void setup()
{
  ……………………………………;   // …………………………………… //
  ……………………………………;    // ……………………………………//
  Serial.begin(9600);   // mise en route de la liaison série //
}

void loop()
{
  potentiom1 = …………………………………………………; // lecture potentiomètre 1 //
  potentiom2 = …………………………………………………; // lecture potentiomètre 2 //

  somme_potard = deux_potards(potentiom1,potentiom2);

  Serial.print("potentiometres: "); // affichage liaison série //
  Serial.print("somme des potentiomètres: ");
  Serial.println(somme_potard);
  delay(300); // brève attente//
}
//**** fin du programme *********//



1. Sur quelles broches (PIN) de l'Arduino sont reliés les potentiomètres.
2. S'agit-il d'entrées analogiques ou de sorties analogiques (justifiez votre réponse) ?
3. Complétez le programme incomplet proposé ci-dessus.



Vous allez maintenant écrire la fonction "deux_potards". Cahier des charges de cette fonction :

  • 2 paramètres seront transmis (voir l'utilisation de cette fonction dans la boucle loop du programme proposé)
  • 3 variables locales seront présentes dans la fonction (calcul, pot1 et pot2)


4. Cette fonction doit-elle retourner une valeur ? Si oui de quelle type sera cette valeur (int, byte, float, …..) et dans quelle variable va-t-elle se trouver (après l'appel de la fonction au niveau de la boucle Loop)?
5. Écrire la fonction "deux_potards".
6. Décrire en détail ce que va faire le programme complet.

 



Exercice N°4 : boucle FOR et boucle WHILE

Soit le montage suivant (schéma de câblage):




Cahier des charges :

  • quand on appuie sur le bouton poussoir, la led rouge va clignoter 5 fois à la fréquence de 2 Hertz. Une fois le clignotement fini, la led jaune s'allume pendant 1 seconde.


1. Faire le programme Arduino en tenant compte du schéma de câblage et du cahier des charges en utilisant une boucle FOR

2. Faire le programme Arduino en tenant compte du schéma de câblage et du cahier des charges en utilisant une boucle WHILE