La boite de nuit

Matériel :

  • carte Arduino Uno

  • shield Grove

  • 2 boutons-poussoir Grove, voire 4 si l’intégralité est traitée

  • afficheur LCD Grove

  • relais Grove (en option)

Présentation

Pour des raisons de sécurité, la boîte de nuit« The Sin» ne peut recevoir plus de 250 personnes simultanément. La société au sein de laquelle vous travaillez a été mandatée pour réaliser un système de limitation des entrées.

Cahier des charges fonctionnel

Votre équipe de travail a mis au point un portique d'entrée/ sortie, et c'est vous qui êtes prévu pour en assurer la programmation. Le cahier des charges fonctionnel initial est le suivant :

  • une personne qui est autorisée à entrer reçoit une carte RFID (simulée par un BP). Lorsqu'elle entre, un système ouvre un tourniquet (activation d'un relais pendant 2 s) et affiche le

    nombre de personnes présents dans le bâtiment (incrémentation d'une variable) ;

  • une personne qui sort décrémente le comptage ;

  • lorsque 250 danseurs sont présents, le système n'autorise pas d'entrée ... il faut attendre qu'un client aille fumer (c'est pas bien!) ou quitte l'établissement pour pouvoir accueillir une autre personne ...

  • le système distingue les badges portés par des filles de ceux portés par des garçons ; cela permet de motiver les danseurs à payer une entrée.

  • bien entendu, comme dans la majorité des discothèques, l'entrée est gratuite pour les filles.

Programmation

Le programme pour la gestion des entrées (filles et garçons) ci-dessous a été établi avec les étapes suivantes (avec 1 seul bouton poussoir):

  • réaliser le système de comptage (sans décomptage) ;

  • ajouter le système d'affichage ;

  • ajouter la gestion des limites ;

Modification

Modifier le programme pour faire le décompte des personnes sortant de la boite en t'inspirant de l'exemple pour le comptage.

#include <Wire.h>
#include <SeeedOLED.h>
//
int compteur;
//
void setup() {
// Déclaration boutons poussoirs et valeurs par défaut des variables
// Bouton poussoir sur le pin 7
pinMode(7,INPUT);
compteur = 0;
// Initialisation de l'ecran OLED Display
Wire.begin();
SeeedOled.init();  //initialze SEEED OLED display
SeeedOled.clearDisplay();           //clear the screen and set start position to top left corner
SeeedOled.setNormalDisplay();       //Set display to Normal mode
SeeedOled.setPageMode();            //Set addressing mode to Page Mode
// Déclaration des lignes de textes et leurs positions
SeeedOled.setTextXY(0, 0);          //Set the cursor to 0th Page, 0th Column
SeeedOled.putString("Bienvenue au Sin"); //Print the String
SeeedOled.setTextXY(2, 0);          //Set the cursor to 3th Page, 0th Column
SeeedOled.putString("Nbr de personnes");
SeeedOled.setTextXY(3, 0);          //Set the cursor to 3th Page, 0th Column
SeeedOled.putString("dans la boite:");           //Print number
SeeedOled.setTextXY(4, 108);          //Set the cursor to 4th Page, 0th Column
SeeedOled.putNumber(compteur);           //Print number    
SeeedOled.setTextXY(6, 0);          //Set the cursor to 0th Page, 0th Column
SeeedOled.putString("Bonne soiree"); 
SeeedOled.setTextXY(7, 0);          //Set the cursor to 0th Page, 0th Column
SeeedOled.putString("Amusez-vous"); //Print the String
//
//
}

void loop() {
  if ( digitalRead(7)== HIGH){
    if (compteur<250) {
        compteur = compteur +1;  // Incrémentation du compteur de personnes
        // commande de debuggage
        //Serial.begin(9600);                 // Initialisation du port Serie
        //Serial.println(compteur);
        //
        SeeedOled.setTextXY(4, 108);         //Set the cursor to 0th Page, 0th Column
        SeeedOled.putNumber(compteur);    //recupere la valeur du compteur
        delay(200);      // Tempo pour une incrémentation moins rapide
    }
    else 
      if (compteur=250) {
        SeeedOled.setTextXY(2, 0);          //Set the cursor to 0th Page, 0th Column
        SeeedOled.putString("Capacite Max de ");
        SeeedOled.setTextXY(3, 0);          //Set the cursor to 0th Page, 0th Column
        SeeedOled.putString("250 personnes ");
        SeeedOled.setTextXY(4, 0);          //Set the cursor to 0th Page, 0th Column
        SeeedOled.putString("atteinte!!      "); //Print the String 
      }
  }
}

Le programme de chaque étape sera enregistré sous un nouveau nom..

Faire valider le programme par le professeur

Modification pour aller plus loin

Tu peux rajouter deux boutons poussoir pour faire le comptage des filles et celui des garcons et modifier le programme

Si l'étape précédente t'as paru trop difficile passe à l'actvité suivante. Dans cette partie, le programme devient complexe car il faut déboubler les compteurs pour différencier les filles des garçons mais garder le nombre maximal à 250.

Le programme de chaque étape sera enregistré sous un nouveau nom..

Faire valider le programme par le professeur

Last updated