IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Projet Ouverture porte RFID


Sujet :

Arduino

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2021
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Projet Ouverture porte RFID
    Bonjour a tous je m'appelle Boris je suis une vieille branche mais très brancher électronique en tout genre.
    Je suis actuellement entrain de bricoler une ouverture de porte avec badge RFID.
    Je n'ai rien inventer j'ai récupérer un code déjà existant mais j'ai besoin de votre aide pour y rajouter une fonction très utile.

    Dans le code présent j'aimerais rajouter un bouton physique pour pouvoir ouvrir la porte une fois un l'intérieur sinon je reste bloquer dans mon bureau.

    Le système fonctionne avec un Relay et une gâche électronique.

    Merci par avance pour votre aide

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    #include <SPI.h>
    #include <RFID.h>
    #include <EEPROM.h>
     
    #define SS_PIN 10 //SS=SDA, 53 imposé pour Mega, puis SCK 52, MOSI 51, MISO 50
                       // Arduino Uno: RST: 9, SS (SDA): 10, MOSI: 11, MISO: 12, SCK: 13
                       // Arduino Nano: RST: D9, SS (SDA): D10, MOSI: D11, MISO: D12, SCK: D13
    #define RST_PIN 9 //le pin qu'on veut pour RST
     
    byte led_rouge = 6, led_verte = 7, bouton = 4, serrure = 8, buzz = 2;
    byte cur_badge[5]; //current badge, liste des 5 octets du badge que l'on lit
     
    RFID rfid(SS_PIN, RST_PIN); 
     
    void setup()
    { 
      Serial.begin(9600); //uniquement pour debug, arrête de faire pause pour lire mes conneries
      SPI.begin(); 
      rfid.init();
      pinMode(led_rouge,OUTPUT);
      pinMode(led_verte,OUTPUT);
      pinMode(bouton, INPUT_PULLUP);
      pinMode(serrure, OUTPUT);
      pinMode(buzz, OUTPUT);
     
      if( !digitalRead(bouton))// à l'appui du bouton au moment du démarrage, effaçage de la mémoire
      {
        for (int n=0; n<1024; n++) //lancer ces deux lignes pour effacer totalement la mémoire 
            EEPROM.write(n,0);
     
      digitalWrite(led_rouge,1);
      digitalWrite(led_verte,1);
      tone(buzz,2093,1000);
      delay(1000);
      digitalWrite(led_rouge,0);
      digitalWrite(led_verte,0);
      }
      else //bip normal d'allumage
      {
        digitalWrite(led_verte,1);
        tone(buzz,2093, 150); delay(150);
        digitalWrite(led_verte,0); delay(150);
        tone(buzz, 2093, 150); digitalWrite(led_verte,1); delay(150);
        digitalWrite(led_verte,0);
      }
    }
     
    void new_badge()
    {
      // Enregistre un nouveau badge dans la mémoire EEPROM
      int start_mem = EEPROM.read(0)*5+1; //dans la première case mémoire, on stock le nombre de badge déjà sauvegardés,
                                      //et on calcule la case mémoire à partir de laquelle enregistrer le nouveau badgenb_badge
        for(byte n= 0; n<5; n++)
        {
          EEPROM.write(start_mem+n, cur_badge[n]);
        }
        EEPROM.write(0, EEPROM.read(0)+1);
    }
     
    bool compare_badge()
    {
      //Compare le badge lu avec tous les badges enregistrés
      int nb_badge = EEPROM.read(0); //récupération du nombre de badges stockés en mémoire
      bool badgeOk = false; //0 si badge non correspondant, 1 si badge correspondant
      /*Serial.println("Badge actuel: ");
      Serial.println(cur_badge[0]);
      Serial.println(cur_badge[1]);
      Serial.println(cur_badge[2]);
      Serial.println(cur_badge[3]);
      Serial.println(cur_badge[4]);
      Serial.println("FIN BADGE ACTUEL");*/
      for(int n = 0; n<nb_badge; n++)
      {
      /*Serial.print("Badge memoire lu numero: "); Serial.println(n+1);
      Serial.println(EEPROM.read(n*5+1));
      Serial.println(EEPROM.read(n*5+2));
      Serial.println(EEPROM.read(n*5+3));
      Serial.println(EEPROM.read(n*5+4));
      Serial.println(EEPROM.read(n*5+5));
      Serial.println("FIN BADGE MEMOIRE LU");*/
        badgeOk = EEPROM.read(n*5+1)==cur_badge[0] && EEPROM.read(n*5+2)==cur_badge[1] && EEPROM.read(n*5+3)==cur_badge[2] && EEPROM.read(n*5+4)==cur_badge[3] && EEPROM.read(n*5+5)==cur_badge[4];
        if (badgeOk) return true;
      }
      return false;
    }
     
     
     
    void loop()
    {
        if (rfid.isCard()) {
            if (rfid.readCardSerial())
                {
                    for(byte n=0; n<5; n++)
                    {
                    cur_badge[n] = rfid.serNum[n]; //copie de la liste des 5 octets lus sur le badge dans la liste current badge (cur_badge))
                    } 
                    /*Serial.println(rfid.serNum[0],DEC);
                    Serial.println(rfid.serNum[1],DEC);
                    Serial.println(rfid.serNum[2],DEC);
                    Serial.println(rfid.serNum[3],DEC);
                    Serial.println(rfid.serNum[4],DEC);*/
     
             if(compare_badge()) //si la comparaison du badge actuel avec un des badges mémoire est ok, alors on ouvre
             {
              digitalWrite(led_verte,1);
              tone(buzz,523,50);
              delay(50);
              tone(buzz, 783, 50);
              delay(50);
              tone(buzz, 1046, 50);
              delay(50);
              tone(buzz, 1568, 50);
              delay(50);
              tone(buzz, 2093, 70);
              delay(250);
              digitalWrite(serrure, 1);
              delay(3000);
              digitalWrite(led_verte,0);
              digitalWrite(serrure, 0);
             }
             else
             {
              digitalWrite(led_rouge, 1);
              tone(buzz,370,50);
              delay(100);
              tone(buzz, 370, 300);
              delay(1000);
              digitalWrite(led_rouge, 0);
             }
           }
        }
     
     
        if(!digitalRead(bouton)) //lors de l'appui du bouton pour enregistrer un nouveau badge
        {
           while(!digitalRead(bouton)) {} //anti rebond sur le bouton d'enregistrement de nouveau badge
           delay(100);
     
           digitalWrite(led_rouge, 1); digitalWrite(led_verte,1); //allumage des deux leds simultanément pour signaler que c'est OOOKAAAAAYYYYY et prêt
     
           while (!rfid.isCard() && digitalRead(bouton)) {} //on attend la lecture d'un badge, ou le rappui du bouton qui va annuler, car le if suivant ne sera pas vérifié
     
           if (rfid.readCardSerial())
           {
            for(byte n=0; n<5; n++)
                {cur_badge[n] = rfid.serNum[n];} //lecture du badge que l'on passe
            if(!compare_badge()) //si le badge n'est pas déjà enregistré, on enregistre le nouveau badge
                {
                  new_badge(); 
                  digitalWrite(led_rouge, 0);
                  digitalWrite(led_verte, 1);
                  tone(buzz, 2093, 500);
                  delay(200);
                  digitalWrite(led_verte, 0);
                  delay(200);
                  digitalWrite(led_verte, 1);
                  delay(200);
                  digitalWrite(led_verte, 0);
                  delay(200);
                  digitalWrite(led_verte, 1);
                  delay(200);
                  digitalWrite(led_verte, 0);
                }
              else //si le badge que l'on veut ajouter est déjà enregistré, du con, ça clignote rouge
              {
                  digitalWrite(led_verte, 0);
                  digitalWrite(led_rouge, 1);
                  tone(buzz,370,500);
                  delay(200);
                  digitalWrite(led_rouge, 0);
                  delay(200);
                  digitalWrite(led_rouge, 1);
                  delay(200);
                  digitalWrite(led_rouge, 0);
                  delay(200);
                  digitalWrite(led_rouge, 1);
                  delay(200);
                  digitalWrite(led_rouge, 0);
              }
            }
          else 
          {
             //si on rappuie sur le bouton, retour
            digitalWrite(led_rouge,0);
            digitalWrite(led_verte,0);
            while(!digitalRead(bouton)) {} //anti redéclenchement si on reste appuyé
            delay(500);
          }
         }
        rfid.halt();
    }

  2. #2
    Membre émérite
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 010
    Points : 2 331
    Points
    2 331
    Par défaut
    Bonjour atomixpc

    Pour intégrer un bouton d'ouverture de porte, c'est la même procédure que quand un badge est validé (if(compare_badge())). Donc il faut extraire les divers pas de programmes et en faire une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    void porteOuvrir()
    {
    	digitalWrite(led_verte,1);
    	tone(buzz,523,50);
    	delay(50);
    	tone(buzz, 783, 50);
    	delay(50);
    	tone(buzz, 1046, 50);
    	delay(50);
    	tone(buzz, 1568, 50);
    	delay(50);
    	tone(buzz, 2093, 70);
    	delay(250);
    	digitalWrite(serrure, 1);
    	delay(3000);
    	digitalWrite(led_verte,0);
    	digitalWrite(serrure, 0);	
    }
    que tu places en fin de ton programme, ton test de cartes devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
             if(compare_badge()) //si la comparaison du badge actuel avec un des badges mémoire est ok, alors on ouvre
             {
    			 porteOuvrir();
             }
             else
    Tu définit un nouveau bouton, boutonPorte par ex. et tu l'initialises comme bouton.
    En fin de loop() tu ajoutes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        if(!digitalRead(boutonPorte)) //lors de l'appui du bouton pour ouvrir la porte
        {
    	    porteOuvrir();
        }
    Un dernier truc, quand tu écris dans l'EEPROM, utilises la fonction EEPROM.update à la place de EEPROM.write, les cycles d'écriture dans ces composants sont limités (100'000), ainsi, avec update le programme écrit seulement si la valeur change.

    PS: je n'ai pas testé en vrai!

    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  3. #3
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 685
    Points : 5 328
    Points
    5 328
    Par défaut
    Sinon sans toucher au code, un montage avec un interrupteur momentané ou en va et vient avec le relais (en gros un OU entre le relais et un interrupteur) peut faire le job aussi.

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2021
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci jpbbricole d'avoir pris le temps pour moi, mais cela ne semble pas fonctionné ou alors j'ai mal fait qqch.
    Pourrait tu monter le code en complet que je puisse vérifié si j'ai bien placer les nouvelles lignes au bonne endroit .

    J'ai rajouter le bouton sur le pin 3 comme voici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    byte led_rouge = 6, led_verte = 7, bouton = 4, serrure = 8, buzz = 2, boutonPorte = 3;
    byte cur_badge[5]; //current badge, liste des 5 octets du badge que l'on lit
    Pour se qui es de l'EEPROM.update je suis complètement dans les choux comme dit plus haut j'ai récupérer le code ainsi et je ne serai aucunement capable de modifier cela

    Merci aussi a Jay M pour l'autre solution qui fonctionne il suffit de relié le data et le + pour ouvrir le relay mais cela ne me convient pas j'essaie d'apprendre le langage arduino

  5. #5
    Membre émérite
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 010
    Points : 2 331
    Points
    2 331
    Par défaut
    Bonsoir atomixpc
    Citation Envoyé par atomixpc Voir le message
    Pour se qui es de l'EEPROM.update je suis complètement dans les choux comme dit plus haut j'ai récupérer le code ainsi et je ne serai aucunement capable de modifier cela
    Tu remplaces tout les EEPROM.write par EEPROM.update.

    J'ai implémenté le boutonporte je te laisse jouer au jeux des 7 différences pour voire les modifications
    Le bouton boutonporte est câblé comme le bouton., c'est à dire en PULL_UP.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    #include <SPI.h>
    #include <RFID.h>     // https://github.com/song940/RFID-RC522
    #include <EEPROM.h>
     
    #define SS_PIN 10 //SS=SDA, 53 imposé pour Mega, puis SCK 52, MOSI 51, MISO 50
                       // Arduino Uno: RST: 9, SS (SDA): 10, MOSI: 11, MISO: 12, SCK: 13
                       // Arduino Nano: RST: D9, SS (SDA): D10, MOSI: D11, MISO: D12, SCK: D13
    #define RST_PIN 9 //le pin qu'on veut pour RST
     
    //byte led_rouge = 6, led_verte = 7, bouton = 4, serrure = 8, buzz = 2;
    byte led_rouge = 6, led_verte = 7, bouton = 4, serrure = 8, buzz = 2, boutonPorte = 3;
    byte cur_badge[5]; //current badge, liste des 5 octets du badge que l'on lit
     
    RFID rfid(SS_PIN, RST_PIN); 
     
    void setup()
    { 
      Serial.begin(9600); //uniquement pour debug, arrête de faire pause pour lire mes conneries
      SPI.begin(); 
      rfid.init();
      pinMode(led_rouge,OUTPUT);
      pinMode(led_verte,OUTPUT);
      pinMode(bouton, INPUT_PULLUP);
      pinMode(boutonPorte, INPUT_PULLUP);
      pinMode(serrure, OUTPUT);
      pinMode(buzz, OUTPUT);
     
      if( !digitalRead(bouton))// à l'appui du bouton au moment du démarrage, effaçage de la mémoire
      {
        for (int n=0; n<1024; n++) //lancer ces deux lignes pour effacer totalement la mémoire 
            EEPROM.update(n,0);
     
      digitalWrite(led_rouge,1);
      digitalWrite(led_verte,1);
      tone(buzz,2093,1000);
      delay(1000);
      digitalWrite(led_rouge,0);
      digitalWrite(led_verte,0);
      }
      else //bip normal d'allumage
      {
        digitalWrite(led_verte,1);
        tone(buzz,2093, 150); delay(150);
        digitalWrite(led_verte,0); delay(150);
        tone(buzz, 2093, 150); digitalWrite(led_verte,1); delay(150);
        digitalWrite(led_verte,0);
      }
    }
     
    void new_badge()
    {
      // Enregistre un nouveau badge dans la mémoire EEPROM
      int start_mem = EEPROM.read(0)*5+1; //dans la première case mémoire, on stock le nombre de badge déjà sauvegardés,
                                      //et on calcule la case mémoire à partir de laquelle enregistrer le nouveau badgenb_badge
        for(byte n= 0; n<5; n++)
        {
          EEPROM.write(start_mem+n, cur_badge[n]);
        }
        EEPROM.write(0, EEPROM.read(0)+1);
    }
     
    bool compare_badge()
    {
      //Compare le badge lu avec tous les badges enregistrés
      int nb_badge = EEPROM.read(0); //récupération du nombre de badges stockés en mémoire
      bool badgeOk = false; //0 si badge non correspondant, 1 si badge correspondant
      /*Serial.println("Badge actuel: ");
      Serial.println(cur_badge[0]);
      Serial.println(cur_badge[1]);
      Serial.println(cur_badge[2]);
      Serial.println(cur_badge[3]);
      Serial.println(cur_badge[4]);
      Serial.println("FIN BADGE ACTUEL");*/
      for(int n = 0; n<nb_badge; n++)
      {
      /*Serial.print("Badge memoire lu numero: "); Serial.println(n+1);
      Serial.println(EEPROM.read(n*5+1));
      Serial.println(EEPROM.read(n*5+2));
      Serial.println(EEPROM.read(n*5+3));
      Serial.println(EEPROM.read(n*5+4));
      Serial.println(EEPROM.read(n*5+5));
      Serial.println("FIN BADGE MEMOIRE LU");*/
        badgeOk = EEPROM.read(n*5+1)==cur_badge[0] && EEPROM.read(n*5+2)==cur_badge[1] && EEPROM.read(n*5+3)==cur_badge[2] && EEPROM.read(n*5+4)==cur_badge[3] && EEPROM.read(n*5+5)==cur_badge[4];
        if (badgeOk) return true;
      }
      return false;
    }
     
     
     
    void loop()
    {
        if (rfid.isCard()) {
            if (rfid.readCardSerial())
                {
                    for(byte n=0; n<5; n++)
                    {
                    cur_badge[n] = rfid.serNum[n]; //copie de la liste des 5 octets lus sur le badge dans la liste current badge (cur_badge))
                    } 
                    /*Serial.println(rfid.serNum[0],DEC);
                    Serial.println(rfid.serNum[1],DEC);
                    Serial.println(rfid.serNum[2],DEC);
                    Serial.println(rfid.serNum[3],DEC);
                    Serial.println(rfid.serNum[4],DEC);*/
     
             if(compare_badge()) //si la comparaison du badge actuel avec un des badges mémoire est ok, alors on ouvre
             {
    			porteOuvrir();
             }
             else
             {
              digitalWrite(led_rouge, 1);
              tone(buzz,370,50);
              delay(100);
              tone(buzz, 370, 300);
              delay(1000);
              digitalWrite(led_rouge, 0);
             }
           }
        }
     
     
        if(!digitalRead(bouton)) //lors de l'appui du bouton pour enregistrer un nouveau badge
        {
           while(!digitalRead(bouton)) {} //anti rebond sur le bouton d'enregistrement de nouveau badge
           delay(100);
     
           digitalWrite(led_rouge, 1); digitalWrite(led_verte,1); //allumage des deux leds simultanément pour signaler que c'est OOOKAAAAAYYYYY et prêt
     
           while (!rfid.isCard() && digitalRead(bouton)) {} //on attend la lecture d'un badge, ou le rappui du bouton qui va annuler, car le if suivant ne sera pas vérifié
     
           if (rfid.readCardSerial())
           {
            for(byte n=0; n<5; n++)
                {cur_badge[n] = rfid.serNum[n];} //lecture du badge que l'on passe
            if(!compare_badge()) //si le badge n'est pas déjà enregistré, on enregistre le nouveau badge
                {
                  new_badge(); 
                  digitalWrite(led_rouge, 0);
                  digitalWrite(led_verte, 1);
                  tone(buzz, 2093, 500);
                  delay(200);
                  digitalWrite(led_verte, 0);
                  delay(200);
                  digitalWrite(led_verte, 1);
                  delay(200);
                  digitalWrite(led_verte, 0);
                  delay(200);
                  digitalWrite(led_verte, 1);
                  delay(200);
                  digitalWrite(led_verte, 0);
                }
              else //si le badge que l'on veut ajouter est déjà enregistré, du con, ça clignote rouge
              {
                  digitalWrite(led_verte, 0);
                  digitalWrite(led_rouge, 1);
                  tone(buzz,370,500);
                  delay(200);
                  digitalWrite(led_rouge, 0);
                  delay(200);
                  digitalWrite(led_rouge, 1);
                  delay(200);
                  digitalWrite(led_rouge, 0);
                  delay(200);
                  digitalWrite(led_rouge, 1);
                  delay(200);
                  digitalWrite(led_rouge, 0);
              }
            }
          else 
          {
             //si on rappuie sur le bouton, retour
            digitalWrite(led_rouge,0);
            digitalWrite(led_verte,0);
            while(!digitalRead(bouton)) {} //anti redéclenchement si on reste appuyé
            delay(500);
          }
         }
     
    	//--------------------------------- Lecture du bouton de porte
         if(!digitalRead(boutonPorte)) //lors de l'appui du bouton pour enregistrer un nouveau badge
         {
    	     while(!digitalRead(boutonPorte)) {} //anti rebond sur le bouton d'enregistrement de nouveau badge
    	     delay(100);
    		 porteOuvrir();
    	 }
     
       rfid.halt();
    }
     
    void porteOuvrir()
    {
    	digitalWrite(led_verte,1);
    	tone(buzz,523,50);
    	delay(50);
    	tone(buzz, 783, 50);
    	delay(50);
    	tone(buzz, 1046, 50);
    	delay(50);
    	tone(buzz, 1568, 50);
    	delay(50);
    	tone(buzz, 2093, 70);
    	delay(250);
    	digitalWrite(serrure, 1);
    	delay(3000);
    	digitalWrite(led_verte,0);
    	digitalWrite(serrure, 0);
    }
    La partie boutonporte est testée.

    Bonne soirée
    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  6. #6
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2021
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Je vient de tester tout fonctionne a merveille merci beaucoup a toi vraiment

  7. #7
    Membre émérite
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 010
    Points : 2 331
    Points
    2 331
    Par défaut
    Bonjour atomixpc

    Citation Envoyé par atomixpc Voir le message
    Je n'ai rien inventer j'ai récupérer un code déjà existant mais....
    C'est aussi un très bon moyen pour apprendre, j'ai beaucoup progressé, avec cette "méthode".

    Citation Envoyé par atomixpc Voir le message
    Je vient de tester tout fonctionne a merveille merci beaucoup a toi vraiment
    Super, bonne continuation.

    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Iptables Script analyse log + ouverture port
    Par mattewsevitch dans le forum Sécurité
    Réponses: 4
    Dernier message: 17/01/2007, 10h21
  2. Problème d'ouverture port
    Par dilkas dans le forum Réseau
    Réponses: 8
    Dernier message: 15/11/2006, 11h28
  3. ouverture port com
    Par finlande dans le forum C++
    Réponses: 2
    Dernier message: 06/05/2006, 22h32
  4. ouverture port série?!
    Par Malek_BAKLOUTI dans le forum Composants
    Réponses: 2
    Dernier message: 04/05/2006, 12h06
  5. ouverture port
    Par ep31 dans le forum Développement
    Réponses: 2
    Dernier message: 10/02/2006, 17h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo