Advertisement
Enikka

Eclairage_bureau_salon_main

Aug 17th, 2012
946
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.82 KB | None | 0 0
  1. #include "Lampe.h"
  2.  
  3. //définition des objets lampes(int pin, bool digital)
  4. Lampe lampeA1(1,0), lampeB1(2,0), lampeC1(3,0), lampeD1(4,0), lampeG(0,0); //définitions des objets de la classe lampe
  5. int nbrlampe=5; //5 lampes
  6. Lampe lampe_nom[] = {lampeA1, lampeB1, lampeC1, lampeD1, lampeG}; //Noms des objets organisés dans un tableau
  7. char lampe_nom_aff[]={'A', 'B', 'C', 'D', 'G'}; //Pour pouvoir utiliser le nom des lampes sans faire réf à lobjet Lampe
  8.  
  9. //Définition des boutons
  10. const int bp1=2, bp2=3, bp3=4, bp4=5, bp0=6, bpOFF=7;
  11. //          A      B      C      D      G      OFF
  12.  
  13. //Définitions des variables nécessaires
  14. const int vbp0=0, vbp1=0, vbp2=0, vbp3=0, vbp4=0, vbpOFF=0;
  15. int mbp0=0, mbp1=0, mbp2=0, mbp3=0, mbp4=0, mbpOFF=0;
  16. //Mise en tableau des variables
  17. char listebp[]= {bp1, bp2, bp3, bp4, bp0}; //Organisé dans le même ordre que les Lampes
  18. char vbp[]= {vbp1, vbp2, vbp3, vbp4, vbp0}; // idem préc
  19. char mbp[]= {mbp1, mbp2, mbp3, mbp4, mbp0}; // idem préc
  20. const int nbrbouton=5; //nombre de bouton affectés à une lumière! != nbre de bouton total (puisqu'il y a OFF)
  21.  
  22. //Variables pour raffraichir l'état des lampes dans la console si une a été modifiée
  23. bool maj=1; //initialisée à 1 pour que le système affiche une première fois l'état des lampes
  24.  
  25. //----------------------------------------------------------------------------------------
  26. void setup()
  27. {
  28.   void OFF(); //Eteindre toutes les lampes référencées dans le tableau
  29.  
  30.   //Affecter les boutons à leur pin
  31.   for (int i=0; i < nbrbouton; i++)
  32.   {
  33.     pinMode(listebp[i],INPUT);
  34.     digitalWrite(listebp[i], HIGH); //resistance de pull-up
  35.   }
  36.  
  37.   //On démarre la liaison série
  38.   Serial.begin(9600);
  39.   Serial.println("Liaison série démarée!");
  40.  
  41.   //Initalisation pour vérifier que tout marche matériellement : lampes, arduino, etc...
  42.   for (int k=0; k < nbrlampe; k++)
  43.   {
  44.     lampe_nom[k].allumer();
  45.     delay(1000);
  46.     lampe_nom[k].eteindre();
  47.   }
  48.  
  49. }
  50.  
  51. //----------------------------------------------------------------------------------------
  52. void loop()
  53. {
  54.  
  55.  
  56. //ETAPE 1 : Vérifier les boutons
  57.   for (int i=0; i<nbrlampe; i++)
  58.   {
  59.     vbp[i]= digitalRead(listebp[i]); //Lecture de l'état du BP
  60.  
  61.     if ((vbp[i] != mbp[i])&&(vbp[i] == LOW)) //si on appuie sur le BP
  62.     {
  63.       lampe_nom[i].inverser();
  64.       maj=1;
  65.     }
  66.     mbp[i]=vbp[i];
  67.   }
  68.  
  69. //ETAPE 2 : Vérifier la voie serie
  70.   int carlu = 0; //variable contenant le caractère à lire
  71.   int cardispo = 0; //variable contenant le nombre de caractère disponibles dans le buffer
  72.    
  73.   cardispo = Serial.available();
  74.  
  75.   while(cardispo > 0) //tant qu'il y a des caractères à lire
  76.   {
  77.     carlu = Serial.read(); //on lit le caractère
  78.     for (int i=0; i<nbrlampe; i++)
  79.     {
  80.     if (carlu==lampe_nom_aff[i])
  81.     {
  82.       lampe_nom[i].inverser();
  83.           maj=1;
  84.     }
  85.     }
  86.     cardispo = Serial.available(); //on relit le nombre de caractères dispo
  87.   }
  88.  
  89. // ETAPE 3 : Vérifier le bouton OFF
  90.   if ((vbpOFF != mbpOFF)&&(vbpOFF == LOW)) //si on appuie sur le BP
  91.   {
  92.     OFF(); //on éteint tout
  93.     maj=1;
  94.   }
  95.   mbpOFF=vbpOFF;
  96.  
  97. // ETAPE 4 : Afficher l'état de chaque lampe si au moins une a été modifiée
  98.   if(maj)
  99.   {
  100.     Serial.println("----------------------------------");
  101.     for (int i=0; i<nbrlampe; i++)
  102.     {
  103.       Serial.println("La lampe ");
  104.       Serial.print(lampe_nom_aff[i]);
  105.       Serial.print(" est actuellement ");
  106.       if(lampe_nom[i].afficher_etat())
  107.       {
  108.     Serial.print(" allumée.");
  109.       }
  110.       else
  111.       {
  112.         Serial.print(" éteinte.");
  113.       }
  114.     }
  115.   maj=0;
  116.   }
  117. }
  118.  
  119. //----------------------------------------------------------------------------
  120. void OFF() //Eteindre toutes les lampes référencées dans le tableau
  121. {
  122.   for(int i=0; i < nbrlampe; i++)
  123.   {
  124.     lampe_nom[i].eteindre();
  125.   }
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement