NFC et afficheur LCD pour ouvrir une porte

Salut tout le monde,

Je reviens vers vous car j'ai voulu intégrer un écran LCD à mon programme en m'inspirant de ce tuto: Redirection vers Les écrans LCD

Mon projet est de pouvoir ouvrir une porte d'entrée grâce au NFC de son téléphone en passant par un module arduino uno et d'un shield NFC (NFC Shield V2.0 | Seeed Studio Wiki) et d'afficher un message de bienvenue lorsque que mon téléphone est reconnu.
Cependant c'est ce dernier point qui me fait défaut :frowning:

J'ai donc dû faire une erreur car mon branchement avec 4 broches de données à l'air correct.

L'erreur doit venir de mon programme:

#include <LiquidCrystal.h>
#include <PN532.h>
#include <SPI.h>

/*Chip select pin can be connected to D10 or D9 which is hareware optional*/
/*if you the version of NFC Shield from SeeedStudio is v2.0.*/
#define PN532_CS 10

PN532 nfc(PN532_CS);
#define  NFC_DEMO_DEBUG 1


void setup(void) 
  {
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

    lcd.begin(16, 2);
    lcd.clear();
    
    
    #ifdef NFC_DEMO_DEBUG
      Serial.begin(9600);
      Serial.println("Hello!");
      
    #endif
      nfc.begin();

    uint32_t versiondata = nfc.getFirmwareVersion();
    
    if (! versiondata) 
      {
        #ifdef NFC_DEMO_DEBUG
          Serial.print("Didn't find PN53x board");
          
        #endif
          while (1); // halt
       }
       
    #ifdef NFC_DEMO_DEBUG
      // Got ok data, print it out!
      Serial.print("Found chip PN5"); 
      Serial.println((versiondata>>24) & 0xFF, HEX);
      Serial.print("Firmware ver. "); 
      Serial.print((versiondata>>16) & 0xFF, DEC);
      Serial.print('.'); 
      Serial.println((versiondata>>8) & 0xFF, DEC);
      Serial.print("Supports "); 
      Serial.println(versiondata & 0xFF, HEX);
      
    #endif
  // configure board to read RFID tags and cards
      nfc.SAMConfig();
  }
  

void loop(void)
  {
    uint32_t id;
    // look for MiFare type cards
    id = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A);

    switch(id)           // Réalisation d'un switch pour gérer les différentes conditions
      {
        case 363787789:            // Condition à remplir si l'ID détecté est 363787789
        
      {  Serial.println();
        Serial.println("Acces autorise!");    // Envoi au moniteur
        LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
        lcd.print("Bienvenue Thibaud!");
        delay(3000);
      }
        break;
        
        case 0:           // Condition à remplir si le Shield ne détecte aucun Tag
     {   Serial.println();
        Serial.println("Presentez Pass!");
        LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
        lcd.print("Bonjour pesentez NFC!");
        delay(1000);
     }
        break;

        default:          // condition à remplir si aucune des conditions précédentes ne sont bonnes
        
       { Serial.println();   // soit quand l'ID présentée au Shield est différente de 363787789
        Serial.println("Acces refuse!");
        LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
        lcd.print("Je ne vous connais pas!");
        delay(3000);
       }
       
      }  
      
      
     delay(500);
  }

j'espère que vous pourrez m'aider
Merci d'avance ;D

bonjour,
pourquoi mettre plusieurs fois dans ton code

       LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

au lieu de mettre

 lcd.setCursor(0, 1);
        lcd.print("Bonjour pesentez NFC!");

déjà, en testant avec le hello world de la lib, est ce que ca fonctionne?

Merci de ta réponse alors j'ai déjà essayé avec hello world mais j'ai d'autres shield sur mon arduino alors je me demande si ils ne font pas une sorte d'interférence car je n'ai pas réussi.

Le problème c'est que je ne m'y connais pas beaucoup et la seule solution de compiler mon code correctement était de rappeler à chaque fois Liquidcristal etc..

en utilisant ton code je me retrouve avec ce message d'erreur:

Code_Arduino_Fonctionnel_avec_LCD_2.ino.ino: In function 'void loop()':
Code_Arduino_Fonctionnel_avec_LCD_2.ino:68: error: 'lcd' was not declared in this scope
Code_Arduino_Fonctionnel_avec_LCD_2.ino:77: error: 'lcd' was not declared in this scope
Code_Arduino_Fonctionnel_avec_LCD_2.ino:87: error: 'lcd' was not declared in this scope
'lcd' was not declared in this scope

Si tu peux encore m'aider ça m'aiderais beaucoup

pourquoi ne pas prendre les exemples fournis pour comprendre le fonctionnement?

    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

se met avant le void setup et non pas dedans.

après tu dis avoir plusieurs shields, ok, mais lesquels?

Bon le code est compilé et demain je regarde si ça fonctionne :wink:

Alors j'ai 2 shields:

-1 relais http://www.seeedstudio.com/wiki/Relay_Shield_V2.0
-1 capteur NFC NFC Shield V2.0 | Seeed Studio Wiki

Voilà voilà je vous tiens au courant mais je te tiens quand même à te remercier :slight_smile:

Bonne soirée

déjà, je peux dire que ca marchera pas.
si tu avais lu la doc du shield relais, tu aurais vu les pins utilisées sur la doc
arduino digital pins 4-7 used for relays 4-3-2-1

et l'écran

 LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

cherches l'erreur :wink:

pour l'autre digital 10-9

Désolé je n'avais pas regardé car c'est un travail en duo et le relais est la partie de mon camarade.
Mais ça confirme le fait qu'il n'a rien fait...

Je vais essayer de trouver au plus vite cette erreur car je suis limite niveau temps

Bonne soirée :wink:

Mais ça confirme le fait qu'il n'a rien fait...

ca confirme que vous ne communiquez pas

il suffit de changer de pin pour l'écran ou de trouver un adaptateur I2C pour l'écran :slight_smile: + - A4 A5 et hop

J'ai une autre question pour le LiquidCrystal : J'avais lu que

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); c'était pour 4 broches de données. Mais si je fais

LiquidCrystal lcd(11,10,9,8,7,6,5,4,3,2); c'est pour 8 broches.

Alors tu me dis que mon montage nécessite 8 broches?

Je vais changer mon montage et changer ce LiquidCrystal.

Mais je dois brancher sur quels pins mon LCD?

Merci :wink: (je fais tout ça cette aprem)

Bonsoir,

Je n'ai finalement pas réussi malgré plusieurs tentatives.

Merci de votre aide :wink:

J'ai un projet exactement similaire, je n'affiche juste pas sur le LCD mais j'en utilise un.
Au passage tu y arrive avec un téléphone ou tu le fait avec un tag ?
Sinon infobarquee a tout dit je crois bien.

Tu l'utilise comment?

Je sais pas où tu en ai dans tes recherches mais le nfc de ton phone n'est qu'un récepteur et pas un émetteur alors c'est impossible de l'utiliser comme un Tag nfc sauf si tu es un crack en programmation et que tu sais modifié les codes de ton téléphone :wink: