Afficher un texte sur un ecran lcd avec un lecteur de badge

Bonjour,

Je réalise un petit projet rfid qui consisterai à afficher sur l'écran "badge detecté" des qu'un badge est passé devant le lecteur rfid sparkfun.

J'utilise le matériel suivant :

La carte arduino Uno :

Le lecteur rfid sparkfun : SparkFun RFID Evaluation Shield - 13.56MHz - DEV-10406 - SparkFun Electronics

Seedstudio base shield v2 : http://www.seeedstudio.com/depot/base-shield-v13-p-1378.html?cPath=132_134

L'ecran Grove - LCD RGB Backlight : http://www.seeedstudio.com/depot/Grove-LCD-RGB-Backlight-p-1643.html

Je précise que je débute dans la programmation :wink:
Au début sur l'écran est affiché "Bienvenue" et ensuite il est censé afficher "badge detecté" mais l'écran persiste à afficher "Bienvenue"
Je précise que j'ai modifié le programme trouvé sur le site du constructeur du lecteur de badge

Le programme du constructeur : RFID_Evaluation_Shield/RFID_Eval_13_56MHz.ino at master · sparkfun/RFID_Evaluation_Shield · GitHub

#include <SoftwareSerial.h>
#include "rgb_lcd.h"
#include <Wire.h>

SoftwareSerial rfid(7, 8);
SoftwareSerial xbee(10, 9);

rgb_lcd lcd;

const int colorR = 255;
const int colorG = 255;
const int colorB = 255;

//Prototypes
void check_for_notag(void);
void halt(void);
void parse(void);
void print_serial(void);
void read_serial(void);
void seek(void);
void set_flag(void);

//Global var
int flag = 0;
int Str1[11];

//INIT
void setup()
{
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("Bienvenue");
// Serial.begin(9600);
// Serial.println("Start");
  // set the data rate for the SoftwareSerial ports
  xbee.begin(9600);
  rfid.begin(19200);
  delay(10);
  halt();

}

//MAIN
void loop()
{
  read_serial();
}

void check_for_notag()
{
  seek();
  delay(10);
  parse();
  set_flag();

  if(flag = 1){
    seek();
    delay(10);
    parse();
  }
}

void halt()
{
//Halt tag
  rfid.write((uint8_t)255);
  rfid.write((uint8_t)0);
  rfid.write((uint8_t)1);
  rfid.write((uint8_t)147);
  rfid.write((uint8_t)148);
}

void parse()
{
  while(rfid.available()){
    if(rfid.read() == 255){
      for(int i=1;i<11;i++){
        Str1[i]= rfid.read();
      }
    }
  }
}

void print_serial()
{
  if(flag == 1){
    //print to serial port
    lcd.setCursor(0, 0);
    lcd.print("badge détecté");

    //print to XBee module
    xbee.print(Str1[8], HEX);
    xbee.print(Str1[7], HEX);
    xbee.print(Str1[6], HEX);
    xbee.print(Str1[5], HEX);
    xbee.println();
    delay(100);
    //check_for_notag();
  }
}

void read_serial()
{
  seek();
  delay(10);
  parse();
  set_flag();
  print_serial();
  delay(100);
}

void seek()
{
  //search for RFID tag
  rfid.write((uint8_t)255);
  rfid.write((uint8_t)0);
  rfid.write((uint8_t)1);
  rfid.write((uint8_t)130);
  rfid.write((uint8_t)131);
  delay(10);
}

void set_flag()
{
  if(Str1[2] == 6){
    flag++;
  }
  if(Str1[2] == 2){
    flag = 0;
  }
}

Merci de votre lecture !

Dans ce genre de projet il est préférable d'y aller étape par étape, valider en premier la lecture du badge, puis ensuite de rajouter des messages sur écran, le xbee, etc...

  1. vérifier sur quelles broches sont montés les modules,en accord ou pas avec le code.
  2. afficher sur le serial.monitor tout ce qui arrive, brut de décofrage avant tout traitement (parse, ...).