Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Lampe.h"
- //définition des objets lampes(int pin, bool digital)
- Lampe lampeA1(1,0), lampeB1(2,0), lampeC1(3,0), lampeD1(4,0), lampeG(0,0); //définitions des objets de la classe lampe
- int nbrlampe=5; //5 lampes
- Lampe lampe_nom[] = {lampeA1, lampeB1, lampeC1, lampeD1, lampeG}; //Noms des objets organisés dans un tableau
- char lampe_nom_aff[]={'A', 'B', 'C', 'D', 'G'}; //Pour pouvoir utiliser le nom des lampes sans faire réf à lobjet Lampe
- //Définition des boutons
- const int bp1=2, bp2=3, bp3=4, bp4=5, bp0=6, bpOFF=7;
- // A B C D G OFF
- //Définitions des variables nécessaires
- const int vbp0=0, vbp1=0, vbp2=0, vbp3=0, vbp4=0, vbpOFF=0;
- int mbp0=0, mbp1=0, mbp2=0, mbp3=0, mbp4=0, mbpOFF=0;
- //Mise en tableau des variables
- char listebp[]= {bp1, bp2, bp3, bp4, bp0}; //Organisé dans le même ordre que les Lampes
- char vbp[]= {vbp1, vbp2, vbp3, vbp4, vbp0}; // idem préc
- char mbp[]= {mbp1, mbp2, mbp3, mbp4, mbp0}; // idem préc
- const int nbrbouton=5; //nombre de bouton affectés à une lumière! != nbre de bouton total (puisqu'il y a OFF)
- //Variables pour raffraichir l'état des lampes dans la console si une a été modifiée
- bool maj=1; //initialisée à 1 pour que le système affiche une première fois l'état des lampes
- //----------------------------------------------------------------------------------------
- void setup()
- {
- void OFF(); //Eteindre toutes les lampes référencées dans le tableau
- //Affecter les boutons à leur pin
- for (int i=0; i < nbrbouton; i++)
- {
- pinMode(listebp[i],INPUT);
- digitalWrite(listebp[i], HIGH); //resistance de pull-up
- }
- //On démarre la liaison série
- Serial.begin(9600);
- Serial.println("Liaison série démarée!");
- //Initalisation pour vérifier que tout marche matériellement : lampes, arduino, etc...
- for (int k=0; k < nbrlampe; k++)
- {
- lampe_nom[k].allumer();
- delay(1000);
- lampe_nom[k].eteindre();
- }
- }
- //----------------------------------------------------------------------------------------
- void loop()
- {
- //ETAPE 1 : Vérifier les boutons
- for (int i=0; i<nbrlampe; i++)
- {
- vbp[i]= digitalRead(listebp[i]); //Lecture de l'état du BP
- if ((vbp[i] != mbp[i])&&(vbp[i] == LOW)) //si on appuie sur le BP
- {
- lampe_nom[i].inverser();
- maj=1;
- }
- mbp[i]=vbp[i];
- }
- //ETAPE 2 : Vérifier la voie serie
- int carlu = 0; //variable contenant le caractère à lire
- int cardispo = 0; //variable contenant le nombre de caractère disponibles dans le buffer
- cardispo = Serial.available();
- while(cardispo > 0) //tant qu'il y a des caractères à lire
- {
- carlu = Serial.read(); //on lit le caractère
- for (int i=0; i<nbrlampe; i++)
- {
- if (carlu==lampe_nom_aff[i])
- {
- lampe_nom[i].inverser();
- maj=1;
- }
- }
- cardispo = Serial.available(); //on relit le nombre de caractères dispo
- }
- // ETAPE 3 : Vérifier le bouton OFF
- if ((vbpOFF != mbpOFF)&&(vbpOFF == LOW)) //si on appuie sur le BP
- {
- OFF(); //on éteint tout
- maj=1;
- }
- mbpOFF=vbpOFF;
- // ETAPE 4 : Afficher l'état de chaque lampe si au moins une a été modifiée
- if(maj)
- {
- Serial.println("----------------------------------");
- for (int i=0; i<nbrlampe; i++)
- {
- Serial.println("La lampe ");
- Serial.print(lampe_nom_aff[i]);
- Serial.print(" est actuellement ");
- if(lampe_nom[i].afficher_etat())
- {
- Serial.print(" allumée.");
- }
- else
- {
- Serial.print(" éteinte.");
- }
- }
- maj=0;
- }
- }
- //----------------------------------------------------------------------------
- void OFF() //Eteindre toutes les lampes référencées dans le tableau
- {
- for(int i=0; i < nbrlampe; i++)
- {
- lampe_nom[i].eteindre();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement