Contrôle de la position de la casquette

Objectif : Piloter l'ouverture et la fermeture de la casquette avec un seul bouton poussoir.

Nous allons utiliser un bouton poussoir et deux capteurs fin de course :

  • BP1 : permet de sortir ou de rentrer la casquette suivant qu'elle est respectivement rentrée ou sortie ;

  • FC1 : détecteur fin de course actionné lorsque la casquette est sortie ;

  • FC2 : détecteur fin de course actionné lorsque la casquette est rentrée.

Réaliser le câblage de la photo suivante :

Remarques :

  • La broche « OUT » du bouton poussoir reliée à une borne JAUNE de la carte.

  • La broche « VCC » du bouton poussoir reliée à une borne ROUGE de la carte.

  • La broche « GND » du bouton poussoir reliée à une borne NOIRE de la carte.

Faire vérifier votre câblage au professeur avant de mettre les piles et de relier la carte au PC. [pdf]

Ouvrir le programme « Arduino »

Aller dans le menu « Outils - Type de carte » et choisir « Arduino/Genuino Mega or Mega2560 ».

Raccorder votre carte à votre ordinateur avec le câble USB fourni.

 

Aller dans le menu « Outils - Port » et choisir le port USB où votre carte est reliée.

Saisir le programme suivant et remplacer les « XXX » pour obtenir le fonctionnement souhaité.

1
/**
2
 S'il y a un appui sur le bouton poussoir
3
 la casquette s'ouvre ou se ferme jusqu'à 
4
 la butée correpondante.
5
 */
6
// déclaration de la bibliothèque de fonction pour la carte Megapi 
7
#include "MeMegaPi.h"
8
9
// déclaration d'une fonction moteur sur le port 1B
10
MeMegaPiDCMotor MoteurCasquette(PORT1B); 
11
12
// définition des constantes //
13
uint8_t motorSpeed = 100; // vitesse réglable de 0 à 255
14
const int capteur1 = A6;  // BP connecté sur la broche A6
15
const int capteur2 = A7;  // capteur fin de course d'ouverture FC1 connecté sur la broche A7
16
const int capteur3 = A8;  // capteur fin de course de fermeture FC2 connecté sur la broche A8
17
18
// définition des variables //
19
int BP;    // BP de déclenchement en mode manuel, =0 si appuyé //
20
int FC1;   // capteur fin de course sortie, = 0 si appuyé //
21
int FC2;  // capteur fin de course de rentrée, = 0 si appuyé //
22
23
void setup()
24
{
25
// définition des entrées et sorties //
26
   pinMode(capteur1,INPUT_PULLUP); // broches en entrée avec une résistance de tirage à +5V
27
   pinMode(capteur2,INPUT_PULLUP); // broches en entrée avec une résistance de tirage à +5V
28
   pinMode(capteur3,INPUT_PULLUP); // broches en entrée avec une résistance de tirage à +5V
29
}
30
31
void loop()
32
{
33
  lectureCapteurs();    // lecture des entrées 
34
  if(BP == LOW && FC2 == LOW)   // demande de sortie de la casquette si elle est rentrée //
35
    {
36
      while(FC1!=LOW)        // tant qu'on n'est pas en butée de sortie
37
      {
38
        MoteurCasquette.run(motorSpeed); // sortie //
39
        lectureCapteurs();
40
      }
41
    MoteurCasquette.stop();   // arret//
42
    }
43
  else MoteurCasquette.stop();   // sinon arret//
44
 
45
  if(XXXXXXXXXXXXXXXXXXXXXX) // demande de rentrée de la casquette si elle est sortie //
46
    {
47
      while(XXXXXXXX)      // tant qu'on n'est pas en butée de rentrée
48
      {
49
        MoteurCasquette.run(-motorSpeed); // rentrée //
50
        lectureCapteurs();
51
      }
52
      MoteurCasquette.stop();   // arret//
53
    }
54
  else MoteurCasquette.stop();   // sinon arret// 
55
 }
56
57
// Définitions des fonctions //
58
59
void lectureCapteurs()
60
{
61
  BP =digitalRead(capteur1);
62
  FC1 =digitalRead(capteur2);
63
  FC2 =digitalRead(capteur3);
64
}

Téléverser votre programme dans la carte .

 

FAIRE VALIDER le fonctionnement par le professeur (ne pas oublier de mettre les 6 piles AA et de mettre l'interrupteur sur ON)